Skip to content

Latest commit

 

History

History

03_AngularJointDrive

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Создание вращаемого объекта (Angular Joint Drive, Сундук)

  • Reading Time: 10 minutes

  • Checked with: Unity 2021.3.9f1

Introduction

Данный гайд предназначен для создания вращаемого объекта на сцене. Данный объект возможно вращать вокруг оси. Примеры: дверь, крышка сундука, руль.

Let's Start

Шаг 1

Для создания крышки сундука нам потребуется создать/загрузить модель крышки сундука. Чтобы крышка не висела в воздухе - также потребуется модель нижней части сундука.

Создайте пустой объект (Main Menu -> GameObject -> Create Empty) и переименуйте в ChestExample.

Шаг 2

В объекте ChestExample создайте Cube (Main Menu -> GameObject -> 3D Object -> Cube). Измените параметры компонента Transform:

  • Position: X = 0, Y = 1, Z = 0
  • Scale: X = 1, Y = 0.05, Z = 0.5

Переименуйте в CapChest. Это крышка сундука.

Шаг 3

В объекте ChestExample создайте пустой объект и переименуйте в ChestFrame. Это остальная часть сундука.

В объекте ChestFrame разместите пять Cube и измените им следующие параметры:

Cube:

  • Position: X = 0, Y = 0, Z = 0
  • Scale: X = 1, Y = 0.05, Z = 0.5

Смените имя объекта на Bottom

Cube (1):

  • Position: X = 0.5, Y = 0.5, Z = 0
  • Scale: X = 0.05, Y = 1, Z = 0.5

Смените имя объекта на Right

Cube (2):

  • Position: X = -0.5, Y = 0.5, Z = 0
  • Scale: X = 0.05, Y = 1, Z = 0.5

Смените имя объекта на Left

Cube (3):

  • Position: X = 0, Y = 0.5, Z = -0.25
  • Scale: X = 1, Y = 1, Z = 0.05

Смените имя объекта на Front

Cube (4):

  • Position: X = 0, Y = 0.5, Z = 0.25
  • Scale: X = 1, Y = 1, Z = 0.05

Смените имя объекта на Back

Убедитесь в правильности структуры получившегося сложного объекта, сравнив с результатом на скриншоте:

Step 2

Step 2

Шаг 4

Откройте Window -> Tilia -> Interactions -> Controllable Creator.

Step 3

Данный инструмент автоматически преобразует объект в один из видов контролируемых объектов, добавляя необходимые скрипты/объекты/компоненты. Существует четыре типа:

  • Linear Joint Drive - Прямолинейное движение объекта от точки до точки. Использует физичеcкое взаимодействие Rigidbody.
  • Linear Transform Drive - Прямолинейное движение объекта от точки до точки. Kinematic.
  • Angular Joint Drive - Вращательное движение объекта вокруг оси. Использует физичеcкое взаимодействие Rigidbody.
  • Angular Transform Drive - Вращательное движение объекта вокруг оси. Kinematic.

Выберите тип Angular Joint Drive.

Выберите объект CapChest и нажмите на кнопку Convert.

Step 3

Step 3

Шаг 5

Измените параметры у компонента Angular Drive Facade объекта Interactions.AngularJointDrive_CapChest

Step 4

Параметры ниже изменяют поведение контролируемого объекта.

  • Drive Axis - Ось поворота объекта (X,Y или Z).
  • Drive Speed - Скорость поворота. Чем выше, тем меньше движений рукой надо сделать, чтобы повернуть объект.
  • Ungrabbed Drag - Трение при свободном движении.
  • Grabbed Drag - Трение при движении с захватом рукой.
  • Start At Initial Target Value - Начинать с определенного начального положения.
  • Initial Target Value - Значения начального положения (0 и 1 - крайние положения).
  • Move To Target Value - Двигать объект в определенное положение (работает только в режиме Play).
  • Target Value - Определенное положение для предыдущего параметра.(работает только в режиме Play).
  • Step Range - Разбивает на части весь путь движения объекта от мин до макс.
  • Step Increment - Трение при движении с захватом рукой.
  • Snap To Step to Release - При свободном движении не продолжает двигаться по инерции, а доходит до точек(Step), указанных в двух предыдущих параметрах.
  • Drive Limit - Ограничение поворота объекта в градусах.
  • Hinge Location - Координаты оси поворота относительно якоря объекта (Attach Point).
  • Gizmo Line Distance - Ось поворота отображается линией в редакторе. Длина оси.
  • Gizmo Sphere Radius - Размер сфер на концах оси.

Шаг 6

Получившийся объект имеет одну проблему. Так как он может физически взаимодействовать с другими объектами, то крышка взаимодействует с остальным сундуком и не может повернуться.

Чтобы решить отключить взаимодействие коллайдеров крышки и сундука, необходимо использовать готовый объект CollisionIgnorer.

Создайте объект Main Menu -> GameObject -> Tilia -> Prefabs -> Mutators -> Mutators.CollisionIgnorer.

В параметры перенесите объекты ChestFrame и Interactions.AngularJointDrive_CapChest.

Step 5

Step 5

Готово

Нажмите на Play. Переместите контроллер к крышке сундука так, чтобы ее коснуться. Зажмите ЛКМ (Left_Trigger), чтобы схватить объект левым контроллером, ПКМ (Right_Trigger) - правым. Не отпуская клавишу, отведите контроллер в сторону. Сундук открылся!

Step 5