背景的zPosition是1,发射器节点的是2。仍然背景在前面。我什至尝试了更高的数字,但无济于事。

代码

SKSpriteNode *bg = [SKSpriteNode spriteNodeWithImageNamed:@"TiltToMove_BG"];
bg.size = self.size;
bg.zPosition = 1;
bg.position = CGPointMake(self.size.width * 0.5, self.size.height * 0.5);
[self addChild:bg];

NSString *fireEmmitterPath = [[NSBundle mainBundle] pathForResource:@"fire" ofType:@"sks"];
SKEmitterNode *fireEmmitter = [NSKeyedUnarchiver unarchiveObjectWithFile:fireEmmitterPath];
fireEmmitter.position = CGPointMake(self.size.width * 0.5, self.size.height * 0.5 - 100);
fireEmmitter.name = @"fireEmmitter";
fireEmmitter.zPosition = 2;
fireEmmitter.targetNode = self;
[self addChild:fireEmmitter];

最佳答案

SKEmitterNode的一个属性称为particleZPosition

默认值为0.0,因此您需要更改此值以使粒子显示在前面。

fireEmitter.particleZPosition = 2;

实际发射器节点的zPosition是不相关的,因为它是不可见的。

这是因为您要将粒子放在父节点上。
fireEmitter.targetNode = self;

目标节点是添加粒子的位置。

如果您将其保留为nil,则粒子将被添加到发射器节点,因此已经在背景前面,因为它们将位于具有zPosition 2.0的发射器节点上的zPosition 0.0处。

当然,如果您随后移动发射器,则所有粒子将以与发射器相同的方式移动,所以也许那不是您想要的效果。

无论如何,现在应该对您进行排序。

您可以在SKEmitterNode文档中找到此信息。

08-07 23:15