使用CCParticleSystemQuad作为子节点旋转CCSprite

时间:2012-12-20 22:03:43

标签: cocos2d-iphone rotation ccsprite ccparticlesystem

我有CCSprite可以在iPhone的屏幕上反弹。这个精灵有一个CCParticleSystemQuad作为子节点。粒子只是小而简单的圆圈,落在移动的精灵后面。一切正常,直到精灵因与屏幕边缘碰撞而旋转。当发生这种情况时,现有的粒子会突然在一个奇怪的位置被吸引。

知道为什么会这样吗?

到目前为止,我尝试过一些事情。首先,我尝试了粒子系统的所有三个positionType值。这些都没有解决旋转问题。实际轮换是使用CCRotateTo完成的。删除此操作可修复粒子位置问题。因此,在CCSprite上轮换CCLayer子节点可能会取代我当前的CCSprite。我尝试通过http://www.cocos2d-iphone.org/forum/topic/63951阅读,但这有点过头了。任何反馈和建议都非常感谢!

编辑#1 我找到了一个快速解决方法:在CCRotateTo之前,我将尾随粒子告诉resetSystem。但是我仍然想了解奇怪绘画行为的原因。

1 个答案:

答案 0 :(得分:1)

我认为这是因为CCParticleSystem是CCSprite的子代,所以你在sprite上做的任何位置或旋转都会影响正在和已经发出的所有粒子的行为。因此,如果你有一些仍然在屏幕上停留的尾随粒子,它们仍然是CCSprite的子粒子,旋转它将导致所有延迟粒子围绕精灵的当前位置旋转。

如果要消除此效果,可以将CCParticleSystem添加到图层,这样它就不会受到CCSprite旋转的影响。这种方法的缺点是你必须添加代码才能让CCParticleSystem跟踪CCSprite的位置,因为它不再是CCSprite的子代。那应该很容易做到。