Cocos2d iphone 从发射器移动所有粒子

Cocos2d iphone 从发射器移动所有粒子,cocos2d-iphone,Cocos2d Iphone,我的瓷砖贴图有一个“火炬”瓷砖。我正在使用CCParticleSystemQuad发射器来产生火焰效果 发射器是tilemap的子对象(火炬瓷砖正上方) 但是,玩家可以移动,tilemap也会移动(以使“摄影机”在玩家身上居中)。当这种情况发生时,发射器自然也会移动。但问题是:这样的运动会产生像……这样的效果。。。。比如说,如果火炬在移动,而不是玩家(事实上是这样,但效果并不好) 很难解释。只需制作一个火发射器,作为tilemap的子对象放置,然后将tilemap移到右侧。效果很酷,但没有意义

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

发射器是tilemap的子对象(火炬瓷砖正上方)

但是,玩家可以移动,tilemap也会移动(以使“摄影机”在玩家身上居中)。当这种情况发生时,发射器自然也会移动。但问题是:这样的运动会产生像……这样的效果。。。。比如说,如果火炬在移动,而不是玩家(事实上是这样,但效果并不好)

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


有什么想法吗?我想移动发射器中的每一个现有粒子,但这听起来对性能不太好(我得到了许多具有数百/数千个粒子的发射器,并且贴图几乎每一帧都滚动)

ccparticle系统有一个可以更改发射粒子的位置行为的工具

枚举的定义如下:

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工具中少数几个不能更改的设置之一。

谢谢。这两种方法似乎都很有效。我最后使用了相对选项。@LearnCos2D您又一次挽救了这一天!我30分钟前还在警局调查。然后我看了看各种各样的房子,错过了这个(我确信它会在那里,但我找不到)。这会让事情变得更好。默认设置是什么,kCCPositionTypeGrouped?这似乎符合我看到的行为。