Как работает обустраиваемая Wand
Обзор Wand
Внимание
Если вы не знакомы с Equippables, рекомендуется прочитать статью с именем "Удержание объектов" реалистично с помощью Equippables перед чтением этой статьи.
Wand является одним из комплектов, доступных в пакете Toybox, который вы получаете при скачивании примеров сетки из GitHub. Когда вы подбираете Wand, вы держите его перед вами почти грудь высокой, и Wand отображает искрый эффект частицы пара на его кончике.
Чтобы активировать Wand, нажмите левую кнопку мыши (ПК) или кнопку триггера контроллера (Quest). Ваша рука двигается вперед и кончик Wand выдает фейерверки, которые создаются с помощью другого эффекта частицы.
Для типа активации Wand задано однократное значение. Это означает, что как только он проходит через его поведение, Wand de-activates и ваша рука возвращается в его начальное положение. Нажмите еще раз, чтобы повторить поведение.
Граф скрипта Wand
Давайте рассмотрим, как работает Wand, проверив граф скрипта, подключенный к нему.
Откройте пример Toybox и убедитесь, что находитесь на сцене Toybox .
В иерархии выберите Wand_Prefab GameObject.
В инспекторе перейдите к компоненту "Компьютер скрипта" и обратите внимание, что он содержит ресурс графа скрипта с именем MagicWand. Нажмите кнопку "Изменить граф ".
Определить, когда Wand подбирается
В визуальном скрипте, подключенном к Wand, мы начинаем анализ в группе узлов с именем "Проверка, если удерживается, чтобы начать волшебное свечение".
Узел, определяющий, подбирается ли wand или не является текстом, взаимодействующим с сеткой: Является моим. Это логическое значение и начинается со значения False.
Когда аватар поднимает Wand, его состояние изменяется. Значение isMine изменяется на true, и это значение передается в узел if . Это приводит к тому, что "звук пикап" активируется ...
... а также изменяет значение переменной объекта StartGlowVFX на true.
Обратите внимание, что текст над узлами isMine и On State Changed nodes говорит "Локальный для этого клиента".
Эти узлы и звук, который активируется, возникают локально. Тем не менее, мы хотим, чтобы другие участники в событии испытали то, что происходит с Wand. Это достигается путем вставки узла переменной объекта Set, отображающего текст "Общий для всех клиентов".
Совет. Переменная isMine найдена в скрипте "Взаимодействуемый текст сетки".
Включение неактивированного эффекта частиц состояния
Мы подбираем поток в группе узлов с именем Networking startMagic. Цель этой группы узлов заключается в том, чтобы включить и выключить начальный эффект частицы, который отображается на кончике Wand вкл. Мы будем называть этот эффект "искрым паром".
Изменение состояния приводит к передаче значения true для startFLowVFX в узел if .
... и это приводит к тому, что значение переменной объекта PersistentVFX также имеет значение true, которое активирует эффект vfx_wand-ethereal_persistent_02 системы частиц ("искрый пар").
Активация Wand
Предположим, что участник нажимает левую кнопку мыши (ПК) или кнопку триггера контроллера (Quest). Это называется "активация Equippable". Это приводит к изменению положения руки аватара, а в группе узлов с именем Networking isPressed ...
... щелчка обнаруживается текстом , взаимодействуемым сеткой: активируется узел. Этот узел является логическим значением по умолчанию со значением false. Нажатие кнопки изменяет значение "True", а узел "Изменен состояние" передает значение true на узел If. Это приводит к тому, что узел Set Variable устанавливает логическое значение isPressed логическое значение противоположности тому, что было раньше (поэтому теперь это "true").
Совет. Переменная isActivated найдена в скрипте "Взаимодействуемый текст сетки".
Включение эффекта частицы активированного состояния
Мы подбираем поток в группе узлов с именем "Орфография" при нажатии кнопки.
Эта группа узлов активирует эффект частиц фейерверк в конце Wand, который возникает, когда участник нажимает кнопку и активирует Wand. После возвращения Wand в его неактивированное состояние эта группа узлов возвращает первый эффект частиц ("искрый пар") обратно.
В графе значение true для isPressed* приводит к активации узла Set Variable: Object node. Этот узел задает для переменной startGlowVFX значение false.
Это снова активирует узлы в группе узлов "Сеть startMagic ". На этот раз значение false для startGlowVFX приводит к отключению эффекта частиц PersistentVFX.
Вернитесь в группу узлов для приведения орфографии. После короткого периода охлаждения звук воспроизводится, а затем другой эффект частиц активируется на кончике палочки: vfx_wand_blast_trail_spheres_01 ("фейерверки"), которое является значением переменной объекта ShootTrailVFX .
Включение неактивного эффекта частицы
После еще одного короткого периода охлаждения логическое значение startGlowVFX изменяется обратно на "true", которое превращает эффект vfx_wand_ethereal_persistent_02 системы частиц ("искрый пар") обратно в группу "Сетевой стартMagic ".
На этом этапе рука аватара возвращается в положение, в который он был до активации 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.
Это снова активирует узлы в группе узлов Networking startMagic и отключает эффект частицы --vfx_wand_ethereal_persistent_02-, который является значением переменной объекта PersistantVFX .
Рекомендации по эксперименту с скриптом
- Создайте различные эффекты, которые могут быть активированы, когда один из существующих Комплектных объектов выбирается и удерживается.
- Создайте новые комплекты, которые могут использовать некоторые из существующих эффектов. Например, некоторые типы фейерверков могут использовать эффекты "sparkle", которые в настоящее время используются Wand.
- Создайте различные эффекты и поведение для нового комплектного устройства, которое может быть активировано при удерживаемом элементе Equippable и нажатии левой кнопки мыши (ПК) или кнопки контроллера (Quest). Например, вместо Wand вы можете иметь рыболовный ружье, который вытесает заманку при нажатии кнопки.
- Подумайте о разнице между перемещением объекта вправо в его активированное состояние при выборе (например, Детализация) и наличии объекта, который начинается от неактивированного, а затем переходит в его активированное состояние после нажатия кнопки участника (например, планшет). Сделайте объекты, которые используют оба подхода.