2014-10-10 4 views
0

У меня есть спрайт в моей сцене, и внутри этого спрайта есть эмиттер частиц. Поэтому, когда я перемещаю спрайт (используя действие MoveTo), я могу видеть движущуюся анимацию как для спрайта, так и для излучателя частиц. На анимацию MoveTo не влияли старые частицы (которые были выпущены до начала анимации), и я вижу что-то вроде хвоста, как из кометы. Так что все в порядке. Теперь, если я создам действие перемещения для спрайта и переместите его, скажем, на 100 пикселей вверх и сделайте действие с 100 пикселями вниз для эмиттера, тогда эмиттер будет перемещаться на 100 пикселей относительно спрайта, но останется неподвижным относительно экрана и не будет эффекта «кометного хвоста». Таким образом, это означает, что испускаемые частицы не принадлежат к спрайту, а что-то еще.Движущийся (кометный хвост) эффект излучателя частиц без фактического перемещения

Итак, мой вопрос: как я могу сделать движение «эффект кометы» без фактического перемещения относительно экрана? Или представьте, у меня есть слой с излучателем солнца. И в какой-то момент я решит переместить этот слой (прокрутить его), и мой солнечный излучатель также прокрутит слой, но старые испущенные частицы сделают эффект «кометного хвоста», потому что они не принадлежат слою, а что-то остальное. Как можно перемещать эту сцену без эффекта «кометного хвоста»?

Спасибо!

ответ

1

Итак, вот типы установки, указанные двигатель частиц Cocos2D в:

  • БЕСПЛАТНЫЕ
    Живые частицы прикреплены к миру и не подвержены влиянию эмиттера репозиционирования.
  • ОТНОСИТЕЛЬНО
    Живые частицы прикреплены к миру, но будут следовать за изменением эмиттера. Use case: Прикрепите излучатель к спрайту, и вы хотите, чтобы эмиттер следовал за спрайтом.
  • GROUPED
    Живые частицы прикреплены к эмиттеру и переводятся вместе с ним.

Если вы не хотите, чтобы частицы перемещались относительно мира, вам нужно либо ОТНОСИТЬСЯ, либо GROUPED.

Если вы хотите, чтобы частицы образовывали след, вам нужно БЕСПЛАТНО.

emitter->setPositionType(_posType); 

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

+0

Мне не нужна гравитация. Я хочу указать относительную родительскую систему частиц (а не только эмиттер). Как я могу перемещать сцену с эмиттером частиц и избегать эффекта кометного хвоста с помощью силы тяжести? – Tutankhamen

+0

обновил мой ответ. Если я все еще не в тему, отправьте код, чтобы объяснить проблему. –

+0

почти там ... У меня есть слой и эмиттер как ребенок этого слоя. Итак, теперь я хочу переместить слой на 100 пикселей и переместить излучатель на 100 пикселей, так что он должен сделать эффект, как фон движется, но эмиттер не является. И мне нужен эффект хвоста в этом сценарии. По умолчанию я не вижу никакого хвоста, потому что он похож на живые частицы, привязанные к мировым координатам ... – Tutankhamen