2015-06-06 5 views
1

У меня есть сколь угодно большое количество вещей, снимающих системы частиц друг с другом. Я хочу, чтобы частицы попали в цели, но не были объектами происхождения. Можно ли как:Избегание столкновения частиц и коллайдера в Unity

  • Использование IgnoreCollision между ParticleSystem и коллайдером

  • Определить новые слои коллизий во время выполнения

Или есть какой-то хитрый способ решения этой гавани I Не считали?

ответ

0

Вы должны проверить, совпадает ли объект, с которым вы сталкиваетесь, с исходным объектом, поэтому назначьте исходный игровой объект исходной переменной этого скрипта с помощью инспектора, а затем в режиме проверки на столкновение, если объект, на который вы попали, является то же самое, если это не так, то вы не нападающим происхождения

Public GameObject origin; 
void OnParticleCollision(GameObject other) {   
    if(other.GetInstanceID() != origin.GetInstanceID()) 
     DoSomething(); 
       } 
+0

Хотя это работает для некоторых случаев, OnParticleCollision вызывается только после того, как происходит фактическое физическое столкновение и подпрыгивать, что делает невозможным огонь из объект, так как он никогда не достигает адресата –

+0

, вы говорите, что теперь вы проверяете наличие коллизий в коде, и ваша проблема игнорирует его в некоторых случаях, поэтому, как вы проверяете коллизии кода –

+0

Я использую OnParticleCollision для логики игры. :) Но физическая обработка столкновения - независимо от того, проходят ли какие-то другие вещи - является частью Единства, и я не знаю, как влиять на это из моего кода. –

Смежные вопросы