WisdomSoft - for your serial experiences.

指定位置の方向に向く

オブジェクトを指定のワールド座標に向かせるには LookAt() メソッドを使います。対象のオブジェクトを追跡するようにカメラを回転させるなど、オブジェクトを指定の方向に向かせることができます。

位置から向きを設定する

例えば、カメラを常に指定のオブジェクトに向けたり、キャラクターを対象のオブジェクトに向くように回転させたい場合、角度で回転させるのではなく、対象オブジェクトの位置から回転させる必要があります。この回転量は 2 つのベクトルから求めることができますが、自分で計算する必要はなく LookAt() メソッドを呼び出すだけです。

Transform クラス LookAt() メソッド
 public void LookAt(Transform target);
public void LookAt(Vector3 worldPosition);

このメソッドは、与えられた Transform 型の target パラメータ、または Vector3 型の worldPosition パラメータが表す位置の方向に、自身の向きを変えます。

コード1
using System;
using UnityEngine;

public class Sample : MonoBehaviour
{
    [SerializeField] private GameObject target = null;
    
    void Update ()
    {
        var y = (float)(Math.Sin(Time.time) * 3);
        target.transform.position = new Vector3(0, y , 0);
        transform.LookAt(target.transform);
    }
}
実行結果
コード1 実行結果

コード1は、常に target フィールドに設定されているゲームオブジェクトを上下に移動させながら、同時に自分自身の向きを対象のゲームオブジェクトの方向に変えるスクリプトです。例えば、このスクリプトをカメラに設定し、target フィールドに映したいオブジェクトを設定することで、実行結果のように上下移動するオブジェクトを追跡するカメラとなります。