Есть летящий вперед объект, у него на пути есть допустим куб. У куба есть коллайдер, у летящего объекта есть ригидбоди. На куб вешаем скрипт:
Синтаксис:
Используется csharp
public class Enemy_cube : MonoBehaviour
{
public string targetToCollide = "object";
public string targetToDestroy = "object";
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == targetToCollide)
{
print ("Collision detected");
GameObject Object = GameObject.Find(targetToDestroy);
Destroy(Object);
}
}
}
{
public string targetToCollide = "object";
public string targetToDestroy = "object";
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == targetToCollide)
{
print ("Collision detected");
GameObject Object = GameObject.Find(targetToDestroy);
Destroy(Object);
}
}
}
Результат - ничего не происходит. Летящий объект пролетает сквозь куб, скрипт ничего не детектит.
Далее вешаем на куб ригидбоди. В этом случае все ок, летящий объект врезается в куб и уничтожается, консоль сообщает о столкновении.
Все бы ничего, но куб согласно законам физики от толчка двигается на некоторое расстояние. Мне же нужно, чтобы объект, о который ударился летящий объект не в коем случае не двигался. Настройки ригид боди перековырял на обоих объектах, проблему это не решило.
Вопросы:
1. Можно ли вобще обойтись без ригидбоди и заставить детектить коллизии, если у двух объектов просто есть коллайдеры зданной формы (теже боксы к примеру)?
2. Можно ли запретить ригидбоди двигать объект не смотря ни на что? Есть кнопка "Freeze rotation", но необходма аналогичная функция в духе "Freeze move".
Я вобще думал, что можно просто детектить пересечения коллизий и совершать какое-либо действие в скрипте, но удалось это своершить только с ригидбоди, что меня несколько сбило с толку.
Прошу совета старших товарищей.