対象物に向けて方向を変える(2D)

2019年1月31日

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

次のサンプルでの
Quaternion.FromToRotation(Vector3.up, diff)
ですが、
Quaternion.FromToRotation(a, b)
aを回転させてbにする処理になります。
つまり、真上のY軸を回転させて、diff(ベクトル)の方向に向かせる処理になります。

using UnityEngine;

public class LookAt2D : MonoBehaviour
{
    [SerializeField]
    GameObject target;

    void Update()
    {
        // 対象物へのベクトルを算出
        Vector3 diff = target.transform.position - transform.position;
        // 対象物へ回転する
        transform.rotation = Quaternion.FromToRotation(Vector3.up, diff);
    }
}

2019年1月31日Unity,小技

Posted by hidepon