【问题标题】:How to move emitter node to front?如何将发射器节点移动到前面?
【发布时间】:2016-04-09 15:15:02
【问题描述】:

背景的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];

【问题讨论】:

  • 你拼错了发射器。

标签: ios sprite-kit skemitternode zposition


【解决方案1】:

SKEmitterNode 有一个属性叫做particleZPosition

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

fireEmitter.particleZPosition = 2;

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

这是因为你把粒子放到了父节点上……

fireEmitter.targetNode = self;

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

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

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

不管怎样,你现在应该被排序了。

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

【讨论】:

    猜你喜欢
    • 2018-12-06
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多