2016-03-14 8 views
1

У меня есть 2D-игра. У меня есть игровые объекты, которые состоят из сингулярных фигур с коллайдерами, а некоторые из них сделаны из нескольких фигур и включены в пустой игровой объект, к которому я добавил персональный коллайдер. Во всех игровых объектах добавлены системы частиц, а игровые объекты в одной форме работают так, как ожидалось, и взрываются на Collision, многообразные объекты этого не делают.Поведение системы частиц по-разному для игровых объектов, состоящих из нескольких компонентов игрового объекта

Взрывы работают, как ожидается, при использовании Play On Awake и Looping для их проверки, но они не взрываются на Collision. Я попытался поставить систему частиц на одну из фигур внутри внешнего игрового объекта, а затем он показывает ошибку «Отсутствует система компонентов», пытаясь получить доступ к системе частиц для объекта x, что имеет смысл.

В каждой игре объектов C# класса У меня есть следующие методы:

private void OnCollisionEnter(Collision coll) 
{ 
    Explode(); 
} 

private void Explode() 
{ 
    var exp = GetComponent<ParticleSystem>(); 
    exp.Play(); 
    GetComponent<Renderer>().enabled = false; 
    Destroy(gameObject, exp.duration); 
} 

бомбы устанавливаются в размере 0, чтобы уйти в одном пакете.

Я пробовал поиск и не могу найти недостающую информацию, необходимую при использовании систем частиц в игровых объектах, которые состоят из нескольких форм 3D-игрового объекта.

Что мне не хватает?

ответ

0

Я разобрал это, возникло несколько проблем, возникающих из-за непонимания, что делать и создания хаков.

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

Я также удалил коллайдеры символов, так как это не было необходимо и использовались схожие коллайдеры.

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

В методе взрывается я закомментированное удалением видимости рендеринга, как это было помеха взрыва:

private void Explode() 
{ 
    var exp = GetComponent<ParticleSystem>(); 
    exp.Play(); 
    //GetComponent<Renderer>().enabled = false; 
    Destroy(gameObject, exp.duration); 
} 

Я также расширил систему частиц начинает срок службы превышает длительность. Чтобы частицы были видны при уничтожении объекта.

Я все еще нуждаюсь в настройке взрывов, но для меня это сделало огромную вмятину.