「毎日Unity」の技術ブログ

開発で役立つ情報を発信する

【UnityC#】オブジェクトを特定の座標に向ける方法

オブジェクトを特定の座標に向ける方法を自分用にメモ。

[ transform.LookAtを使う方法 ]

下記のスクリプトをオブジェクトにアタッチしてスペースキーを押すと、そのオブジェクトが座標(2, 3, 1)を向きます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    private Vector3 TargetPosition;

    void Start()
    {
        TargetPosition = new Vector3(2, 3, 1);
    }

    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            transform.LookAt(TargetPosition);
        }
    }
}

[ Quaternion.LookRotationを使う方法 ]

下記のスクリプトをオブジェクトにアタッチしてスペースキーを押すと、そのオブジェクトが座標(2, 3, 1)を向きます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    private Vector3 TargetPosition;

    void Start()
    {
        TargetPosition = new Vector3(2, 3, 1);
    }

    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            transform.rotation = Quaternion.LookRotation((TargetPosition - transform.position), Vector3.Up);
        }
    }
}

[ Y座標だけを向かせたい場合 ]

下記のスクリプトをオブジェクトにアタッチしてスペースキーを押すと、そのオブジェクトが座標(2, 3, 1)を向きます。ただしY軸のみでX軸とZ軸は向きません。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    private Vector3 TargetPosition;
    private Vector3 Direction;

    void Start()
    {
        TargetPosition = new Vector3(2, 3, 1);
    }

    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            Direction = (TargetPosition - transform.position);
            Direction.y = 0;

            transform.rotation = Quaternion.LookRotation(Direction, Vector3.Up);
        }
    }
}