オイラー角に関する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は、xおよびzはContantをまま、定期的に変更されている唯一の軸であるため、yが無限にインクリメント持ってしても安全である特殊なケースだと思います。 すべての軸が潜在的に変更可能な場合、yを増やすと、ユーラーが360でスワップするときに問題が発生する可能性があります。ジンバルロック状態になることさえあります。 Transform.Rotateの使用が推奨されると思います。 –