Collision Почему-то не срабатывает OnTriggerEnter

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Collision Почему-то не срабатывает OnTriggerEnter

Сообщение mr.Wolfram 27 сен 2012, 18:33

Приветствую.
Есть вроде бы несложная задача, но ни как ее не разрулить... Попробую объяснить суть проблемы.
Что имеем:
1. Есть группа объектов, которые можно перетаскивать мышкой. На каждом таком объекте висит коллайдер. Этот коллайдер в первую очередь использеутся для определения того, что мы тыкнулись в объект мышкой. И еще для определения взаимодействия с коллайдерами из п.2 На эти объекты повешен скрипт с OnTriggerEnter (и с остальными событиями, на всякий случай... чтобы хоть какое-нибудь событие сгенерилось, пока это не важно - не срабатывает ни одно из них)
2. Есть коллайдеры, которые расставлены в сцене, их задача сгенерить событие "Объект перетащен в некоторую заданную точку". Эти вспомогательные коллайдеры в этих самых точках и расположены. Размеры вспомогательных коллайдеров такие, что объект не может одновременно взаимодействовать больше чем с одним таким коллайдером. Изначально объекты, которые можно таскать мышкой расположены тоже в этих точках. Т.е. вспомогательные коллайдеры находятся внутри объектов.
3. Объекты и вспомогательные коллайдеры находятся в разных слоях. После того, как объект выделен и началось его перетаскивание, он помещается в слой к вспомогательным коллайдерам.
4. Все коллайдеры (те что на объектах, и вспомогательные) - Is trigger. Пробовал любые комбинации.
Проблема в том, что при перетаскивании объекта не генерится ни одно их событий (OnTriggerEnter, OnTriggerStay,... OnCollisionEnter и т.д.) Коллайдеры совершенно точно пересекаются.
Вот как-то так. :-\

[Add]: Все это нужно для того, чтобы объект после того как его перетащили не остался там где его бросили, а с анимацией переместился в ближайшую точку. Что-то типа привязки к сетке чтоб получилось.
mr.Wolfram
UNец
 
Сообщения: 41
Зарегистрирован: 03 янв 2012, 15:01

Re: Collision Почему-то не срабатывает OnTriggerEnter

Сообщение Zaicheg 27 сен 2012, 18:40

Возможно, оба объекта являются Static Trigger Collider. Поэтому сообщения не генерируются.
Здесь есть табличка взаимодействия различных типов коллайдеров:
http://docs.unity3d.com/Documentation/M ... ysics.html
Изображение
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Collision Почему-то не срабатывает OnTriggerEnter

Сообщение mr.Wolfram 27 сен 2012, 18:46

Zaicheg
Спасибо, гляну.

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

[Add] Да, события стали генерится. Но сейчас постоянно все объекты генерят событие OnTriggerStay Из-за того что объекты и вспомогательные коллайдеры расположены в одних и тех же точках.

[Add2]: Как-то можно сделать, что бы было взаимодействие только тех коллайдеров, которые расположены в одном слое?
mr.Wolfram
UNец
 
Сообщения: 41
Зарегистрирован: 03 янв 2012, 15:01

Re: Collision Почему-то не срабатывает OnTriggerEnter

Сообщение mr.Wolfram 05 окт 2012, 01:07

Почему-то не всегда генерятся события. Пример сцены:
Несколько сфер, одну из них можно таскать мышкой. При контакте перетаскиваемой сферы с одной из статичных, генерятся события. OnTriggerEnter генерится достаточно стабильно, а вот OnTriggerExit иногда не срабатывает. OnTriggerExit достаточно уверено генерится только при очень медленном перетаскивании сферы. Timestep крутил. В чем могут быть грабли?
mr.Wolfram
UNец
 
Сообщения: 41
Зарегистрирован: 03 янв 2012, 15:01

Re: Collision Почему-то не срабатывает OnTriggerEnter

Сообщение trololoid 05 окт 2012, 01:31

Сделай свои энтер и эксит использованием OnCollisionStay. При первом входе в функцию - вызываем что-то, потом проверяем раз в 5-10-20 кадров находимся мы внутри или нет, если нет - вызываем аля эксит.
EDIT1: Имел ввиду триггерСтей
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия


Вернуться в Почемучка

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

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