Подумайте про маніпулювання шарами під час виконання.
Увімкнення / відключення зіткнень для певних об'єктів цілими шарами
Physics.IgnoreCollision та Physics.IgnoreLayerCollision дозволяють вимкнути зіткнення між двома сутильниками та між двома шарами відповідно.
Якщо ви хочете виключити конкретний колайдер із зіткнень, для цього немає вбудованого способу. Якщо ви використовуєте некінематичні жорсткі тіла з не тригерними колайдерами, відповідь завжди буде, навіть якщо ви спробуєте відфільтрувати відповіді за тегом.
Як ми це зробили в нашому проекті, було створити шар під назвою "Порожнеча". Пустота взагалі ні з чим не стикається.
Тепер ви можете тимчасово відключити зіткнення колайдера, встановивши його шар на "Void", і повторно включити його, відновивши старий шар.
Ось суть:
int oldLayer = -1;
int voidLayer;
void Start()
{
voidLayer = LayerMask.NameToLayer("Void");
}
void DisableCollider(Collider col)
{
oldLayer = col.gameObject.layer;
col.gameObject.layer = voidLayer;
}
void EnableCollider(Collider col)
{
col.gameObject.layer = oldLayer;
}
Ми зробили це спеціально, тому що ввімкнення та вимкнення нападників, які були дітьми жорстких тіл, справді можуть викрутити справи за деяких обставин. Таким чином, ви не можете надійно відключити частину складеного жорсткого колайдера, але ви можете надійно поміняти навколо шару однієї із складених деталей колайдера.
Тепер ваша конкретна ситуація
Щоб зменшити зіткнення зомбі на ваш автомобіль, подумайте про те, щоб зробити ваших зомбі кінематичними триггерами жорстких тіл або інакше зробити їх масу дуже маленькою (як float.Epsilon), тому вплив має нульовий вплив на імпульс автомобіля. При ударі ви також можете зробити цей перемикач шару, щоб наступні зіткнення не спрацьовували, навіть якщо перше застосовує незначну силу до кузова автомобіля.
Ви навіть можете переключити їх на шар, який просто не стикається з автомобілем.
Ви також можете поставити інший колайдер на зомбі, які активізуються при перебігу. Таким чином ви можете підробити сили впливу OnTriggerEnter. Ви не можете бути настільки точними з цим, але ви можете визначити, де нормальні контакти, можливо, були достатньо хорошими, щоб кинути зомбі кудись весело.
Ви повинні запитати себе:
Я хочу, щоб я міг збити моїх автомобілів, що перебігли перебіг зомбі, чи вони просто грали в анімацію смерті?
Мені байдуже, чи на помірних впливах на швидкість та кутову швидкість автомобіля впливають зомбі?