up:: Unity
基本
VectorにQuaternionを掛けると回転する。
その例として、transform.upというローカル座標の上は、transform.rotation * Vector3.up
で表せる。transform.rotationというクォータニオンにワールド座標unの上であるVector3.upを掛けると回転し、ローカル座標の上になる。
クォータニオン同士を掛けると、それぞれの角度の合計値になる。
ちなみに、Unityの座標系は一般の右手系(x,y,zが右,上,手前)ではなく、左手系(右上奥)なので、時計回りが正の向きになる。
なおUnityでは大体回転を表す値であるtransform.rotationに直接代入して回転してる。
作成
Quaternion.AngleAxis (float angle, Vector3 axis)
クォータニオンを作るメソッド。
axisで指定した軸をもとに、angle分だけ回転したクォータニオンを作ることが出来る。
よく使うaxisはこれら。
- Vector3.right(x軸を指定したい場合)
- Vector3.up(y軸を指定したい場合)
- Vector3.forward(z軸を指定したい場合)
Quaternion-AngleAxis - Unity スクリプトリファレンス
transform.rotation
オブジェクトの姿勢がQuaternionで入っている変数。
上記のQuaternion.AngleAxisと合わせ、回したい角度分のクォータニオン x transform.rotationをもう一度transform.rotationに代入すれば回る。
Transform-rotation - Unity スクリプトリファレンス
Quaternion.Euler (float x, float y, float z)
クォータニオンをオイラー角から作るメソッド。
z軸、x軸、y軸の順で回転する。
Quaternion-Euler - Unity スクリプトリファレンス
Quaternion FromToRotation (Vector3 fromDirection, Vector3 toDirection)
fromからtoへの回転クォータニオンを作るメソッド。
思った回転になるかどうかは別。
Unity - Scripting API: Quaternion.FromToRotation
Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up)
forward方向を正面とするクォータニオンを作るメソッド。
回転を作るというより、Vector3を姿勢クォータニオンに変換するメソッド。
Unity - Scripting API: Quaternion.LookRotation
変換
合成
*
演算子を使用することで、クォータニオンを合成できる。
後に回転させる方を先に書く。
transform.eularAngle
オブジェクトの姿勢がVector3で入っている変数。
.x,y,zでそれぞれ取り出せる。
ローカル座標で取り出したいなら.localEularAngle。
どちらにせよ、Vector3を代入すると回転する。
transform.Rotate(float,float,float,Space)
transform.eularAngleに対して数値を加算できるメソッド。デフォルトでローカル座標回転。
第4引数にSpace.Worldを指定するとワールド座標で回転する。
【Unity】回転の方法が一目でわかる !transform.Rotateを極めよう! | 侍エンジニアブログ
transform.LookAt(Transform target, Vector3 worldUp = Vector3.up)
指定したtransformの方向に向くメソッド。
簡単な回転ならこれで問題ない。
第二引数は上向きがどちらなのか指定する引数。
Unity - Scripting API: Transform.LookAt
【Unity】 Quaternionの使い方 - エフアンダーバー
【Unity】Quaternionでオブジェクトを回転させる方法 – XR-Hub
UnityのベクトルとQuaternionによる回転について - テラシュールブログ
Unityでオブジェクトを指定の方向に向ける - Qiita
【Unity】オブジェクトをターゲットの方向に回転させる | ねこじゃらシティ
Unityでオブジェクトを回転させる方法まとめ | tama-lab