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

События

События научат сцену реагировать на действия людей без единой строчки кода. Когда что-то происходит, объект выполняет то, что вы перечислили.

КОГДА  кто-то нажимает на дверь
ТО плавно открыть её за 600 мс
выключить табличку «заперто»
отправить сигнал «door-open»

Когда — это триггер. То — список шагов. Событий у объекта может быть сколько угодно, и каждое работает само по себе.

Добавьте событие​

  1. Выберите объект.
  2. В инспекторе нажмите + новый компонент и выберите События. В компоненте сразу есть одно событие с триггером Нажатие на объект.
  3. Нажмите на событие. Откроется панель Настройка события. Чтобы добавить ещё одно событие, нажмите + добавить событие.
  4. Выберите триггер или оставьте Нажатие на объект.
  5. Нажмите + добавить действие и выберите шаг. В списке есть поиск, а шаги разбиты на группы Действия, Анимации, Состояния и Логика.
  6. Так же добавьте остальные шаги. Они выполняются по порядку.
Два списка, которые стоит держать под рукой

В справочнике триггеров есть все триггеры, в справочнике шагов — все шаги. Оба всегда актуальны. Рядом с названием из редактора в них указано имя для скриптов: Отправить сигнал — это emit_signal, а Сигнал — on-signal.

Триггеры​

Триггер — это момент, когда запускается событие. Настройки каждого триггера — в справочнике выше. А в таблицах ниже — для чего нужен каждый.

Указатель и клавиши​

В редактореСрабатывает, когда
Нажатие на объектпо объекту тапают или кликают; есть ветки для клика, нажатия и отпускания
Наведениекурсор наводят на объект или уводят с него
Двойной кликпо объекту дважды кликают в пределах 300 мс
Долгое нажатиеобъект удерживают 450 мс, не сдвигая
Клавишаклавишу нажимают или отпускают
Прокруткакрутят колёсико; можно выбрать направление
Перетаскиваниепосетитель перетаскивает AR-контент, который разместил
Масштабированиепосетитель сводит или разводит пальцы, чтобы изменить размер размещённого AR-контента
Поворотпосетитель поворачивает размещённый AR-контент

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

Жизненный цикл​

В редактореСрабатывает, когда
Запусксцена запускается; его получает каждый объект
Изменение размераменяется размер окна или экрана
Сворачиваниеприложение или вкладка уходит в фон
Возвратприложение или вкладка возвращается
Видимостьобъект показывают или скрывают
Останавливайте звук при сворачивании

Если посетитель переключится на другое приложение, звук продолжит играть, пока вы его не остановите. Останавливайте звук по триггеру Сворачивание — например, переключайте объект в состояние, где звук выключен, — и запускайте снова по триггеру Возврат.

AR-трекинг​

В редактореСрабатывает, когда
Распознаваниенайден маркер или поверхность
Потеря трекингатрекинг потерян
Размещениепосетитель разместил контент
Готовность VPSпозиционирование запустилось
Локализация VPSреальное положение посетителя найдено
Неудачная локализация VPSположение пока не найдено
Ошибка VPSпозиционирование вообще не смогло запуститься

Редактор показывает только те триггеры, которые может дать якорь вашей сцены. Распознавание срабатывает один раз, когда начинается трекинг, а не в каждом кадре.

Неудачная локализация VPS — это нормально

Неудачная локализация VPS срабатывает часто, пока посетитель ходит и ищет место, которое есть на карте. Считайте это сигналом «пробуем дальше», а не ошибкой, которую нужно показать.

Время и расстояние​

В редактореСрабатывает
Задержкаодин раз, через заданное время
Каждые N секундснова и снова; число повторов 0 значит «бесконечно»
Расстояниекогда что-то приближается на заданное расстояние или удаляется
Изменение переменнойкогда переменная получает новое значение

У триггера Расстояние есть параметр На старте. Включите его, если объект может оказаться рядом уже в момент открытия сцены. Без него событие ждёт, пока что-нибудь сдвинется.

Состояния, столкновения и сигналы​

В редактореСрабатывает, когда
Активация состоянияобъект переходит в выбранное состояние
Деактивация состоянияобъект выходит из этого состояния
Столкновениеобъект касается другого; с какими именно — задаёт поле Сталкивается
Действие интерфейсана карточке интерфейса нажали кнопку
Сигналдругое событие отправило сигнал
Игровое управлениеперсонаж встаёт на месте, начинает двигаться, бежать или прыгать

Ветки​

У некоторых триггеров есть ветки, поэтому одно событие может обработать все исходы. Например, одно событие Расстояние отвечает и на «подошёл ближе», и на «отошёл».

ТриггерВетки
РасстояниеПри сближении, При отдалении
КлавишаПри нажатии, При отпускании
НаведениеПри наведении, При уходе
Нажатие на объектПри клике или тапе, При нажатии, При отпускании
ВидимостьПри показе, При скрытии
Игровое управлениеВ покое, При движении, При беге, При прыжке

У каждой ветки свой список шагов. У триггера без веток один список — При активации.

Выберите, на какие объекты действует шаг​

У каждого шага есть поле Объект.

  • Оставьте его пустым — шаг подействует на объект, которому принадлежит событие. Обычно так и нужно.
  • Выберите объекты — шаг подействует на них. Так одна кнопка открывает три двери.

Нажатия доходят до родителей​

Нажатие, наведение или действие на карточке доходят до объекта и до всех его родителей.

Поэтому можно поставить одно событие на группу, и оно поймает нажатие на любой объект внутри неё. Не нужно копировать одно и то же событие на сорок объектов.

Отсюда же следует:

  • «нажатие в любом месте панели» — это одно событие на самой панели;
  • если курсор переходит между двумя дочерними объектами одного родителя, у родителя не срабатывает ни наведение, ни уход: курсор его не покидал.

Некоторые триггеры работают иначе:

  • Столкновение срабатывает только у объектов, которые соприкоснулись.
  • Клавиша, Прокрутка, Изменение размера и Запуск не относятся к конкретному объекту, поэтому их получает каждый объект.

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

Обрабатывайте каждый триггер в одном месте

Если объект реагирует на один и тот же триггер и в событии, и в скрипте, реакция выполнится дважды. Когда что-то срабатывает два раза, причина почти всегда в этом.

Несколько клавиш для одного события​

«Прыжок на пробел или W» — это одно событие, а не два. Кликните поле Клавиша и нажмите первую клавишу. Потом кликните или и нажмите следующую. Добавьте столько клавиш, сколько нужно.

  • Каждая клавиша в списке работает сама по себе. Модификатор вроде Ctrl относится только к той клавише, вместе с которой его нажали.
  • Остальные настройки триггера, например Автоповтор, действуют на все клавиши в списке.
  • В этом же поле работает и кнопка мыши. Тогда в списке могут быть только кнопки мыши.

Событие хранит эти клавиши текстом. Ассистент или скрипт записывает их так:

ArrowUp        ctrl+KeyW        KeyA+KeyS        Space+double        mouse:middle

Вместо клавиши можно указать привязку клавиш. Привязки настраиваются в разделе Настройки проекта → Привязки клавиш. Поменяйте там клавишу для «прыжка» один раз, и все события с «прыжком» подхватят её. Это удобно, если кто-то попросит управление для левшей.

Шаги​

Настройки каждого шага — в справочнике шагов.

В редактореЧто делает
Переход на сценупереходит на другую сцену
Переход на пространствопереходит в другое пространство, а если выбрать сцену — сразу на неё
Переход по URL ссылкеоткрывает ссылку в этой или в новой вкладке
Переход в мессенджероткрывает Facebook, VK, OK, Instagram, Telegram, WhatsApp или Viber
Вызов по номеру телефонаначинает телефонный звонок
Написать письмооткрывает новое письмо
Скачивание файласкачивает файл из вашего проекта
Скачивание контактапредлагает сохранить карточку контакта из заполненных полей

Шагу Переход в мессенджер для каждого приложения нужны свои данные:

  • ID страницы для Facebook, VK и OK;
  • имя пользователя для Instagram и Telegram;
  • номер телефона для WhatsApp и Viber.

Показать, скрыть и изменить объекты​

В редактореЧто делает
Показать / скрыть объектпоказывает или скрывает выбранные объекты; если выбрана сцена, делает её активной
Переключить состояниевключает сохранённое состояние; плавно, если задать длительность
Изменить свойстваодин раз применяет несколько значений, как временное состояние

Анимация​

В редактореЧто делает
Проиграть анимациюпроигрывает анимацию из таймлайна; можно задать зацикливание, повторы, скорость и задержку
Остановить анимациюостанавливает её

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

Чтобы переместить объект, плавно скрыть его или сменить цвет, сделайте анимацию в панели Анимация, а потом запустите её этим шагом. Для одного изменения хватит шага Переключить состояние с длительностью.

В проектах, сделанных раньше, могут встречаться шаги Трансформация, Прозрачность, Материал, Трансформация кости и Встроенная анимация. В этих проектах они по-прежнему работают, но редактор их больше не предлагает. Например, Материал плавно подводит цвет, прозрачность, свечение и настройки поверхности выбранных объектов к сохранённому материалу, а тип и текстуры каждого слота оставляет прежними.

Движение​

В редактореЧто делает
Следовать за объектомвсё время следует за другим объектом; вы задаёте расстояние, смещение, плавность и скорость
Смотреть на объектповорачивается к цели, не двигаясь с места
Прекратить следованиеперестаёт следовать и смотреть
Лететь по путидвижется по пути
Остановить полёт по путиостанавливает движение по пути

Логика​

В редактореЧто делает
Если — иначепроверяет условие и выполняет один из двух списков шагов
Задать переменнуюзадаёт значение переменной, прибавляет к нему или переключает его
Отправить сигналотправляет сигнал выбранным объектам или всей сцене
Подождать иждёт, а потом выполняет вложенные шаги

Указатель​

Захватить указатель прячет курсор мыши и отдаёт его движения сцене. Это нужно в играх от первого лица, чтобы курсор не уходил за пределы окна. Отпустить указатель возвращает курсор.

Триггеры и шаги из плагинов​

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

  • Они есть только в проектах, в которые добавлен плагин.
  • У триггера плагина могут быть настройки. Тогда событие срабатывает, только когда они совпадают. Оставьте настройку пустой, чтобы реагировать на каждый запуск.
  • Если плагин убрали из проекта, его триггеры больше не срабатывают, а шаги пропускаются.

Как сделать свои — в разделе Код в проекте.

Добавьте условие​

Условие — это шаг Если — иначе. Такие шаги можно вкладывать друг в друга, чтобы получить больше двух исходов.

Что проверять, выберите в поле Условие:

В редактореПроверяетКакие поля заполнить
Всегданичего; условие всегда истинно—
Переменнаязначение переменнойПеременная, Сравнение, Значение
Расстояниенасколько объект этого события далеко от другого объектаОбъект, Сравнение, Порог
Состояниев каком состоянии другой объектОбъект, Состояние
Видимостьвиден ли объектОбъект, Ожидается
Случайностьслучайный шансПорог, в процентах

Как сравниваются значения:

  • 3 читается как число, true — как да/нет, всё остальное — как текст.
  • == и != проверяют точное совпадение.
  • >, >=, < и <= сравнивают числа.

Переменные, сигналы и таймеры​

Переменные живут в пределах одного посещения. Каждый раз, когда кто-то открывает проект, они пустые. Чтобы задать начальные значения, задайте их в событии с триггером Запуск. Скрипт видит эти же переменные как глобальные.

Сигналы позволяют одному событию запускать другие, не копируя шаги. Например, несколько событий могут ждать сигнал level-complete, а отправить его может любое событие. Если сигнал раз за разом вызывает сам себя, через восемь кругов он остановится, чтобы сцена не зависла.

Таймеры (Задержка и Каждые N секунд) запускаются, когда их объект включается, и сбрасываются, когда он выключается. Когда объект снова включится, отсчёт начнётся заново. Пропущенные срабатывания не выполняются все разом.

Состояния​

Состояние — это сохранённый вид объекта: положение, цвет, видимость и другое. Шаг Переключить состояние включает его. Если задать длительность, объект изменится плавно.

Используйте состояния для переключателя, подсветки или двери, которая бывает открыта и закрыта.

Пока выбрано состояние, правки попадают в него

Если у объекта выбрано одно из состояний, любые изменения объекта меняют это состояние. Когда вы собираете состояния, так и нужно. Но если вы забыли, что состояние выбрано, это сбивает с толку.

Подробнее — на странице Состояния.

Повторный трекинг​

В AR-сценах у каждого события есть режим повторного трекинга. Он определяет, что происходит, когда маркер потерялся и нашёлся снова:

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

Дальше: Анимация — как заставить объекты двигаться.