unity3d以有限的角度向后旋转

时间:2014-04-12 03:24:55

标签: unity3d

我想在一段时间内在轴上旋转特定角度的物体。 一旦达到极限(让我们说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;
}

由于

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));
}
}