Настройка коллизий

```
***Основная статья***

```

## **Коллизия**

Файл set/colliders.set определяет как физически взаимодействуют разные категории объектов друг с другом. Формат файла:

```
{"<имя группы>" [from <имя другой группы>]
	<... параметры группы ...>
}

```

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

{colliderId "<тип объекта>"} - Задает тип объекта для этой группы

{collideWith "<тип объекта 1>" ["<тип объекта 2>" ... "<тип объекта N>"] } - Задаёт с какими типами объектов будет сталкиваться эта группа объектов при передвижении. Например: указано для людей – куст и противопехотная мина. Когда человек проходит сквозь куст, он колышется; противопехотная мина – взрывается.

{noContactsAtAll} - Не включать физику при столкновении. Например: указано для людей, чтобы они при столкновении с танком не падали на пол по физике.

{noContactWith "<тип объекта 1>" ["<тип объекта 2>" ... "<тип объекта N>"]} - Не включать физику при столкновении с указанными типами объектов. Например: танк не должен спотыкаться об выпавшую из рук солдата винтовку, мину или куст, а должен их спокойно проезжать насквозь.

```
{blocking
	{speed <скорость км/ч>} ; kmph
	{penetration <глубина контакта>} ; m
}

```

Задает возможность остановки и пробуксовывания объекта при упирании в другой объект без включения физики. Физика не включается, если скорость объекта меньше указанной и глубина контакта меньше указанной. Пример: Танк упирается в локомотив и буксует, т.к. не может его сдвинуть. Без этого параметра – танк бы бился об поезд и останавливался. И так n раз.

{rejectColliderByVolume} - Для выезда/выхода одного объекта из другого по умолчанию используется специальная упрощенная схема включения физики, которая определяет столкновения в целом по объекту (используются центры объектов и их скорости). Указание этого флага, включает другую схему, в которой каждый объём проверяется на столкновения. Например: граната, упавшая в танк не имеет права вылетать из него, даже если она в этот момент направлена в сторону от центра танка.

{pointCollider} - Используется специальная схема определения контактов, чтобы дать возможность маленькому объекту залететь в окно дома или любой другой объём с признаком “hole”. Пример: граната должна залетать в окна и отскакивать от подоконников, сделанных с помощью объёмов-дыр.

{useRamVolume "<тип объекта 1>" ["<тип объекта 2>" ... "<тип объекта N>"] } - Используется для сложных объектов, чтобы при столкновениях и толкании других объектов использовался упрощенный объём. Для всех остальных типов объектов расчет контактов будет производиться по обычной схеме. Например: танки для толкания других танков определяют контакты по упрощенному объёму с названием “ram”.

{canPush "<тип объекта 1>" ["<тип объекта 2>" ... "<тип объекта N>"] } - Указывает, что объект может толкать перед собой объекты указанного типа при движении. Например: танк толкает перед собой мотоцикл.

{canPushBroken "<тип объекта 1>" ["<тип объекта 2>" ... "<тип объекта N>"] } - Указывает, что объект может толкать перед собой объекты указанного типа, если они сломаны, при движении. Например: танк толкает перед собой другой разбитый танк. Сделано, чтобы убитый в узком проходе танк не запер его собой.