문제

I am a beginner in Cocos2d and I wanted to display coin sprites as soon as it moves off the screen with a 5 second delay. So this is what I wrote in my main gameplay layer to add 7 coins in a row:

- (void)coinSidewaysRowOne { 
    if (coinSide1 == FALSE)
    {
        coinSide1 = TRUE;
        NSLog(@"coinSide1 = TRUE");
        int originalX = 500;
        for(int i = 0; i < 8; i++)
        {
            CCSprite *coinHorizontal = [CCSprite spriteWithFile:@"bubble.png"];
            coinHorizontal.position = ccp(originalX, 150);
            originalX += 20;

            [self addChild:coinHorizontal];
            [coinArray addObject:coinHorizontal];
        }
    }
}

And then, in my updateRunning method I added this, so when the coins spawn outside the screen, they move to the left and disappear:

// Move coins off the screen and make them move away
    for (CCSprite *coin in coinArray) {
        // apply background scroll speed
        float backgroundScrollSpeedX = [[GameMechanics sharedGameMechanics] backGroundScrollSpeedX];
        float xSpeed = 1.09 * backgroundScrollSpeedX;

        // move the coin until it leaves the left edge of the screen
        if (coin.position.x > (coin.contentSize.width * (-1)))
        {
            coin.position = ccp(coin.position.x - (xSpeed*delta), coin.position.y);
        }
    }

So right now, when I run this, the coins move in from the right and move off the screen from the left. How do I make it so that when the coins move to the left and go off the screen, have a five second delay and then have new coins come back to the screen from the right like it originally did.

Thank you!

도움이 되었습니까?

해결책

You can call one function which will add that sprite back the screen with delay of five seconds.

You have to add some code as follows:

for (CCSprite *coin in coinArray)
{
    // apply background scroll speed
    float backgroundScrollSpeedX = [[GameMechanics sharedGameMechanics] backGroundScrollSpeedX];
    float xSpeed = 1.09 * backgroundScrollSpeedX;

    // move the coin until it leaves the left edge of the screen
    if (coin.position.x > (coin.contentSize.width * (-1)))
    {
        coin.position = ccp(coin.position.x - (xSpeed*delta), coin.position.y);
    }
    else
    {
        [self performSelector:@selector(showSpriteAgain:) withObject:coin afterdelay:5.0f];
    }
}

And make one function which will add that sprite to screen again:

-(void) showSpriteAgain:(CCSprite *)coin 
{
coin.position = ccp(coin.position.x+screenSize.width,coin.position.y);
}

I think this is what you are looking for.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top