Форма коллайдера: box, sphere, capsule, cylinder, cone, mesh, compound

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

Box Collider

Box Collider представляет собой прямоугольную коробку, которая используется для столкновений с объектами, имеющими форму прямоугольного параллелепипеда. Эта форма является одной из самых популярных из-за своей простоты и эффективности. Box Collider идеально подходит для объектов, имеющих прямые углы и плоские поверхности.

Основные параметры:

  • Размеры (width, height, depth) — задают размеры коробки по осям X, Y и Z.
  • Центр (center) — указывает смещение центра коллайдера относительно центра объекта.

Пример использования:

var boxCollider = new pc.ColliderComponent({
    type: pc.ColliderType.BOX,
    halfExtents: new pc.Vec3(1, 1, 1)  // размеры коробки
});

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

Sphere Collider

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

Основные параметры:

  • Радиус (radius) — радиус сферы.
  • Центр (center) — положение центра сферы относительно объекта.

Пример использования:

var sphereCollider = new pc.ColliderComponent({
    type: pc.ColliderType.SPHERE,
    radius: 1  // радиус сферы
});

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

Capsule Collider

Capsule Collider представляет собой цилиндр, с полусферами на обоих концах. Это коллайдер, который лучше всего подходит для объектов, напоминающих персонажей или людей, таких как человеческие фигуры, персонажи в играх, а также для некоторых типов оружия.

Основные параметры:

  • Радиус (radius) — радиус полусфер.
  • Высота (height) — высота цилиндрической части капсулы.
  • Центр (center) — смещение капсулы относительно объекта.

Пример использования:

var capsuleCollider = new pc.ColliderComponent({
    type: pc.ColliderType.CAPSULE,
    radius: 0.5,  // радиус полусфер
    height: 2     // высота цилиндра
});

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

Cylinder Collider

Cylinder Collider представляет собой чистый цилиндр. Этот тип коллайдера удобен для объектов с симметричной круглой основой и вертикальным или горизонтальным направлением. Применяется для различных труб, колонн, столбов и других объектов с цилиндрической формой.

Основные параметры:

  • Радиус (radius) — радиус основания цилиндра.
  • Высота (height) — высота цилиндра.
  • Центр (center) — смещение цилиндра относительно объекта.

Пример использования:

var cylinderCollider = new pc.ColliderComponent({
    type: pc.ColliderType.CYLINDER,
    radius: 0.5,
    height: 3
});

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

Cone Collider

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

Основные параметры:

  • Радиус основания (radius) — радиус основания конуса.
  • Высота (height) — высота конуса.
  • Центр (center) — положение центра конуса относительно объекта.

Пример использования:

var coneCollider = new pc.ColliderComponent({
    type: pc.ColliderType.CONE,
    radius: 0.5,
    height: 2
});

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

Mesh Collider

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

Основные параметры:

  • Меш (mesh) — 3D-модель, которая будет использоваться для определения столкновений.
  • Оптимизация (optimized) — флаг, который указывает, должен ли коллайдер быть оптимизирован для повышения производительности.

Пример использования:

var meshCollider = new pc.ColliderComponent({
    type: pc.ColliderType.MESH,
    mesh: myMesh,  // ссылка на 3D-модель
    optimized: true
});

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

Compound Collider

Compound Collider представляет собой комбинацию нескольких простых коллайдеров, объединённых в единую структуру. Этот тип используется для объектов, которые невозможно описать одним коллайдером (например, для сложных объектов с несколькими частями). Каждая часть объекта может иметь свой собственный коллайдер, и их можно комбинировать для достижения точных столкновений.

Основные параметры:

  • Коллайдеры (colliders) — массив из нескольких коллайдеров (например, коробки, сферы, капсулы), которые комбинируются в единое целое.
  • Трансформации (transforms) — параметры смещения и поворота для каждого отдельного коллайдера.

Пример использования:

var compoundCollider = new pc.ColliderComponent({
    type: pc.ColliderType.COMPOUND,
    colliders: [
        { type: pc.ColliderType.BOX, halfExtents: new pc.Vec3(1, 1, 1) },
        { type: pc.ColliderType.SPHERE, radius: 0.5 }
    ]
});

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

Заключение

Разнообразие форм коллайдеров в PlayCanvas предоставляет широкие возможности для реализации различных типов физических взаимодействий. От простых прямоугольных и круглых объектов до более сложных форм с помощью Mesh и Compound коллайдеров. Выбор подходящего коллайдера зависит от типа объекта и его геометрии, а также от требований к производительности в игровом движке.