對於與歐拉角相關的Unity的某些文檔,我有點困惑。我只想知道,如果我不瞭解差異,或者樣本不符合最佳做法。文檔here 指出:將歐拉角增加到360度以上
只能使用此變量讀取並將角度設置爲絕對值。不要增加它們,因爲當角度超過360度時它會失敗。改用Transform.Rotate。
同時,代碼示例似乎使用增量可能超過360度:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public float yRotation = 5.0F;
void Update() {
yRotation += Input.GetAxis("Horizontal");
transform.eulerAngles = new Vector3(10, yRotation, 0);
}
void Example() {
print(transform.eulerAngles.x);
print(transform.eulerAngles.y);
print(transform.eulerAngles.z);
}
}
會不會增加一個變量,然後使用該變量絕對設定值仍然可以運行的風險超過360度,如果變量超過360度?
我認爲這個例子是一個特殊的例子,它可以無限增加y,因爲y是定期修改的唯一座標軸,而x和z保持爲常數。 如果所有座標軸都可能是可修改的,當您的eulers在360度左右交換時,遞增y可能會導致問題。您甚至可能進入萬向節鎖定狀態。我想這就是爲什麼使用Transform.Rotate的原因。 –