対象物(ターゲット)の方向を向く(3D)
他のオブジェクトを見つめたり、迫って行くときにその方向を向きたい場合があります
Unityでは、そのためのメソッドが用意されています。いくつかの方法があるのでみていきましょう
シーンの構成
LookAtSampleとしてプロジェクトを作成しましょう
ビデオから、プロジェクト名、シーンのゲームオブジェクト、コンポーネントを確認して、同じように構成しましょう
対象物を向くとは
対象物を向くとは、z軸がその方向を向くことを言います
LookAt
対象物のTransfromコンポーネントを引数に取ります。これをアタッチしているゲームオブジェクトは対象物のtransform.potisionの方向を向きます
オーバーロードとして引数にVector3型を取ることもできます
コード
実行結果
LookRotation
対象物の座標(transfrom.potision:Vector3型)を引数に取ります。これをアタッチしているゲームオブジェクトは対象物のtransform.potisionの方向を向きます
rotationに回転を代入しますが、クウォータニオン型(Quaternion)になります
インスペクターでの表示はVector3型になっていますが、内部ではクウォータニオン型で保持されています
回転は、回転順・向きによっては期待通りにならないことがあるため(ジンバルロック)、4元(x, y, z, w)を使って処理されます
コード
実行結果
ゆっくり対象物の方向を向く
Slerp
対象物を向くのは同じですが、その方向に徐々に向けることができます
Quaternion.Slerpメソッドを使用して、現在の回転から目標の回転に向けて少しずつ回転させることで、スムーズな回転を実現しています。また、回転速度を調整するためのrotateSpeed変数を用意しています。この変数の値を大きくすると回転速度が速くなり、小さくすると回転速度が遅くなります。適切な値を設定して、オブジェクトをスムーズに回転させるようにしてください。
ディスカッション
コメント一覧
まだ、コメントがありません