Руководство по Сетке 101. Глава 4. Перемещение объектов и активация анимации с помощью интерактивных элементов сетки и физики
В этой главе вы будете работать с моделью ветряной электростанции. Вы узнаете, как использовать интерактивные объекты сетки и физику для захвата и освобождения жестких тел (в данном случае ветряных турбин) и настройки триггера анимации с помощью визуального скрипта. Вы завернете вещи, ограничивающие ветровые турбины, чтобы они могли быть перемещены только в пределах указанной области.
Эта глава немного более проста, чем то, что вы сделали в главе 3---в этом нет сценариев, и сеть настроена так, что физика будет выглядеть одинаково для всех аватаров в сеансе.
Есть несколько вещей, которые мы должны сделать, прежде чем приступить к работе с первой станцией.
Перенастройка иерархии
- В иерархии сверните GameObject Chapter3 , а затем разверните GameObject Chapter4 .
Изменение представления для отображения главы 4 Sphere Терраса
В процессе работы с Сеткой участник будет плавно переходить от конца главы 3 к началу главы 4 и будет правильно расположен для начала главы 4 учебной деятельности. Однако при выходе из режима воспроизведения в конце главы 3 вы не были автоматически помещены с представлением к модели главы 4 в окне Сцена . Давайте настроим это представление.
В иерархии выберите GameObject с именем 4.1 — Захват и выпуск.
Наведите указатель мыши на окно Сцена и нажмите клавишу F на клавиатуре.
Это центрирует представление на объекте 4.1 - Grab and Release , но, скорее всего, вы будете находиться не в нужном положении.
Перетаскивайте, поворачивайте и(или) масштабировать представление, пока перед вами не увидите станции главы 4, как показано ниже.
Станция 4.1: захват и освобождение
Цель для участника этой главы обучения состоит в том, чтобы переместить ветряные турбины из столешницы в океан. Оказавшись там, турбины будут ловить океанский ветер, заставляя их лопасти поворачиваться и генерировать энергию.
В иерархии разверните 4.1 — Захват и выпуск GameObject. Обратите внимание, что он содержит три объекта Wind Turbine GameObject, расположенные на столешнице сцены.
Давайте добавим возможности захвата и освобождения в WindTurbine1 , чтобы участники могли перемещать их в Сетке.
В иерархии выберите WindTurbine1.
В инспекторе нажмите кнопку Добавить компонент , а затем найдите и добавьте программу установки Mesh Interactable.
Совет
Объяснение этого компонента было дано в главе 3 этого руководства.
В том же компоненте щелкните раскрывающийся список Тип объекта и выберите Manipulable.
Убедитесь, что компонент активен.
В компоненте "Жесткое", при необходимости разверните параметр Ограничения, а затем для параметров Замораживание поворота выберите X,Y и Z.
Это предотвратит опрокидывание турбины, если поместить ее на неровную поверхность.
Проверка результатов своих действий
Сохраните проект и нажмите кнопку Воспроизвести в редакторе Unity.
Обратите внимание, что каждый раз, когда вы переходите в режим воспроизведения, вашей отправной точкой в окне Игры является глава 3 Sphere Терраса. Для этой главы мы хотим быть в другой террасе Sphere---в одной с функциями главы 4. К счастью, есть простой способ добраться туда.
Поворачивайте представление вправо, пока не появится окно "Перейти к главе 4 ".
Перейдите к информационному окку и нажмите кнопку Телепортироваться в главу 4 .
После того как вы прибудете в главу 4 Sphere Терраса, наведите курсор на WindTurbine1 - его форма изменится, - а затем перетащите турбину вокруг сцены.
Турбина останется вертикальной в результате включения ограничений заморозки вращения .
Нажмите кнопку Воспроизведение в редакторе Unity, чтобы выйти из режима воспроизведения.
Вам не нужно обновлять две другие ветряные турбины - мы уже сделали это для вас.
Станция: триггер анимации 4.2
Идея здесь заключается в том, что, когда вы перетаскиваете ветряную турбину над океаном, "ветер" заставляет лопасти турбины вращаться. На самом деле происходит то, что прозрачный куб с именем Триггер анимации расположен над океаном и выступает в качестве тома триггера. При перетаскивании ветряной турбины в триггерный том запускается событие On Trigger Enter , которое запускает анимацию спиннинг-лезвия.
В этой главе мы добавим скрипт в GameObject, а затем включим анимацию в скрипте.
В иерархии разверните узел GameObject 4.2 - Animation Trigger и выберите его дочерний объект с именем Animation Trigger.
Обратите внимание, что вы увидите зеленые контуры box Collider триггера анимации GameObject.
В инспекторе перейдите к компоненту Box Collider и выберите Is Trigger (Триггер).
Совет
При выборе параметра Является триггером объект, компонент коллайдера присоединяется к тому триггера.
- В иерархии перейдите к главе 4>4.1 — захват и освобождение , а затем выберите WindTurbine1.
- Нажмите кнопку Добавить компонент , а затем найдите и добавьте компьютер скриптов.
Мы хотим, чтобы наш скрипт был внедрен, но обычно это означает, что вы должны начать создание нового графа скрипта с нуля. Мы возьмем ярлык; Пока для параметра Источник оставьте значение Graph . Мы подключим существующий граф скрипта, а затем преобразуем его во внедренный граф.
Нажмите кнопку в поле Граф , а затем в окне SelectSceneGraph выберите SPWindTurbineScript.
Нажмите кнопку Преобразовать . Обратите внимание, что при этом параметр Graph удаляется, а параметр Источник изменяется на Внедрение.
Добавление анимации вращающегося лезвия в граф
Изучите граф скрипта. Он состоит из двух групп: верхняя группа запускает анимацию спиннинга лезвия, когда пользователь перетаскивает ветряную турбину в триггерный том, а нижняя группа останавливает анимацию, когда пользователь вытаскивает турбину из тома.
График почти настроен так, как мы хотим, но одна проблема остается. Два узла триггера Animator: Set имеют значение This ...
... но это (другими словами, WindTurbine1) не имеет анимации, которую мы хотим активировать. Давайте найдем его.
В иерархии разверните узел WindTurbine1 , а затем разверните дочерний объект с именем WindTurbineBody. Откроется дочерний объект с именем Windmill_Turbine_001:Propellors10.
Выберите Windmill_Turbine_001:Propellors10, а затем в инспекторе обратите внимание, что он содержит компонент аниматора с контроллером аниматора с именем WindTurbine1Propellers.
Этот аниматор будет предоставлять нашу анимацию.
Перетащите Windmill_Turbine_001:Propellors10 GameObject из иерархии , а затем в графе скрипта поместите его в первое поле узла Animator: Set Trigger , расположенного в первой группе.
Снова перетащите Windmill_Turbine_001:Propellors10 GameObject из иерархии , а затем в графе скрипта перетащите его в первое поле узла Аниматор: установка триггера , расположенного во второй группе.
Скрипт завершен.
Проверка результатов своих действий
Сохраните проект и нажмите кнопку Воспроизведения в редакторе Unity.
Как отмечалось ранее, при переходе в режим воспроизведения ваш аватар помещает ваш аватар в главу 3 Sphere Terrace. Поверните сцену вправо, а затем перейдите к кнопке Телепортировать на главу 4 и нажмите ее.
Теперь вы должны быть на террасе главы 4 Сферы. Перетащите WindTurbine1 (напоминание: это самый дальний в спине, с красными лезвиями) над океаном. Обратите внимание, что лопасти турбины в настоящее время вращаются.
Перетащите ту же турбину от океана и поместите ее обратно на столешницу. Обратите внимание, что лопасти турбины перестают вращаться.
Завершив наблюдение за анимацией, нажмите кнопку Воспроизведения в редакторе Unity, чтобы выйти из режима воспроизведения.
Вам не нужно обновлять другие ветряные турбины--- мы уже сделали это для вас.
Станция 4.3: Ограничение тел
Сейчас нет ограничений на то, где участник может уронить ветряную турбину. Мы надеемся, что они размещают турбины в океане, где они могут поймать ветер, но участник может, например, случайно упасть турбину на пол. Мы хотим избежать этого, поэтому, чтобы гарантировать, что турбины могут приземлиться только на столешнице или в океане, мы можем создать поле сдерживания. Это в основном прозрачная коробка---турбины будут ограничены внутренней стороны коробки.
В иерархии разверните 4.3 — Ограничение тела GameObject и выберите его дочерний объект с именем Containment Field.
В инспекторе нажмите кнопку Добавить компонент и добавьте компонент Поле вложения .
В компоненте Поле вложенности нажмите кнопку "+" справа от параметра Затронутые тела , а затем во всплывающем меню выберите условие Имя объекта игры .
В поле Начинается с введите WindTurbine. Так как все три ветряные турбины в нашей сцене начинаются с "WindTurbine", все они будут ограничены областью сдерживания.
Проверка результатов своих действий
Сохраните проект и нажмите кнопку Воспроизведения в редакторе Unity.
Как отмечалось ранее, при переходе в режим воспроизведения ваш аватар помещает ваш аватар в главу 3 Sphere Terrace. Поверните сцену вправо, а затем перейдите к кнопке Телепортировать на главу 4 и нажмите ее.
Теперь вы должны быть на террасе главы 4 Сферы. Перетащите одну из ветряных турбин от столешницы и океана и попытайтесь упасть его на пол. Поле вложенности не позволяет сделать это.
Глава 4. Сводка
В этой главе вы добавили функции сетки, которые позволяют участникам в вашем интерфейсе выполнять следующие действия:
Захват и перемещение объекта
Активация анимации, когда участник перетаскивает объект в том триггера
Удаление объекта только в определенной области, которую вы указали