Вращение CCSprite с CCParticleSystemQuad в качестве дочернего узла

У меня есть CCSprite это может подпрыгнуть вокруг экрана iPhone. Этот спрайт имеет CCParticleSystemQuad как дочерний узел. Частицы - это просто маленькие, простые круги, которые следуют за движущимся спрайтом. Все работает нормально, пока спрайт не вращается из-за столкновения с краем экрана. Когда это происходит, существующие частицы внезапно оказываются в странном месте.

Есть идеи, почему это происходит?

Я попробовал несколько вещей до сих пор. Сначала я попробовал все три positionType значения для системы частиц. Ни один из них не устранил проблему вращения. Фактическое вращение сделано с CCRotateTo, Удаление этого действия устраняет проблему с расположением частиц. Так что возможно вращение CCSprite дочерний узел на CCLayer может заменить мой текущий CCSprite, Я попытался прочитать через http://www.cocos2d-iphone.org/forum/topic/63951 но это немного над моей головой. Любые отзывы и предложения приветствуются!

Правка № 1 Я нашел быстрое решение: непосредственно перед CCRotateTo Я говорю висячие частицы resetSystem, Однако я все еще хотел бы понять причину странного поведения рисунка.

1 ответ

Решение

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

Если вы хотите устранить этот эффект, вы можете добавить CCParticleSystem к слою, чтобы он не зависел от вращения CCSprite. Недостатком этого подхода является то, что вам придется добавить код, чтобы CCParticleSystem отслеживала положение CCSprite, поскольку он больше не является дочерним для CCSprite. Это должно быть довольно легко сделать однако.

Другие вопросы по тегам