我想在一段时间内在轴上旋转特定角度的物体。 一旦达到极限(让我们说5度),就在反方向上重复一遍。
我可以使用Quaternion.Euler()向5度旋转,但如何检查它是否达到5度并开始向-5度方向反转?
所以在Update()中我这样做:
int dir = 1; // somewhere global
Quaternion r = Quaternion.Euler(0, Timer.deltaTime * dir, 0);
transform.rotation *= r;
// I want to: if the "angle is >= 5f", i want to do dir *= -1 to reverse it
if (/* angle delta is >= 5f or <= -5f */)
{
dir *= -1;
}
由于
答案 0 :(得分:5)
如果您只是想来回旋转,可以使用正弦波来回移动。
public class rotator : MonoBehaviour {
public float _Angle;
public float _Period;
private float _Time;
// Update is called once per frame
void Update () {
_Time = _Time + Time.deltaTime;
float phase = Mathf.Sin(_Time / _Period);
transform.localRotation = Quaternion.Euler( new Vector3(0, phase * _Angle, 0));
}
}