Перейти к основному содержимому

Игровое управление

Игровое управление превращает объект в персонажа, которым посетитель может управлять: ходить, летать или перемещаться по карте с видом сверху. Здесь — как его настроить и за что отвечает каждый параметр.

Что понадобится​

  • Персонаж — объект с триггером Игровое управление.
  • Твёрдая опора — пол с физическим телом и коллайдером.
  • Камера — или никакой. Если камеру не выбрать, будет использоваться встроенная.

Добавьте игровое управление​

Игровое управление — это триггер, а не шаг. Все настройки контроллера находятся в триггере.

  1. Выберите объект, который станет персонажем.
  2. В инспекторе нажмите + новый компонент и выберите События.
  3. Нажмите + добавить событие.
  4. Выберите триггер Игровое управление.
  5. Настройте параметры, описанные ниже.
  6. По желанию добавьте шаги в ветки В покое, При движении, При беге и При прыжке, чтобы реагировать на то, что делает персонаж, — например, проигрывать анимацию.

Контроллер существует, пока его объект включён. Выключите объект — контроллер исчезнет. Включите снова — контроллер вернётся.

Движение​

ПараметрЗа что отвечает
ДвижениеХодьба, Полёт или Сверху
Относительночто считать «вперёд»: куда смотрит Камера или собственные Оси сцены
Скорость · Множ. бегаскорость в метрах в секунду и во сколько раз быстрее персонаж бежит, пока зажат Shift
Задержка движенияза какое время персонаж разгоняется до полной скорости и останавливается
Автоповорот · Вращениеразворачивается ли персонаж туда, куда идёт, и как быстро
КлавишиWASD, стрелки или и то и другое
Прыжоквысота прыжка в метрах; 0 — прыгать нельзя
Air Controlнасколько посетитель может управлять персонажем в прыжке
Сброс по Yесли персонаж упадёт на столько ниже точки старта, его вернут обратно
Движение по кликуперсонаж идёт в точку, куда нажал посетитель
Поворотчем поворачивать вид: мышью, клавишами или и тем и другим
Задержка движения — это время

Допустим, вы поставили полсекунды. Тогда персонаж набирает полную скорость за полсекунды. Склоны, неровности и масса его замедляют, поэтому движение ощущается физическим.

0 значит «как можно быстрее». Это почти мгновенно, но не совсем: у персонажа всё равно есть масса.

Тело​

Контроллер даёт объекту капсулу. Поэтому персонаж натыкается на препятствия, а не проходит сквозь них.

ПараметрЗа что отвечает
ФормаКапсула или Сфера
Размеррадиус и высота в метрах
Положениесдвигает капсулу относительно объекта
Massнасколько сильно персонаж толкает других и насколько трудно сдвинуть его самого
Подсказкапоказывает капсулу в редакторе

Если у объекта уже есть своё физическое тело, контроллер оставляет его и только управляет им, с учётом его массы. Если тела нет, контроллер создаст его сам.

Твёрдые только объекты с телом

Пол и стены останавливают персонажа, только если у них есть физическое тело и коллайдер. Остальная геометрия — просто декорация, и персонаж проходит сквозь неё. → Физика

Гравитация берётся из пространства, и высота прыжка считается относительно неё. Сцена с игровым управлением включает физику, даже если в пространстве она была выключена. Без физики ничего не будет двигаться.

Камера, которая следует за персонажем​

ПараметрЗа что отвечает
Камеракакая камера следует за персонажем; оставьте пустым, чтобы использовать встроенную
Направлениевсё время смотреть На цель или держать заданный угол — Свой
Задержка · Задержка пов.насколько камера отстаёт, в секундах
Вверх / вниз · Влево / вправоможно ли поворачивать вид в эту сторону: Да, Нет или Предел
Пределнасколько можно повернуть вид, в градусах
Выстройте кадр во вьюпорте

В первом кадре камера запоминает расстояние и угол до персонажа и дальше их сохраняет. Вводить расстояние или высоту не нужно. Поставьте камеру во вьюпорте так, как выглядит хорошо, и она останется там.

Как ведёт себя камера:

  • Сначала поворачивается, потом едет. Персонаж может немного уйти в сторону, пока камера только поворачивается. Камера сдвигается, лишь когда персонаж доходит до края этой зоны. Это выглядит естественнее, чем камера, жёстко привязанная к персонажу.
  • Отставание меняет кадр, а не расстояние. Камера не отъезжает назад, когда персонаж разгоняется. Иначе это выглядело бы как случайный зум, а от такого может укачать.
  • Камера заходит персонажу за спину, пока он движется, а посетитель не поворачивает вид. Если зафиксировать Влево / вправо или выбрать режим Сверху, этого не будет.
  • Ничто не загораживает обзор. Если между камерой и персонажем что-то оказалось, камера подъезжает ближе, а потом плавно отъезжает обратно. Ближе чем на полметра она не подходит.
  • Колёсико мыши приближает и отдаляет — примерно от трети до двух с половиной заданных расстояний.

Пока контроллер ведёт камеру, её собственное управление (орбита, полёт) не работает. Иначе они мешали бы друг другу в каждом кадре.

Сенсорное управление и геймпады​

Экранные элементы управления появляются только на сенсорных экранах, так что их можно не выключать.

ПараметрЗа что отвечает
Управление касанием → Включитьпоказывает стик и кнопку прыжка
Поворотчем поворачивать вид: Свайп по сцене или второй Стик
Стик движения · Кнопка прыжкагде находится каждый элемент, на сетке 3×3
Отступ · Размер кнопокрасстояние от края экрана и размер в пикселях
ВидимостьВыкл прячет элементы; поворот свайпом всё равно работает

Геймпад работает без настройки:

  • левый стик двигает персонажа;
  • правый стик поворачивает обзор;
  • A — прыжок;
  • бамперы и триггеры — бег.

Реагируйте на действия персонажа​

Ветки В покое, При движении, При беге и При прыжке срабатывают, когда персонаж меняет то, что делает. Скрипты и патчи получают это изменение в тот же момент:

  • скрипт может его слушать;
  • в патче у ноды on_game_control есть выходы pulse и state.

Поэтому звук шагов можно проигрывать из скрипта, пока ветки управляют анимацией, и одно не разойдётся с другим.

Следование без контроллера​

Для чего-то попроще — враг, который идёт за игроком, питомец или цель для камеры — используйте шаги Следовать за объектом, Смотреть на объект и Прекратить следование.

Эти шаги двигают объект напрямую. Поэтому они не работают на объекте, который уже двигает физика. Такой объект толкайте импульсами из скрипта.


Дальше: Карточки интерфейса — кнопки, меню и табло со счётом.