Unity,在轴上旋转对象并返回到相同方向的起点

时间:2018-05-12 22:08:02

标签: c# unity3d rotation quaternions

我想以恒定速度在Y方向上旋转物体。当我停止时,我想以相同的方向旋转回Quaternion.identity。

public bool spin;
public float speed;

private void Update() {
    if (spin) {
        transform.Rotate (-Vector3.up, Time.deltaTime * speed, Space.World);
    } else if (transform.rotaion != Quaternion.identity) {
        transform.rotation = Quaternion.RotateTowards (transform.rotation, Quaternion.identity, Time.deltaTime * speed);
    }
}

这很有效,但它会向相反的方向旋转。你如何强迫它继续向原始方向旋转到Quaternion.identity?

1 个答案:

答案 0 :(得分:0)

  

这很有效,但它会向相反的方向旋转。

RotateTowards将采用最短路径到达目标 - 无论哪个方向。

  

你如何强迫它继续沿原始方向旋转到Quaternion.identity?

旋转180度(或中途)时的反向:

var dir = transform.eulerAngles.y < 180f ? 1f : -1f;
Quaternion.RotateTowards(rotation, Quaternion.identity, Time.deltaTime * speed * dir);