対象物の方向を向く(2D)

2022年9月4日

3DプログラムではLookAtで可能ですが、2Dの場合、思うような動作になりません。下記のようにすることでtargetの方向に向きを変えることができます。

使うメソッドは、次のものになります
aからbへの回転を作成します

Quaternion.FromToRotation(a, b)

具体的には、次のように使います
Y座標(Vector3.up)をターゲットの方向(toDirection)に向かせるものになります

Quaternion.FromToRotation(Vector3.up, toDirection)

Vector3.upは、new Vector3(0, 1 , 0)です
真上のY軸を回転させて、toDirection(ベクトル)の方向に向かせる処理になります。

using UnityEngine;
public class LookAt2D : MonoBehaviour
{
    [SerializeField]
    GameObject target;
    void Update()
    {
        // 対象物へのベクトルを算出
        Vector3 toDirection = target.transform.position - transform.position;
        // 対象物へ回転する
        transform.rotation = Quaternion.FromToRotation(Vector3.up, toDirection);
    }
}

実行結果

タイアモンドオブジェクトにアタッチされているLookAt2DスクリプトのTargetフィールドに正方形を代入(アウトレット接続)します。これが追跡対象となるターゲットになります

Unity,小技

Posted by hidepon