eulerAnglesを使いたい
eulerAnglesを使用する必要があったので記録します。
リファレンスを調べてみる
・オイラー角としての角度
・x,y,zの角度は、z軸にz度、x軸にx度、y軸にy度の順に回転します。
・この変数は読み込んだり、絶対値の角度を設定する時のみ使用してください。
・角度が360度を超えた時には失敗するのでインクリメントしないようにしてください。 代わりにTransform.Rotateを使用してください。
名前通りオイラーで、Vector3型で、z→x→y の順番に回転すると理解。
スクリプトリファレンス
他サイトで使い方を調べてみよう
transform.eulerAngles = new Vector3(45, 45, 0);
回転
ふむふむ。
各XYZの値変更がどうなるのかを実験
void Update()
{
//ボタン押しながら実験したいのでAボタンを押したら、、、
if (Input.GetKeyDown(KeyCode.A))
{
transform.eulerAngles = new Vector3(45, 45, 0);
//どうなるかの確認用
Debug.Log(this.transform.eulerAngles);
}
}
現在の座標は(0,10,0)で(45,45,0)になるはずなので
矢印方向に赤丸が行く予想
Aボタンを押すとそんな感じで回転しています。
Debug.Logの結果
最初(0,10,0)で(45,45,0)にボタン押したらワープする感じ。
ボタンを押したら、押した分だけ回転させたい
⚡もしかして1にしたらいいんじゃない?作戦
transform.eulerAngles = new Vector3(1, 0, 0);
いつまで経っても、(1, 0, 0)になるので違う(-_-;)
transform.eulerAngles + = new Vector3(0, 0, 1);
+を入れればいける
⚡更新作戦
なんか移動の時に、Vectoe3を更新する書き方を見た気がする。。
Vector3 rightArrow = new Vector3(0.1f, 0f, 0f);
this.transform.eulerAngles(rightArrow);
eulerAnglesはメソッドみたいに使えないエラー(-_-;)
⚡万策尽きてGoogl先生に聞く
eulerAnglesは指定した座標に回転する。なるほどな-!
一瞬で角度変える時専用ってことか。
[Unity] transform.eulerAnglesについて
⚡でもVector3.forwardとかで実現出来るのかも
transform.eulerAngles += Vector3.forward;
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
transform.eulerAngles += Vector3.forward;
Debug.Log(this.transform.eulerAngles);
}
}
以外に出来て驚く。
eulerAnglesとlocalEulerAngles
eulerAnglesはワールド座標でlocalEulerAnglesは親からの角度。
Debug.LogではeulerAnglesもlocalEulerAnglesも同じ値を返していた。
eulerAnglesの方だけ公式に360度を超えた時には失敗するのでと書いていたので
どう失敗するのか見てみたくなり、360回連打するが失敗は見れなかった。残念。。
まとめ
・一瞬で角度変える時専用に使うべき
・押した分だけもVector3.forwardとかで可能だけどRotateを使う。
参考にさせて頂いたサイト
スクリプトリファレンス
Unity 回転周りについて
回転
[Unity] transform.eulerAnglesについて