Коллайдеры и триггеры в Unity. #16

Unity    2018-03-08 22:49:51     тег: Курс по Unity

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

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

Именно коллайдеры создают границу за которую не могут проникать другие объекты. Можете это представить себе в виде силового поля.  Визуально же коллайдер представляет собой сетку которая обтекает объект. Эта сетка может быть в форме сферы, куба или индивидуальной формы.

Коллайдер является компонентом и добавляется как обычный компонент. Чтобы его добавить к объекту, например к бочке, выберите ее на вкладке  Hierarchy, а на вкладке Inspector нажмите кнопку Add Component > Physics.

Появится список компонентов которые, принадлежат разделу Physics. В этом списке присутствуют различные формы коллайдеров.

Наиболее подходящим коллайдером для бочки по форме, является Capsule Collider. Если же у вас объект будет специфической формы - тогда необходимо использовать Mesh Collider.

Однако использование Mesh Collider рекомендуется только если нет другого выбора. Так как он достаточно энергоемкий в плане использования вычислительных ресурсов компьютера, особенно если 3D модель имеет большое количество полигонов.

Если посмотреть на меш этой бочки, то можно увидеть, что бочка имеет свыше 200 полигонов. И если к ней будет добавлен Mesh Collider, к бочке добавится еще примерно 200 полигонов, так как коллайдер будет считаться как дополнительный меш. Поэтому давайте добавим к бочке компонент Capsule Collider.

Изначально коллайдер не будет соответствовать форме бочке. Поэтому необходимо изменить его форму. Сделать это можно несколькими способами.

Первый способ - сделать это интерактивно, нажав кнопку Edit Collider. Появится сетка коллайдера, которую можно растягивать используя узловые точки осей на сетке. 

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

И каждый раз когда вы изменяете размер объекта желательно заново проверять правильность обтекания коллайдером.

Второй способ заключается в редактировании формы и размера коллайдера путем ввода значений в свойствах Center, Radius, и Height. 

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

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

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

Но у коллайдера есть еще одно замечательное свойство, которое называется триггер. Давайте добавим бочке компонент Sphere Collider, который будем использовать для обнаружения игрока в определенном радиусе от бочки.

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

Если же активирован триггер - это ограничение снимается. Где используются триггеры? Рассмотрим ситуацию в которой необходимо  взрывать бочку, когда персонаж подойдет к ней на определенное расстояние. Это расстояние регулируется размером коллайдера.

И после того как коллайдер станет триггером, он будет сообщать о том, что в его область кто-то зашел. Также триггер может проверять, не находится ли кто-то внутри него, или кто-то покинул его область.

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