unity3d以有限的角度向后旋转

Poh*_*Poh 1 unity-game-engine

我想在一段时间内在轴上旋转特定角度的物体.一旦达到极限(比如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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

the*_*dox 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));
}
}
Run Code Online (Sandbox Code Playgroud)