Как переместить узел эмиттера на фронт?
Фон-х 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];
1 ответ
Есть свойство SKEmitterNode
называется particleZPosition
,
Значением по умолчанию является 0.0
поэтому вам нужно будет изменить это, чтобы частицы появлялись спереди.
fireEmitter.particleZPosition = 2;
zPosition
фактического узла эмиттера в значительной степени не имеет значения, поскольку он невидим.
Это потому, что вы помещаете частицы на родительский узел...
fireEmitter.targetNode = self;
Целевой узел - это место, где добавляются частицы.
Если бы вы оставили это как nil, то частицы были бы добавлены к узлу эмиттера и поэтому уже были бы перед фоном, потому что они были бы в zPosition 0.0 на узле эмиттера, который имеет zPosition 2.0.
Конечно, если вы затем перемещаете эмиттер, все частицы будут двигаться так же, как и эмиттер, так что, возможно, это не тот эффект, который вам нужен.
Во всяком случае, вы должны быть отсортированы сейчас.
Вы можете найти эту информацию в документации SKEmitterNode
,