Обнаружение коллизий без ригидбоди. [РЕШЕНО]

Программирование на Юнити.

Обнаружение коллизий без ригидбоди. [РЕШЕНО]

Сообщение Summerscream 11 фев 2011, 19:59

Друзья, есть проблема.
Есть летящий вперед объект, у него на пути есть допустим куб. У куба есть коллайдер, у летящего объекта есть ригидбоди. На куб вешаем скрипт:
Синтаксис:
Используется 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);
        }
     }
}


Результат - ничего не происходит. Летящий объект пролетает сквозь куб, скрипт ничего не детектит.
Далее вешаем на куб ригидбоди. В этом случае все ок, летящий объект врезается в куб и уничтожается, консоль сообщает о столкновении.
Все бы ничего, но куб согласно законам физики от толчка двигается на некоторое расстояние. Мне же нужно, чтобы объект, о который ударился летящий объект не в коем случае не двигался. Настройки ригид боди перековырял на обоих объектах, проблему это не решило.

Вопросы:
1. Можно ли вобще обойтись без ригидбоди и заставить детектить коллизии, если у двух объектов просто есть коллайдеры зданной формы (теже боксы к примеру)?
2. Можно ли запретить ригидбоди двигать объект не смотря ни на что? Есть кнопка "Freeze rotation", но необходма аналогичная функция в духе "Freeze move".

Я вобще думал, что можно просто детектить пересечения коллизий и совершать какое-либо действие в скрипте, но удалось это своершить только с ригидбоди, что меня несколько сбило с толку.

Прошу совета старших товарищей.
Последний раз редактировалось Summerscream 13 мар 2011, 01:07, всего редактировалось 1 раз.
Summerscream
UNIт
 
Сообщения: 62
Зарегистрирован: 01 фев 2011, 00:34
Откуда: msc

Re: Обнаружение коллизий без ригидбоди.

Сообщение Zaicheg 11 фев 2011, 20:05

1. Флаг Rigidbody.isKinematic
2. В справке ищем раздел по коллайдерам -- там есть таблица взаимодействий разных типов физ. объектов
3. Обнаружение коллизий через Physics.Raycast вместо различных OnCollision и их последующая обработка
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Обнаружение коллизий без ригидбоди.

Сообщение Summerscream 16 фев 2011, 01:48

Флаг Rigidbody.isKinematic

Спасибо, что-то натупил я изначально видать. Вобщем, когда флаги Rigidbody.isKinematic у обоих участников столкновения убраны, то в результате столкновения объект в который врезались не двигается. Правда помимо этого у того объекта, что не должен сдвинуться Mass и Drag надо выставить побольше.
Summerscream
UNIт
 
Сообщения: 62
Зарегистрирован: 01 фев 2011, 00:34
Откуда: msc


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 7