Menu
CoddyTech

物を見る

CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 26/67。

transform.LookAt(point) は、オブジェクトの前方軸である青い Z 軸の矢印がワールド内の位置を指すように、オブジェクトの向きを変えます。オブジェクトの向きは変えますが、移動はさせません。このサーチライトは (0, 6, 0) にある塔の上に設置され、(4, 0, 10) にある門を照らしています。

void Start()
{
    transform.LookAt(new Vector3(4, 0, 10));
}

門はライトより低い位置にあるため、サーチライトは向きを変えるだけでなく下にも傾きます。LookAt は上下も含め、指定した点をまっすぐ指すように向きを合わせます。その後、transform.forward はライトから門の方向を指します。

Start() で呼び出すと、LookAt は一度だけ向きを合わせます。Update() で呼び出すと、毎フレーム向きを合わせ直すため、オブジェクトや点が移動しても、オブジェクトはその点を向き続けます。引数には常に位置を指定します。LookAt(Vector3.forward) は、オブジェクトがどこにあっても、ワールドの中心の近くにあるワールド座標 (0, 0, 1) の点を指します。

challenge icon

チャレンジ

中級

ローバーはすでに、ワールドの x 軸と z 軸に沿って矢印キーで走行します。走行する方向を向くようにしましょう。移動中は、斜め方向も含め、前面(前方軸)が進行方向を指します。キーを押していないときは停止し、最後に走行した方向を向いたままになります。

Playを押して走行し、その後Checkを押します。

自分で試してみよう

using UnityEngine;

public class Rover : MonoBehaviour
{
    public float speed = 3f;

    void Update()
    {
        Vector3 move = Vector3.zero;
        if (Input.GetKey(KeyCode.RightArrow)) move += Vector3.right;
        if (Input.GetKey(KeyCode.LeftArrow)) move += Vector3.left;
        if (Input.GetKey(KeyCode.UpArrow)) move += Vector3.forward;
        if (Input.GetKey(KeyCode.DownArrow)) move += Vector3.back;
        move = move.normalized;
        transform.position += move * speed * Time.deltaTime;
        // ローバーを進行方向に向ける
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Unityスクリプティングの基礎のすべてのレッスン