Перемещение всех частиц от излучателя - PullRequest
3 голосов
/ 17 ноября 2011

Моя карта тайлов имеет плитку "факел". Я использую излучатель CCParticleSystemQuad для создания эффекта огня.

Излучатель является дочерним элементом карты тайла (непосредственно над плиткой факела).

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

Трудно объяснить. Просто создайте излучатель огня, поместите его как дочерний элемент карты тайла и переместите карту тайла вправо. Эффект классный, но не имеет смысла.

Есть идеи? Я хотел переместить каждую существующую частицу в эмиттере, но это не очень хорошо для производительности (у меня есть много эмиттеров с сотнями / тысячами частиц, и карта прокручивает почти каждый кадр)

1 Ответ

11 голосов
/ 17 ноября 2011

CCParticleSystem имеет свойство positionType , с помощью которого вы можете изменять поведение положения испускаемых частиц.

Перечисление определяется следующим образом:

typedef enum {
    /** Living particles are attached to the world and are unaffected by emitter repositioning. */
    kCCPositionTypeFree,

    /** Living particles are attached to the world but will follow the emitter repositioning.
     Use case: Attach an emitter to an sprite, and you want that the emitter follows the sprite.
     */
    kCCPositionTypeRelative,

    /** Living particles are attached to the emitter and are translated along with it. */
    kCCPositionTypeGrouped,
}tCCPositionType;

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

particleSystem.positionType = kCCPositionTypeRelative;
particleSystem.positionType = kCCPositionTypeGrouped;

Кстати, это одна из немногих настроек, которые нельзя изменить вИнструмент ParticleDesigner.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...