2

誰かが私に手を差し伸べてくれるかもしれません… 私はいくつかの SKEmitterNodes をそれぞれの SKCropNodes に追加しようとしています。

私のコード:

    // left emitter node
    NSString *path = [[NSBundle mainBundle] pathForResource:@"LeftParticle" ofType:@"sks"];
    SKEmitterNode *lEmitterNode = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    // left crop node
    SKSpriteNode *lMask = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size:CGSizeMake(self.size.width/2, self.size.height)];
    [lMask setAnchorPoint:CGPointZero];
    SKCropNode *lCropNode = [SKCropNode node];
    lCropNode.maskNode = lMask;

    // move the left emitter under the mask
    lEmitterNode.position = CGPointMake(CGRectGetMinX(lMask.frame) + lMask.size.width / 2, self.size.height);

    [lCropNode addChild:lEmitterNode];
    [self addChild:lCropNode];



    // right emitter node
    path = [[NSBundle mainBundle] pathForResource:@"RightParticle" ofType:@"sks"];
    SKEmitterNode *rEmitterNode = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    // right crop node
    SKSpriteNode *rMask = [SKSpriteNode spriteNodeWithColor:[UIColor greenColor] size:CGSizeMake(self.size.width/2, self.size.height)];
    [rMask setAnchorPoint:CGPointZero];
    rMask.position = CGPointMake(rMask.size.width, 0);
    SKCropNode *rCropNode = [SKCropNode node];
    rCropNode.maskNode = rMask;

    // move the right emitter under the mask
    rEmitterNode.position = CGPointMake(CGRectGetMinX(rMask.frame) + rMask.size.width / 2, self.size.height);

    [rCropNode addChild:rEmitterNode];
    [self addChild:rCropNode];

そして、これが結果です:

ここに画像の説明を入力

ご覧のとおり、赤いパーティクルが左側のマスクの下にレンダリングされます...なぜですか?

次の方法でマスクのサイズを縮小しようとしました。

    lMask.xScale = lMask.yScale = 0.9;
    rMask.xScale = rMask.yScale = 0.9;

そして、これが結果です:

ここに画像の説明を入力

レンダー バッファの問題か、zPosition に関する問題か、バグか、本当に道に迷っているのかもしれません。

thnx

4

0 に答える 0