Общая схема работы

Стандарт управления аватаром определяет хранение всех полей ввода в едином компоненте AvatarOverallInput, а также логически разделяет права на чтение и запись данных между взаимодействующими через него компонентами. Общая схема работы выглядит следующим образом:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2aae50f1-a19b-4914-8e39-6c4ded6af297/Untitled.png

Как видно из схемы, компонент AvatarOverallInput является независимым (то есть не ссылается на какие-либо другие компоненты). Компоненты, которые используют AvatarOverallInput можно условно разделить на две группы:

  1. Приёмники
  2. Передатчики

Приёмники обращаются к определённым полям компонента AvatarOverallInput и используют их в собственных вычислениях. Передатчики записывают значения ввода в поля компонента AvatarOverallInput, осуществляя таким образом управление аватаром. Передатчиками могут выступать элементы пользовательского ввода, а также компонент ИИ логики аватара. Стандарт предполагает, что управление аватаром осуществляется либо с раскладки (она же Avatar layout), либо с ИИ компонента, в противном случае возможен конфликт по вводу.

Avatar Overall Input

Компонент AvatarOverallInput выглядит следующим образом:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/015c0b6f-251b-4478-85d7-057a2453bb8a/Untitled.png

Параметр HasPlayer принимает истинное значение, если аватар находится под управлением игровой камеры. События OnPlayerEnter и OnPlayerExit отрабатывают в моменты начала и завершения управления аватара игровой камерой. В параметре Camera Position содержатся координаты положения игровой камеры. Параметр LookRotation определяет поворот обзора аватара, а Look Position - положение точки обзора аватара. Например, для персонажа игрока LookRotation будет использоваться для вращения его корпуса по горизонтали и вертикали, а Look Position будет соответствовать точке пересечения луча, исходящего из центра экрана игрока, с ближайшей поверхностью в игровом мире, что может использоваться для корректировки полёта выпущенных снарядов в центр экрана. Параметр Avatar Layout Prefab хранит ссылку на префаб раскладки аватара, которая используется в Стандарте игровой камеры для подгрузки пользовательского интерфейса аватара.

Player Camera Standard

Набор полей ввода используется непосредственно для приёма/передачи данных ввода между компонентами, взаимодействующими через AvatarOverallInput. Каждое поле ввода содержит следующие данные:

  1. Имя
  2. Тип
  3. Данные

Имя поля используется для обращения к нему из других компонентов.

Существуют следующие типы полей ввода: