--- title: Формы столкновения brief: Объект столкновения может использовать несколько геометрических примитивов в качестве формы или одну сложную форму. --- # Формы столкновения Объект столкновения может использовать несколько геометрических примитивов в качестве формы или одну сложную форму. ### Примитивные формы Примитивные формы --- это *Box*, *Sphere* и *Capsule*. Добавить примитивную форму можно выполнив клик ПКМ на объекте столкновения и выбрав Add Shape: ![Add a primitive shape](images/physics/add_shape.png) ## Форма Box У бокса есть позиция, вращение и размеры (ширина, высота и глубина): ![Box shape](images/physics/box.png) ## Форма Sphere У сферы есть позиция, вращение и диаметр: ![Sphere shape](images/physics/sphere.png) ## Форма Capsule У капсулы есть позиция, вращение, диаметр и высота: ![Sphere shape](images/physics/capsule.png) ::: important Форма капсулы поддерживается только при использовании 3D физики (настраивается в секции Physics файла *game.project*). ::: ### Комплексные формы Сложная форма может быть создана либо из компонента тайловой карты либо из выпуклой формы. ## Форма столкновения из тайловой карты В Defold встроена функция, позволяющая легко генерировать физические формы для источника тайлов, используемого тайловой картой. [Руководство по источникам тайлов](/manuals/tilesource/#tile-source-collision-shapes) объясняет как добавлять группы столкновений в источник тайлов и назначать тайлы группе столкновений ([пример](/examples/tilemap/collisions/)). Чтобы добавить столкновение к тайловой карте: 1. Добавьте тайловую карту игровому объекту кликнув ПКМ на игровом объекте и выбрав Add Component File. Выберите файл тайловой карты. 2. Добавьте объект столкновения кликнув ПКМ на игровом объекте и выбрав Add Component ▸ Collision Object. 3. Вместо добавления форм компоненту столкновений, задайте в качестве значения свойства *Collision Shape* файл *тайловой карты* 4. Как обычно, задайте *свойства* объекта столкновения. ![Tilesource collision](images/physics/collision_tilemap.png){srcset="images/physics/collision_tilemap@2x.png 2x"} ::: important Учтите, что свойство *Group* **не** учитывается в таком случае, так как группы столкновений задаются в источнике тайлов соответствующей тайловой карты. ::: ## Выпуклые формы В Defold встроена функция, позволяющая вам создавать выпуклые формы из трех или более точек. Можно воспользоваться внешним инструментом, таким как [Defold Polygon Editor](/assets/defoldpolygoneditor/) или [Physics Body Editor](/assets/physicsbodyeditor/) для создания выпуклых форм. 1. Создайте файл выпуклой формы (расширение файла `.convexshape`) используя внешний редактор. 2. Вместо добавления форм к объекту столкновений, в качестве значения свойства *Collision Shape* укажите файл *выпуклой формы*. ::: sidenote Форма не будет отрисована в редакторе. Можно [включить отладку физики](/manuals/debugging/#debugging-problems-with-physics) во время выполнения игры, чтобы видеть формы. ::: # Масштабирование форм столкновения Объект столкновения и его формы наследуют масштаб игрового объекта. Чтобы отключить это поведение, отключите опция [Allow Dynamic Transforms](/manuals/project-settings/#allow-dynamic-transforms) в секции Physics файла *game.project*. Учтите, что поддерживается только равномерное масштабирование, а также то, что будет применено наименьшее значение масштабирования, если было задано не равномерное масштабирование. # Вращение форм столкновения ## Вращение форм столкновения в 3D физике Формы столкновения в 3D-физике могут поворачиваться вокруг всех осей. ## Вращение форм столкновения в 2D физике Формы столкновения в 2D физике могут поворачиваться только вокруг оси z. Вращение вокруг осей X или Y выльется в некорректные результаты и его стоит избегать, даже когда происходит вращение на 180 градусов для фактически переворота формы вокруг оси X или Y. Для переворота физической формы рекомендуется использовать [`physics.set_hlip(url, flip)`](/ref/stable/physics/?#physics.set_hflip:url-flip) и [`physics.set_vlip(url, flip)`](/ref/stable/physics/?#physics.set_vflip:url-flip).