Поделиться через


Как работает обустраиваемая Wand

Обзор Wand

Внимание

Если вы не знакомы с Equippables, рекомендуется прочитать статью с именем "Удержание объектов" реалистично с помощью Equippables перед чтением этой статьи.

Wand является одним из комплектов, доступных в пакете Toybox, который вы получаете при скачивании примеров сетки из GitHub. Когда вы подбираете Wand, вы держите его перед вами почти грудь высокой, и Wand отображает искрый эффект частицы пара на его кончике.

GIF- файл, показывающий участника события, удерживающего Wand в его неактивированном состоянии.

Чтобы активировать Wand, нажмите левую кнопку мыши (ПК) или кнопку триггера контроллера (Quest). Ваша рука двигается вперед и кончик Wand выдает фейерверки, которые создаются с помощью другого эффекта частицы.

GIF- файл, показывающий участник события, активируя Wand, который затем создает фейерверки.

Для типа активации Wand задано однократное значение. Это означает, что как только он проходит через его поведение, Wand de-activates и ваша рука возвращается в его начальное положение. Нажмите еще раз, чтобы повторить поведение.

Граф скрипта Wand

Давайте рассмотрим, как работает Wand, проверив граф скрипта, подключенный к нему.

  1. Откройте пример Toybox и убедитесь, что находитесь на сцене Toybox .

  2. В иерархии выберите Wand_Prefab GameObject.

    Снимок экрана иерархии с выделенным префабом Wand.

  3. В инспекторе перейдите к компоненту "Компьютер скрипта" и обратите внимание, что он содержит ресурс графа скрипта с именем MagicWand. Нажмите кнопку "Изменить граф ".

    Снимок экрана компонента компьютера скрипта Wand с выделенной кнопкой

Определить, когда Wand подбирается

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

Снимок экрана полного графа скрипта Wand со вторым разделом.

Узел, определяющий, подбирается ли wand или не является текстом, взаимодействующим с сеткой: Является моим. Это логическое значение и начинается со значения False.

Снимок экрана узла isMine.

Когда аватар поднимает Wand, его состояние изменяется. Значение isMine изменяется на true, и это значение передается в узел if . Это приводит к тому, что "звук пикап" активируется ...

Снимок экрана изменения состояния, если и воспроизведение звуковых узлов сетки.

... а также изменяет значение переменной объекта StartGlowVFX на true.

Снимок экрана с узлом значения объекта набора с начальным потоком значений vfx.

Обратите внимание, что текст над узлами isMine и On State Changed nodes говорит "Локальный для этого клиента".

Снимок экрана: моя и на этапе измененные узлы с выделенным локальным текстом клиента.

Эти узлы и звук, который активируется, возникают локально. Тем не менее, мы хотим, чтобы другие участники в событии испытали то, что происходит с Wand. Это достигается путем вставки узла переменной объекта Set, отображающего текст "Общий для всех клиентов".

Снимок экрана с узлом переменной объекта набора с выделенным текстом всех клиентов.

Совет. Переменная isMine найдена в скрипте "Взаимодействуемый текст сетки".

Снимок экрана: логическое значение в скрипте

Включение неактивированного эффекта частиц состояния

Мы подбираем поток в группе узлов с именем Networking startMagic. Цель этой группы узлов заключается в том, чтобы включить и выключить начальный эффект частицы, который отображается на кончике Wand вкл. Мы будем называть этот эффект "искрым паром".

Снимок экрана полного графа скрипта Wand с выделенным пятым разделом.

Изменение состояния приводит к передаче значения true для startFLowVFX в узел if .

Снимок экрана: переменная объекта get, на этапе изменена и если узлы.

... и это приводит к тому, что значение переменной объекта PersistentVFX также имеет значение true, которое активирует эффект vfx_wand-ethereal_persistent_02 системы частиц ("искрый пар").

Снимок экрана с активным узлом набора со значением логическое значение, которое активирует эффект частицы, равный true.

GIF- файл, показывающий участника события, удерживающего Wand в его неактивированном состоянии.

Активация Wand

Предположим, что участник нажимает левую кнопку мыши (ПК) или кнопку триггера контроллера (Quest). Это называется "активация Equippable". Это приводит к изменению положения руки аватара, а в группе узлов с именем Networking isPressed ...

Снимок экрана полного графа скрипта Wand с выделенным четвертым разделом.

... щелчка обнаруживается текстом , взаимодействуемым сеткой: активируется узел. Этот узел является логическим значением по умолчанию со значением false. Нажатие кнопки изменяет значение "True", а узел "Изменен состояние" передает значение true на узел If. Это приводит к тому, что узел Set Variable устанавливает логическое значение isPressed логическое значение противоположности тому, что было раньше (поэтому теперь это "true").

Снимок экрана с активированным узлом и другими узлами, которые вызывают нажатие клавиши true.

Совет. Переменная isActivated найдена в скрипте "Взаимодействуемый текст сетки".

Снимок экрана, на который активируется переменная в скрипте

Включение эффекта частицы активированного состояния

Мы подбираем поток в группе узлов с именем "Орфография" при нажатии кнопки.

Снимок экрана полного графа скрипта Wand с выделенным третьим разделом.

Эта группа узлов активирует эффект частиц фейерверк в конце Wand, который возникает, когда участник нажимает кнопку и активирует Wand. После возвращения Wand в его неактивированное состояние эта группа узлов возвращает первый эффект частиц ("искрый пар") обратно.

В графе значение true для isPressed* приводит к активации узла Set Variable: Object node. Этот узел задает для переменной startGlowVFX значение false.

Снимок экрана начального свечения vfx boolean изменился на false

Это снова активирует узлы в группе узлов "Сеть startMagic ". На этот раз значение false для startGlowVFX приводит к отключению эффекта частиц PersistentVFX.

Снимок экрана сохраняемого vfx boolen изменился на false, который отключает первый эффект частицы.

Вернитесь в группу узлов для приведения орфографии. После короткого периода охлаждения звук воспроизводится, а затем другой эффект частиц активируется на кончике палочки: vfx_wand_blast_trail_spheres_01 ("фейерверки"), которое является значением переменной объекта ShootTrailVFX .

Снимок экрана узлов, которые активируют звук активированного состояния и эффект частиц.

GIF- файл, показывающий участник события, активируя Wand, который затем создает фейерверки.

Включение неактивного эффекта частицы

После еще одного короткого периода охлаждения логическое значение startGlowVFX изменяется обратно на "true", которое превращает эффект vfx_wand_ethereal_persistent_02 системы частиц ("искрый пар") обратно в группу "Сетевой стартMagic ".

Снимок экрана узлов, включающих эффект частиц искры пара обратно.

На этом этапе рука аватара возвращается в положение, в который он был до активации Wand, и искрый пар можно увидеть снова.

GIF- файл, показывающий участника события, удерживающего Wand в его неактивированном состоянии.

Выпуск Wand

Если у Wand был тип активации "переключатель", когда участник щелкнул еще раз, он активирует второй, другой "состояние" или набор поведения. Однако тип активации Wand является "одним", и это означает, что каждый раз, когда участник щелкает, то же "состояние" или набор поведения повторяется.

Чтобы освободить Wand, участник нажимает клавишу ПРОБЕЛ; это приводит к тому, что Wand падает на землю. Когда Wand не проводится, мы не хотим, чтобы эффект искры пар частицы работает на кончике Wand. Узлы в группе узлов "Если не заняты", отключите группу узлов Wand , отключите этот эффект частицы.

Снимок экрана полного графа скрипта Wand с выделенным первым разделом.

В то время как wand удерживается, значение сетки взаимодействуемого тела: Get Equipped At* имеет значение DefaultHand. Значение узла Equip Location (логическое значение) равно "Нет". Эти два значения сравниваются в узле Equal (также логическое значение); так как они не совпадают, выходные данные Equal равно false и если узел не активируется.

Снимок экрана: получите оборудование на узле со значением

При удалении Wand значение Get Equipped At изменяется на "Нет". Это приводит к выводу "true" узлов Equal и If . Это активирует узел set Variable: Object node, который преобразует значение переменной объекта startGlowVFX в false.

Снимок экрана: получение оснащения на узле со значением ни одного после того, как Wand был удален.

Это снова активирует узлы в группе узлов Networking startMagic и отключает эффект частицы --vfx_wand_ethereal_persistent_02-, который является значением переменной объекта PersistantVFX .

Снимок экрана сохраняемого vfx boolen изменился на false, который отключает эффект частицы искры пар.

Рекомендации по эксперименту с скриптом

  • Создайте различные эффекты, которые могут быть активированы, когда один из существующих Комплектных объектов выбирается и удерживается.
  • Создайте новые комплекты, которые могут использовать некоторые из существующих эффектов. Например, некоторые типы фейерверков могут использовать эффекты "sparkle", которые в настоящее время используются Wand.
  • Создайте различные эффекты и поведение для нового комплектного устройства, которое может быть активировано при удерживаемом элементе Equippable и нажатии левой кнопки мыши (ПК) или кнопки контроллера (Quest). Например, вместо Wand вы можете иметь рыболовный ружье, который вытесает заманку при нажатии кнопки.
  • Подумайте о разнице между перемещением объекта вправо в его активированное состояние при выборе (например, Детализация) и наличии объекта, который начинается от неактивированного, а затем переходит в его активированное состояние после нажатия кнопки участника (например, планшет). Сделайте объекты, которые используют оба подхода.

Следующие шаги