это компонент, применяемый для придания игровому объекту физического поведения. Объект столкновения обладает физическими свойствами и формой в пространстве.
Объекты столкновения
Объект столкновения — это компонент, применяемый для придания игровому объекту физического поведения. Объект столкновения обладает физическими свойствами, такими, как вес, трение и форма, при этом его пространственные пределы задаются одной или несколькими формами, которые присоединяются к компоненту. Defold поддерживает следующие типы объектов столкновений:
- Статические объекты
- Статические объекты никогда не двигаются, однако динамический объект, столкнувшийся со статическим объектом отреагирует отпрыгиванием и/или проскальзыванием. Статические объекты весьма полезны для выстраивания неподвижной геометрии уровней (то есть земли и стен). Также они дешевле чем динамические объекты с точки зрения производительности. Невозможно перемещать или как-либо изменять статические объекты.
- Динамические объекты
- Динамические объекты симулируются физическим движком. Движок определяет все столкновения и применяет результирующие силы. Динамические объекты хорошо подходят для объектов, которые должны вести себя реалистично. Чаще всего на них воздействуют косвенно: прикладывая силы или изменяя угловое затухание и скорость, а также линейное затухание и угловую скорость. Также можно напрямую изменять позицию и ориентацию динамического объекта, если в game.project включена настройка Allow Dynamic Transforms.
- Кинематические объекты
- Кинематические объекты только регистрируют столкновения с другими физическими объектами, но физический движок не производит никаких автоматических симуляций. Решение о разрешении столкновений, либо их игнорировании, остается за вами (узнайте больше). Кинематические объекты весьма хороши для игрового персонажа или для объектов, управляемых скриптами, которые требуют тонкого контроля над физическими реакциями, как например игровой персонаж.
- Триггеры
- Триггеры — это объекты, которые регистрируют простые столкновения. Триггеры — это облегченные версии объектов столкновения. Они похожи на рейкасты в том смысле, что считывают состояние физического мира, а не взаимодействуют с ним. Они хорошо подходят для объектов, которым нужно только зарегистрировать попадание (например, пуле), а также для игровой логики, где нужно запускать особые действия, когда объект достигает определенной точки. Триггеры вычислительно дешевле, чем кинематические объекты, и по возможности их стоит предпочитать.
Добавление компонента Collision Object
Объект столкновений обладает набором свойств, которые определяют его тип и физические параметры. Также он содержит одну или более форм, которые всецело задают форму физического объекта.
Для добавления объекта столкновения в игровой объект:
- В представлении Outline сделайте клик ПКМ на игровом объекте и выберите Add Component ▸ Collision Object из контекстного меню. Это создаст новый компонент без какой-либо формы.
- Сделайте клик ПКМ на новом компонент и выберите Add Shape ▸ Box / Capsule / Sphere. Это добавит новую форму к компоненту Collision Object. Можно добавить любое количество форм компоненту. Также можно использовать тайловую карту или выпуклую оболочку (convex hull) для задания формы физического объекта.
- Используйте инструменты перемещения, поворота и масштабирования для редактирования форм.
- Выберите компонент в представлении Outline и отредактируйте свойства объекта столкновения.

Добавление формы столкновения
Объект столкновения может либо использовать несколько геометрических примитивов в качестве формы либо одну сложную форму. За подробностями о различных формах и о том, как их добавлять к объекту столкновения, обращайтесь к руководству по формам столкновений.
Свойства объекта столкновения
- Id
- Идентификатор компонента.
- Collision Shape
- Это свойство используется для геометрии из тайловой карты или выпуклых форм, не задействуя геометрические примитивы. За подробностями обращайтесь к руководству по формам столкновения.
- Type
- Тип объекта столкновений:
Dynamic, Kinematic, Static или Trigger. Если объект выставлен как динамический, необходимо установить свойство Mass в ненулевое значение. Для динамических или статических объектов также требуется проверить, что значения Friction и Restitution также выставлены в приемлемые значения под используемый сценарий.
- Friction
- Трение позволяет объектам скользить реалистично относительно друг друга. Значение трения обычно выставляется между
0 (совсем нет трения — очень скользящий объект) и 1 (сильное трение — абразивный объект). Однако, любое положительное значение будет валидны.
Сила трения пропорциональна нормальной силе (normal force; это называется кулоновским трением). Когда сила трения вычисляется между двумя формами (A и B), значения трения обоих объектов комбинируются в геометрическое среднее:
F = sqrt( F_A * F_B )
Это означает, что если один из объектов имеет нулевое трение, то контакт между ними будет иметь нулевое трение.
- Restitution
- Значение реституции задает “прыгучесть” объекта. Значение варьируется как правило между 0 (неэластичное столкновение — объект вообще не отскакивает) и 1 (идеальное эластичное столкновение — скорость объекта будет целиком отражена в отскакивании)
Значения реституции между двумя формами (A и B) комбинируются по следующей формуле:
R = max( R_A, R_B )
Когда форма имеет множественные контакты, реституция симулируется аппроксимировано, потому что Box2D использует пошаговый решатель. Также Box2D использует неэластичные столкновения когда скорость столкновения мала, чтобы исключить дрожание отскока.
- Linear damping
- Линейное затухание сокращает линейную скорость тела. Оно отличается от трения, которое возникает только во время контакта, и может применяться, чтобы придать объектам плавное поведение, будто они движутся через что-то более плотное чем просто воздух. Валидные значения находятся в диапазоне от 0 до 1.
Box2D аппроксимирует затухание для стабильности и производительности. На маленьких значениях, эффект затухания не зависит от временного шага, в то время, как на больших значениях, эффект затухания варьируется с временным шагом. Если вы запускаете свою игру с фиксированным временным шагом, никаких проблем возникнуть не должно.
- Angular damping
- Угловое затухание работает также как и линейное затухание, но оно сокращает угловую скорость тела. Валидные значения находятся в диапазоне от 0 до 1.
- Locked rotation
- Выставление этого свойства полностью выключает вращение на объекте столкновения, не важно, какие силы применяются к нему.
- Bullet
- Установка этого свойства включает непрерывное обнаружение столкновений (CCD) между этим объектом столкновения и другими динамическими объектами столкновений. Свойство Bullet игнорируется, если тип объекта не установлен как
Dynamic.
- Group
- Имя группы столкновения, к которому должен принадлежать объект. Можно иметь 16 разных групп и можно именовать их под свои нужды в игре. К примеру, “players”, “bullets”, “enemies” и “world”. Если для формы столкновения задана тайловая карта, это поле не используется, а имена групп берутся из источника тайлов. Подробнее о группах столкновения.
- Mask
- Другие группы, с которыми должен сталкиваться данный объект. Можно назвать одну группу или задать множество групп, разделяя их в списке запятой. Если оставить поле Mask пустым, объект не будет ни с чем иметь столкновений. Подробнее о группах столкновения.
- Generate Collision Events
- Если включено, объект будет отправлять события столкновения.
- Generate Contact Events
- Если включено, объект будет отправлять события контакта.
- Generate Trigger Events
- Если включено, объект будет отправлять события триггера.
Свойства, доступные в среде исполнения
Физический объект имеет различные свойства, которые могут быть считаны и изменены посредством go.get() и go.set():
angular_damping
- Значение углового затухания для объекта столкновения (
number). Справочник API.
angular_velocity
- Текущая угловая скорость объекта столкновения (
vector3). Справочник API.
linear_damping
- Значение линейного затухания для объекта столкновения (
number). Справочник API.
linear_velocity
- Текущая линейная скорость объекта столкновения (
vector3). Справочник API.
mass
- Определенная физическая масса объекта столкновения (
number). Справочник API.