Столкновения в Unity отделены от самого Sprite, прикреплены как отдельные компоненты и рассчитываются самостоятельно. Давайте теперь узнаем причину этого.
Все в вашей игре — GameObject. Даже отдельные плитки, которые составляют ваш уровень, сами по себе являются объектами GameObject.
Когда мы рассматриваем каждый компонент как GameObject, мы понимаем, что в сцене могут быть тысячи GameObjects, которые каким-то образом взаимодействуют друг с другом. Вы можете себе представить, что если бы Unity добавляла коллизии к каждому GameObject, для движка было бы нецелесообразно рассчитывать коллизии для каждого из них.
Мы продолжим и добавим простую «стену», с которой может столкнуться наш персонаж. Для этого создайте еще один спрайт и увеличьте его, используя инструмент Rect. Мы также дадим ему красный цвет через свойство Color в компоненте Sprite Renderer.
Теперь перейдите к Add Component в Инспекторе и введите «Box Collider 2D». Нажмите на первый компонент, который появляется, и должен появиться новый компонент.
Вы увидите ярко-зеленую линию по периметру вашего GameObject. Это граница столкновения . Это то, что определяет фактическую форму встречных объектов.
Повторите то же самое с нашим подвижным GameObject.
Конечно, коллизии в Unity не ограничиваются просто боксами. Они могут иметь различные формы и размеры и не обязательно являются точными копиями параметров объекта.
Они также могут принимать многоугольные формы.
Нередко разработчики и дизайнеры используют приблизительные формы на границах столкновений, чтобы упростить коллайдеры и избежать ненужных вычислений для двигателя. Скоро мы научимся создавать различные формы и размеры с помощью наших коллайдеров.
Теперь, когда у нас есть границы столкновений, нажмите play и посмотрите на них в действии.
Вы заметите, что наш подвижный объект не ведет себя нормально. Мы обсудим поведение объекта в нашей следующей главе.