Menu
CoddyTech

Смотреть на объекты

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 34 из 85.

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

Задание

Средне

Поверните ровер в направлении его движения.

  1. Под комментарием в Update() напишите if (move != Vector3.zero), чтобы стоящий ровер сохранял направление.
  2. Внутри этого условия вызовите transform.LookAt(transform.position + move);.

Нажмите «Играть» и управляйте ровером: он повернёт переднюю часть в направлении движения. Затем нажмите «Проверить».

Попробуйте сами

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;
        // Поверните ровер в сторону его движения
    }
}

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity