Найти в Дзене

Перевод Официального курса Unity. Урок 1. Часть 3.

Доброго времени суток. В данном уроке мы рассмотрим третью часть, первого Официального урока по Unity. В этом уроке мы напишем скрипт на C# и заставим камеру двигаться за нашим автомобилем. Для начала нам необходимо создать C# скрипт как мы это делали в преведущем уроке и назвать его "FollowPlayer" и добавляем его к нашему объекту "Main Camera". После того как мы все сделали, открываем скрипт и удаляем встроенные комментарии. В скрипте перед методом "Start" мы создаем переменную и задаем ей публичный доступ. Пишем: public GameObject player; GameObject - так как мы будем обращаться к игровому объекту. В методе "Update" пишем: transform.position = player.transform.position; Таким образом мы назначаем положение камеры положению игрока. Сохраняем скрипт, выбираем нашу камеру на которой уже есть наш скрипт и в окне "Inspector" на нашем скрипте в поле "Player" переносим наш автомобиль. Запускаем сцену и видим, что теперь камера движется вместе с автомобилем, но появилась проблема (наша камер

Доброго времени суток.

В данном уроке мы рассмотрим третью часть, первого Официального урока по Unity.

В этом уроке мы напишем скрипт на C# и заставим камеру двигаться за нашим автомобилем.

Для начала нам необходимо создать C# скрипт как мы это делали в преведущем уроке и назвать его "FollowPlayer" и добавляем его к нашему объекту "Main Camera". После того как мы все сделали, открываем скрипт и удаляем встроенные комментарии.

В скрипте перед методом "Start" мы создаем переменную и задаем ей публичный доступ. Пишем:

public GameObject player;

GameObject - так как мы будем обращаться к игровому объекту.

В методе "Update" пишем:

transform.position = player.transform.position;

наш новый скрипт
наш новый скрипт

Таким образом мы назначаем положение камеры положению игрока. Сохраняем скрипт, выбираем нашу камеру на которой уже есть наш скрипт и в окне "Inspector" на нашем скрипте в поле "Player" переносим наш автомобиль. Запускаем сцену и видим, что теперь камера движется вместе с автомобилем, но появилась проблема (наша камера теперь находится под машиной).

Чтобы исправить данную проблему нам необходимо в наш метод "Update" добавить новый "Vector3" со значениями в которых сейчас находится камера. В нашем случае это (X=0, Y=5, Z=-9). Для этого добавляем наш новый Vector3 в метод Update и получаем такую строку:

transform.position = player.transform.position + new Vector3(0, 5, -9);

Сохраняем наш скрипт и тестируем, теперь когда камера двигается за автомобилем, она остается позади и выше него, чего мы и добивались.

Переделаем наш новый Vector3 в переменную и назовем нашу переменную "offset" и сделаем ей приватный доступ. Перед методом "Start", где мы уже писали переменную, пишем:

private Vector3 offset = new Vector3(0, 5, -9);

Теперь в методе "Update" удаляем наш новый Vector3 и прибавляем название нашей переменной:

transform.position = player.transform.position + offset;

После данных действий, работа нашего скрипта никак не изменилась, но он стал более организованный. Код должен получится вот такой:

Добавили переменную и использовали её
Добавили переменную и использовали её

После запуска нашей сцены мы можем заметить, что камера движется за автомобилем с рывками, чтобы исправить это нужно метод "Update" переименовать в "LateUpdate".

LateUpdate вызывается после вызова всех функций обновления. Это полезно для упорядочивания выполнения скрипта. Например, камера слежения всегда должна быть реализована в LateUpdate, поскольку она отслеживает объекты, которые могли переместиться внутри Update.

У нас должен получится следующий скрипт:

исправленный скрипт
исправленный скрипт

После того как мы всё сделали не забываем сохранить скрипт и идем тестировать нашу сцену и видим что дрожание камеры больше нет.

На следующем уроке мы добавим управление с клавиатуры для нашего автомобиля.

На этом урок подошел к концу. Увидимся в следующем уроке.