[Unity 2D] ターゲットの方向に向き続けるゲームオブジェクトを作る方法。

(2024/06/09)

開発環境
  • Unityのバージョン:2023.2.20f1
  • Quaternion.AngleAxisを使う方法

    下のコードではターゲットの方向に向くとき、Z軸周りのみ回転させています。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Sample : MonoBehaviour
    {
        public Transform target;
    
        void Update()
        {
            // ターゲットまでのベクトルを求める
            Vector3 direction = target.position - transform.position;
            // 角度を求める。
            float angle = Mathf.Atan2(direction.x, direction.y);
            //オブジェクトをQuaternion.AngleAxisを使って回転させる。
            transform.rotation = Quaternion.AngleAxis(angle * Mathf.Rad2Deg, Vector3.back);
        }
    }
    

    Quaternion.FromToRotationを使う方法

    Quaternion.FromToRotationを使うとX軸、Y軸、Z軸周りで回転させることができます。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Sample : MonoBehaviour
    {
        public Transform target;
    
        void Update()
        {
            // ターゲットまでのベクトルを求める
            Vector3 direction = target.position - transform.position;
            //オブジェクトを Quaternion.FromToRotationを使って回転させる。
            transform.rotation = Quaternion.FromToRotation(Vector3.up, direction);
        }
    }