移动的Box2d世界中的粒子被绘制在顶部而不是在层内

时间:2012-10-02 07:58:56

标签: objective-c cocos2d-iphone

我正在使用LevelHelper来构建我的关卡,并且我在我的关卡中添加了一些粒子(动态初始化的CCParticleSystemQuad)。一切正常,直到我移动世界(它是Box2D中动态绘制的世界,我用相机跟随玩家)。如果我移动世界,新添加的粒子会连续发射,在正确的位置绘制,但在粒子动画之后,粒子似乎相对于全局世界/屏幕位置绘制。这给人一种奇怪的“幻觉”效果,看起来完全不切实际。应该在世界范围内重新绘制/刷新粒子

LevelHelperLoader * lh = gameLayer.lh;
LHLayer * layer = [lh layerWithUniqueName:@"MAIN_LAYER"];

NSArray * array = [lh spritesWithTag:WORTEL];
CCParticleSystemQuad * particle;
CGPoint position;
for (LHSprite * sprite in array) {
    particle = [CCParticleSystemQuad particleWithFile:@"DirtParticles.plist"];
    [layer addChild:particle z:0];
    position = sprite.position;
    position.y += sprite.contentSize.height * 0.5f;
    [particle setPosition:position];
    [particle resetSystem];
}

有人知道我可能做错了吗?

1 个答案:

答案 0 :(得分:3)

尝试更改粒子位置类型:

particle.positionType = kCCPositionTypeFree;

替代方案是kCCPositionTypeRelative和kCCPositionTypeGrouped。您可能必须尝试所有人才能看到哪一个最符合您的情况,我猜它是“免费”或“相对”。

相关问题