首页 文章

unity3d以有限的角度向后旋转

提问于
浏览
1

我想在一段时间内在轴上旋转特定角度的物体 . 一旦达到极限(比如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 回答

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

相关问题