ios - 如何将发射器节点移到前面?

标签 ios sprite-kit skemitternode zposition

背景的 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 的文档中找到此信息。

关于ios - 如何将发射器节点移到前面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34617744/

相关文章:

iPhoneSDK : UIBarButtonItem's selector method targets wrong instances

ios - IOS中availableCameras为空但Android中没有问题

sprite-kit - 如何在 SpriteKit 中创建自定义混合模式

ios - SpriteKit : Finding unexpectedly nil while unwrapping, 无法实现多菜单场景

swift - 将发射器节点添加到 sks 文件并使用它 - XCode 6.0 + swift

ios - SWIFT 中的 ParseUI PFQueryTableViewController

iphone - 如何在uiscrollview上获取第一个和最后一个选择的uibutton标题?

swift - 如何在 Swift 中无缝过渡到 Interstitial iAd?

swift - 不同模拟时间的 SKEmitterNode

ios - 如何创建一个已经形成粒子的 SKEmitterNode