Quaternion.Lerp 不以精确度数旋转对象
Quaternion.Lerp doesn't rotate object with exact degrees
我想在用户按下向上箭头时使用 Quaternion.Lerp 将我的对象旋转 90 度。但是在每次旋转之后我都可以看到它并没有将我的对象精确旋转 90 度。它旋转大约 88 度。问题是什么?我该如何解决这个问题?
if (Input.GetKeyDown(KeyCode.UpArrow))
{
to.eulerAngles = transform.eulerAngles + new Vector3(90, 0, 0);
from.eulerAngles = transform.eulerAngles;
direction = "up";
}
if("up".Equals(direction))
transform.rotation = Quaternion.Lerp(from, to, Time.deltaTime*10);
if (transform.eulerAngles==to.eulerAngles)
{
direction = "";
}
这太奇怪了。
刚刚添加
transform.eulerAngles = transform.eulerAngles;
进入
if (transform.eulerAngles==to.eulerAngles)
{
direction = "";
}
并解决了。我觉得Unity的Transform系统不是那么灵敏,我在log上测试了一下,甚至它的旋转在log上大约是88,在inspector中是90。所以我添加这段代码就完成了。
我想在用户按下向上箭头时使用 Quaternion.Lerp 将我的对象旋转 90 度。但是在每次旋转之后我都可以看到它并没有将我的对象精确旋转 90 度。它旋转大约 88 度。问题是什么?我该如何解决这个问题?
if (Input.GetKeyDown(KeyCode.UpArrow))
{
to.eulerAngles = transform.eulerAngles + new Vector3(90, 0, 0);
from.eulerAngles = transform.eulerAngles;
direction = "up";
}
if("up".Equals(direction))
transform.rotation = Quaternion.Lerp(from, to, Time.deltaTime*10);
if (transform.eulerAngles==to.eulerAngles)
{
direction = "";
}
这太奇怪了。
刚刚添加
transform.eulerAngles = transform.eulerAngles;
进入
if (transform.eulerAngles==to.eulerAngles)
{
direction = "";
}
并解决了。我觉得Unity的Transform系统不是那么灵敏,我在log上测试了一下,甚至它的旋转在log上大约是88,在inspector中是90。所以我添加这段代码就完成了。