2

Background's zPosition is 1 and emitter node's is 2. Still background is on front. I even tried higher numbers, but it won't help.

Code

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];
4

1 回答 1

7

有一个SKEmitterNode叫做的属性particleZPosition

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

fireEmitter.particleZPosition = 2;

实际的zPosition发射器节点在很大程度上是不相关的,因为它是不可见的。

这是因为您将粒子放在父节点上......

fireEmitter.targetNode = self;

目标节点是添加粒子的地方。

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

当然,如果您随后移动发射器,那么所有粒子都会以与发射器相同的方式移动,所以这可能不是您想要的效果。

无论如何,你现在应该被分类了。

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

于 2016-01-05T17:36:34.903 回答