2015-02-05 7 views
0

вот мой самый первый вопрос здесь (не первое решение для поиска, хотя, D).Проблема с ParticleSystem с enableEmission

У меня проблема с ParticleSystem в Unity:

if (!dead) { 
     dieBang.enableEmission = false; 
     Vector2 newVelocity = rigidbody2D.velocity; 
     newVelocity.x = forwardMovementSpeed; 
     rigidbody2D.velocity = newVelocity; 
    } else 
     dieBang.enableEmission = true; 
    UpdateGroundedStatus(); 

Проблема заключается в том dieBang.enableEmmision получает true только тогда, когда dead состояние вызывается на объекте (лазер) я вручную «положить» в игре. Когда персонаж хиты лазер генерировал из сборных, он становится мертвым, прекратить движение и т.д., но нет dieBang: D Надеется, что вы можете помочь мне

+1

Боковое примечание: пожалуйста, убедитесь, что теги, добавленные к вашим сообщениям, являются разумными - т. Е. «Единство» для рамки инъекции DI, «unity3d» - для рамки движка игры. Я повторил этот вопрос, поскольку он вряд ли связан с DI. –

+0

Где вы создаете объект игры? – LokiSinclair

+0

@LokiSinclair, я объявил это: 'public ParticleSystem dieBang;' –

ответ

0

Трудно сказать с ограниченной информацией здесь, но у меня есть подозрение, что ваши система частиц разрушается с характером, поэтому вы никогда не увидите эффект частицы.

Либо уничтожить символ после завершения эффекта, либо создать систему частиц без родителя, чтобы она не была уничтожена случайно.

EDIT: Также стоит отметить, что если вы просто отключите персонажа, когда он попал вместо уничтожения игрового объекта, вы получите тот же эффект, потому что родитель отключен, таким образом отключив детей (т. Е. Частицу система).

+0

Я не уничтожаю персонажа, когда он умирает, на самом деле. Он просто останавливается и падает на землю. –

+0

Hmm ... Попробуйте следующее: dieBang.enableEmission = true; dieBang.Play(); –

+0

Это помогло, 'dieBang' начал emmision после того, как он запустил prefab-laser. Но я поставил его не на петлю, чтобы сделать только один «удар». Теперь он зациклен. Я думаю, это потому, что 'dieBang.Play()' находится внутри 'Fixed Update', поэтому метод' dieBang.Play() 'называется непрерывным? Есть ли способ воспроизвести его только один раз? Я действительно новичок (3 дня) с Unity, я учусь с учебником и пытаюсь применить некоторые свои модификации, p –

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

  • Нет связанных вопросов^_^