Страница 1 из 1

Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 13 сен 2011, 15:02
theSILENT
Подскажите пожалуйста : можно ли игнорировать rigidbody в который попал рейкаст?. Проблема заключается в том , что ригидбоди перехватывает рейкаст, который предназначен для коллайдеров. Есть родительский объект с коллайдером-капсулой, и дочерние объекты с триггерными коллайдерами.Так вот когда ставлю родительский объект, без присоединенного к нему ригидбоди, в слой Ignore Raycast , то рейкаст попадает в дочерние коллайдеры, как и положено, но при добавлении к родительскому объекту ригидбоди рейкаст постоянно попадает в ригидбоди и не принимается коллайдерами. Пробовал пускать луч в отдельном слое , но тогда мои триггерные коллайдеры находящиеся в этом слое не срабатывают :-?

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 13 сен 2011, 15:40
Zaicheg
Рейкаст не реагирует на ригидбоди. Он реагирует на коллайдеры.
Посмотрите RaycastAll

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 13 сен 2011, 18:40
theSILENT
Да, я уже пробовал RaycastAll, просто пока решил отложить это, потому что там нужно будет немного усложнить нахождение нужного коллайдера, а тут просто все элементарно, только вот добавление ригидбоди картину портит, вот и думал может есть способ как то его усмирить.

P.S. Выходит коллайдер с ригидбоди будет принимать луч не зависимо от того , на каком слое находится его геймобъект?

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 13 сен 2011, 19:40
Zaicheg
theSILENT писал(а):P.S. Выходит коллайдер с ригидбоди будет принимать луч не зависимо от того , на каком слое находится его геймобъект?

Если рейкаст имеет параметр LayerMask (смотрите, чтобы вы его не поставили на место дистанции — сверяйтесь с вариантами вызова метода в справке), то зависимо. Если не имеет — независимо.

только вот добавление ригидбоди картину портит

Ригидбоди на рейкастинг не влияет.

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 13 сен 2011, 20:59
theSILENT
хмм... Еще разок) Как писал выше, только родительский объект находится в слое Ignore Raycast , его дети с коллайдерами своимим на моем пользовательском слое, рейкаст пускаю на этом самом пользовательском слое(изначально не получалось потому что прописывал просто номер слоя(8) ,вместо 1<<8, как указано в документации), при попадании выводим имя трансформа коллайдера. Так вот, без ригидбоди, на родительском объекте, все работает как часы, т е выводятся имена трансформов "детских" коллайдеров, но всего при одном изменении, т.е. при добавлении ригидбоди к родительскому объекту , рейкаст показывает только его трансформ(род. объекта). Бльше никаких изменений не делается, ни в коде, ни в слоях , нигде. Отсюда вывод: ригидбоди влияет на рейкаст?))

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 13 сен 2011, 22:03
lol
Одно не понятно. В первом посте ты всё-таки писал, что на родителе есть ещё: "родительский объект с коллайдером-капсулой".

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 13 сен 2011, 22:05
theSILENT
lol писал(а):Одно не понятно. В первом посте ты всё-таки писал, что на родителе есть ещё: "родительский объект с коллайдером-капсулой".

Все верно там есть коллайдер-капсула, что именно не понятно?

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 13 сен 2011, 22:46
theSILENT
Для проверки взял простую сферку с коллайдером и ригидбоди и поставил на слой Ignore Raycast - все работает как надо, сфера не реагирует на рейкасты.
На моем объекте - не работает , хоть убейся об стену (полная Ж)

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 14 сен 2011, 01:35
theSILENT
И вот спустя почти двое суток изнасилования своего мозга я кажется понял в чем проблема. Похоже что все дочерние коллайдеры родительского объекта ,на который вешается ригидбоди, относятся к этому ригидбоди(?), в документации , в разделе про RaycastHit, сказано, что RaycastHit.transform возвращает трансформ коллайдера ИЛИ ригидбоди к которому он относится. Так вот похоже что у меня он постоянно возвращал именно трансформ ригидбоди родительского объекта, для того чтобы получить трансформ именно коллайдера в который попали нужно было всего лишь конкретизировать какой трансформ выводить: RaycastHit.collider.transform вместо RaycastHit.transform. И получалось, как раз, что без ригидбоди ,на родительском объекте, через RaycastHit.transform выводились нужные трансформы(трансформы дочерних коллайдеров), а при добавлении ригидбоди - родительский трансформ.Потому и думал что ригидбоди хавает луч :) . Написал специально, может кому-то поможет не наступить на этиже грабли.

Re: Игнорирование Raycast-a на Rigidbody

СообщениеДобавлено: 28 июн 2019, 01:39
Susanin
theSILENT писал(а):Написал специально, может кому-то поможет не наступить на этиже грабли.


помогло