【发布时间】:2016-02-02 18:17:30
【问题描述】:
我想制作一个物体(比如说一个立方体),在它移动的同一轴上以稳定的速度旋转。因此,如果它从 X 到 Z 的方向改变,那么旋转将从 X 轴进入 Z 轴,然后继续在 Z 轴上旋转。
我将如何实现这一目标?这是我目前所拥有的,立方体只是在z轴上来回旋转一定度数。
public float Angle;
public float Period;
void Update()
{
Animate();
}
void Animate()
{
_time = _time + Time.deltaTime;
float phase = Mathf.Sin(_time / Period);
transform.localRotation = Quaternion.Euler(new Vector3(0f, 0f, phase * Angle));
}
【问题讨论】:
-
On the same axis it's moving on如果运动不完全在某个轴上,将会很困难。考虑速度向量v = (0,1,2)。由此产生的轮换会去哪里?你可以尝试例如归一化速度矢量(为您提供对象移动的大致方向),然后使用该矢量旋转(乘以用于控制旋转速度的常数)。 -
一般来说,不要出于任何原因使用四元数。只需使用一个简单的 RotateAround 调用。
-
@JoeBlow 叶,谢谢。刚刚测试了它,它更容易。
-
太棒了.. 下次质量检查见
标签: c# unity3d rotation quaternions