2

バックグラウンド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];
4

1 に答える 1

7

SKEmitterNodeという性質がありますparticleZPosition

デフォルト値は である0.0ため、パーティクルが前面に表示されるようにするには、これを変更する必要があります。

fireEmitter.particleZPosition = 2;

実際のエミッタ ノードのzPositionは、目に見えないため、ほとんど関係ありません。

これは、パーティクルを親ノードに配置しているためです...

fireEmitter.targetNode = self;

ターゲット ノードは、パーティクルが追加される場所です。

これを nil のままにしておいた場合、パーティクルはエミッタ ノードに追加され、zPosition 2.0 を持つエミッタ ノードの zPosition 0.0 にあるため、すでに背景の前にあります。

もちろん、その後エミッタを動かすと、すべてのパーティクルがエミッタと同じように動くので、おそらくそれはあなたが望んでいる効果ではないでしょう.

とにかく、あなたは今分類されるべきです。

この情報は、 のドキュメントに記載されていますSKEmitterNode

于 2016-01-05T17:36:34.903 に答える