2

私は現在、Flappy Birdのコピーを作成しています。リラックスしてください、それは私と学習部分のためだけです、私はそれを公開するつもりはないので、嫌いではありません.

鳥はロックされています:

self.size.width/3

パイプは次のように生成されます。

- (void)generatePipes {
    for (NSInteger i = 0; i < 3; i++) {
        pipeNode = [SKNode node];

        [pipeNode setName:@"pipe"];
        [pipeNode setPosition:CGPointMake(self.size.width + 100.0 + (200.0 * i), 0.0)];

        [self addChild:pipeNode];

       **BLABLABLA. Some code**

        [pipeTop setPosition:CGPointMake(0.0, arc4random_uniform(250) + 460.0)];
        [pipeBottom setPosition:CGPointMake(0.0, pipeTop.position.y - (550.0 + arc4random_uniform(10)))];

        [pipeTop setPhysicsBody:[SKPhysicsBody bodyWithRectangleOfSize:pipeTop.size]];
        [pipeBottom setPhysicsBody:[SKPhysicsBody bodyWithRectangleOfSize:pipeBottom.size]];

        [pipeTop.physicsBody setDynamic:NO];
        [pipeBottom.physicsBody setDynamic:NO];

        pipeTop.physicsBody.categoryBitMask = blockBitMask;
        pipeBottom.physicsBody.categoryBitMask = blockBitMask;
        pipeNode.physicsBody.categoryBitMask = blockBitMask;

        [pipeNode addChild:pipeTop];
        //[pipeTop attachDebugRectWithSize:pipeTop.size];
        //[pipeBottom attachDebugRectWithSize:pipeBottom.size];
        [pipeNode addChild:pipeBottom];
    }
}

これは私がある程度うまくいった唯一のものです。はい、私はゲーム開発に不慣れです。FirstDistance は、最初のパイプが到着するまでの距離です。

        firstDistance += -moveAmount.x;

    if(touchBegan > 0 && firstDistance > (self.size.width -(self.size.width/3)- 60)){
        distanceSinceLastPipe += -moveAmount.x;


        if (distanceSinceLastPipe >= 140.0) {
            distanceSinceLastPipe = 0.0;

            score += 1;

            [_scoreLabel setText:[NSNumberFormatter localizedStringFromNumber:@(score)
                                                                  numberStyle:NSNumberFormatterDecimalStyle]];
            [self runAction:[SKAction playSoundFileNamed:@"pipe.mp3" waitForCompletion:NO]];
        }
    }

パイプが最も効率的に鳥を通過していることを update-method に伝えるにはどうすればよいですか? パイプ間のピクセルをカウントしてリセットしますか? または、通過したことを検出する方法はありますか?

4

1 に答える 1