unity,沿轴旋转一个物体并沿同一方向回到起点
Unity, rotate an object in axis and back to starting point in the same direction
我想在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?
This works great but it spins back on opposite direction.
RotateTowards
将采用最短路径到达目标 - 无论哪个方向。
How do you force it to keep spinning on original direction to Quaternion.identity?
旋转180度(或一半)时反转:
var dir = transform.eulerAngles.y < 180f ? 1f : -1f;
Quaternion.RotateTowards(rotation, Quaternion.identity, Time.deltaTime * speed * dir);
我想在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?
This works great but it spins back on opposite direction.
RotateTowards
将采用最短路径到达目标 - 无论哪个方向。
How do you force it to keep spinning on original direction to Quaternion.identity?
旋转180度(或一半)时反转:
var dir = transform.eulerAngles.y < 180f ? 1f : -1f;
Quaternion.RotateTowards(rotation, Quaternion.identity, Time.deltaTime * speed * dir);