从发射器移动所有粒子

时间:2011-11-17 13:21:39

标签: cocos2d-iphone

我的瓷砖地图有一个“火炬”瓷砖。我正在使用CCParticleSystemQuad发射器来发挥火焰效果。

发射器是tilemap的子级(直接位于torch tile上方)。

但是,玩家可以移动并且平铺地图也会移动(将“相机”置于播放器中心)。当发生这种情况时,发射器自然也会移动。但这就是问题所在:这样的运动会产生类似......如果火炬正在移动的效果,而不是玩家(实际情况就是如此,但效果并不好)。

很难解释。只需制作一个火焰发射器,作为tilemap的子项放置,然后将tilemap移动到右侧。效果很酷,但没有意义。

有什么想法吗?我虽然移动了发射器中的每一个现有粒子,但这听起来不太好(我有很多带有数百/数千个粒子的发射器,而且地图几乎每一帧都滚动)

1 个答案:

答案 0 :(得分:11)

CCParticleSystem有一个positionType property,你可以用它来改变发射粒子的位置行为。

枚举定义如下:

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工具中无法更改的少数设置之一。