1

我正在使用 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];
}

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

4

1 回答 1

3

尝试更改粒子位置类型:

particle.positionType = kCCPositionTypeFree;

替代方案是 kCCPositionTypeRelative 和 kCCPositionTypeGrouped。您可能必须尝试全部以查看其中哪些最适合您的场景,我猜它是“免费的”或“相对的”。

于 2012-10-08T15:03:46.957 回答