Unityの回転や角度についてもう1つですが、オブジェクトの向きを指定する時に便利で使えそうなものがいくつかありますので備忘録として載せておきたいと思います。
1つ目はあるゲームオブジェクトの方向を向かせるというものです。
transform.LookAt ()
を使用します。
以下にて該当のオブジェクトがobjというターゲットオブジェクトの方向へ向きを変えます。
transform.LookAt ( obj.transform.position ); // objはGameObject型
ゆっくりとあるゲームオブジェクトの向きへ向かせたい場合は、以下のように
Quaternion.RotateTowards ()
を使用します。
transform.rotation = Quaternion.RotateTowards ( transform.rotation,
Quaternion.LookRotation( obj.transform.position - transform.position ),
120.0f * Time.deltaTime );
この例ではobjが向かせようとするターゲットのオブジェクトになります。
obj.transform.position - transform.position
でターゲットの方向をVector3型で算出しています。
続いて、
Quaternion.LookRotation( obj.transform.position - transform.position )
で、Vector3型を Quaternion形に変更しています。
Quaternion.RotateTowards ()
では、第1引数の向きから第2引数の向きへ第3引数の速度でゆっくりと向きを変えるということになります。
結果として、
transform.rotation = Quaternion.RotateTowards ( transform.rotation,
Quaternion.LookRotation( obj.transform.position - transform.position ),
60.0f * Time.deltaTime );
では、現在の向きからターゲットの向きへ1秒間に60度の速度で向きを変えていくということになります。
以上が、Unityでゲームオブジェクトの向きを変えさせる時に使えそうな便利な方法の例になります。