Unity3D球体旋转并始终保持旋转方向
我有一个球体游戏对象,在球体表面的不同点上放置了5个立方体。当按下一个键时,我希望球体旋转几秒钟,然后在立方体上的第一个立方体点上缓慢停止,并始终保持相同的旋转方向。我现在面临的问题是,四元数.Slerp总是选择到下一个立方体的最短路径,这意味着有时旋转方向会改变。有什么想法吗Unity3D球体旋转并始终保持旋转方向,unity3d,Unity3d,我有一个球体游戏对象,在球体表面的不同点上放置了5个立方体。当按下一个键时,我希望球体旋转几秒钟,然后在立方体上的第一个立方体点上缓慢停止,并始终保持相同的旋转方向。我现在面临的问题是,四元数.Slerp总是选择到下一个立方体的最短路径,这意味着有时旋转方向会改变。有什么想法吗 谢谢您可以轻松地将旋转作为一个整体来处理 这样可以将角度调整为正确的值。你可以使用共终止角,这样你总是插值到一个更高的值,这样就不会发生向后旋转。在每个旋转步骤之后,您可能希望使用这种方法将角度规格化为0,360范围 示
谢谢您可以轻松地将旋转作为一个整体来处理 这样可以将角度调整为正确的值。你可以使用共终止角,这样你总是插值到一个更高的值,这样就不会发生向后旋转。在每个旋转步骤之后,您可能希望使用这种方法将角度规格化为0,360范围 示例代码:
using UnityEngine;
using System.Collections;
public class Rotation : MonoBehaviour {
public Transform firstPosition;
public Transform secondPosition;
public float rotationDuration = 3;
void Start () {
transform.rotation = firstPosition.rotation;
StartCoroutine(Rotate());
}
IEnumerator Rotate() {
var deltaTime = 0.0f;
var distance = firstPosition.rotation.eulerAngles - secondPosition.rotation.eulerAngles;
while(deltaTime < rotationDuration) {
var rotation = transform.rotation.eulerAngles;
rotation = firstPosition.rotation.eulerAngles + deltaTime/rotationDuration*distance;
transform.rotation = Quaternion.Euler(rotation);
deltaTime += Time.deltaTime;
yield return null;
}
transform.rotation = secondPosition.rotation;
}
}
你能详细说明一下吗?