Cocos2D -在建筑物之间添加孔洞和不同的高度



我尝试着创造一些类似于《屋顶跳跃》的内容,即在建筑(模块)之间添加孔洞和不同的高度。你可以看到游戏现在的截图:http://twitpic.com/4kb5jd

下面是我当前使用的代码:

-(id) init
{
    // always call "super" init
    // Apple recommends to re-assign "self" with the "super" return value
    if( (self=[super init] )) {
        moduleSize = 160;
        screenSize = [[CCDirector sharedDirector] winSize];
        CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
        [frameCache addSpriteFramesWithFile:@"ModulesScene1.plist"];
        CCTexture2D* gameArtTexture = [[CCTextureCache sharedTextureCache] addImage:@"ModulesScene1.png"];
        // Create the background spritebatch
        spriteBatch = [CCSpriteBatchNode batchNodeWithTexture:gameArtTexture];
        [self addChild:spriteBatch];
        numStripes = 1;
        /* BEGIN MODULES */
        NSString* frameName = [NSString stringWithFormat:@"Module0-hd.png"];
        CCSprite* sprite = [CCSprite spriteWithSpriteFrameName:frameName];
        sprite.anchorPoint = CGPointMake(0, 0.5f);
        sprite.position = CGPointMake(0, screenSize.height / 2);
        [spriteBatch addChild:sprite z:0 tag:0];
        frameName = [NSString stringWithFormat:@"Module0-hd.png"];
        sprite = [CCSprite spriteWithSpriteFrameName:frameName];
        sprite.anchorPoint = CGPointMake(0, 0.5f);
        sprite.position = CGPointMake((moduleSize - 1.1f), screenSize.height / 2);
        [spriteBatch addChild:sprite z:1 tag:1];
        frameName = [NSString stringWithFormat:@"Module1-hd.png"];
        sprite = [CCSprite spriteWithSpriteFrameName:frameName];
        sprite.anchorPoint = CGPointMake(0, 0.5f);
        sprite.position = CGPointMake((moduleSize * 2) - 1.1f, screenSize.height / 2);
        [spriteBatch addChild:sprite z:2 tag:2];
        frameName = [NSString stringWithFormat:@"Module2-hd.png"];
        sprite = [CCSprite spriteWithSpriteFrameName:frameName];
        sprite.anchorPoint = CGPointMake(0, 0.5f);
        sprite.position = CGPointMake(((moduleSize * 3) - 1.1f), screenSize.height / 2);
        [spriteBatch addChild:sprite z:3 tag:3];
        frameName = [NSString stringWithFormat:@"Module0-hd.png"];
        sprite = [CCSprite spriteWithSpriteFrameName:frameName];
        sprite.anchorPoint = CGPointMake(0, 0.5f);
        sprite.position = CGPointMake(((moduleSize * 4) - 1.1f), screenSize.height / 2);
        [spriteBatch addChild:sprite z:4 tag:4];
        frameName = [NSString stringWithFormat:@"Module1-hd.png"];
        sprite = [CCSprite spriteWithSpriteFrameName:frameName];
        sprite.anchorPoint = CGPointMake(0, 0.5f);
        sprite.position = CGPointMake(((moduleSize * 5) - 1.1f), screenSize.height / 2);
        [spriteBatch addChild:sprite z:5 tag:5];
        /* END MODULES */
        // Get current scrollSpped
        scrollSpeed = [[GameManager sharedGameManager] scrollSpeed];
        speedFactors = [[CCArray alloc] initWithCapacity:numStripes];
        [speedFactors addObject:[NSNumber numberWithFloat:2.5f]];
        NSAssert([speedFactors count] == numStripes, @"speedFactors count does not match numStripes!");
        [self scheduleUpdate];
    }
    return self;
}
-(void) update:(ccTime)delta
{
    CCSprite* sprite;
    scrollSpeed = [[GameManager sharedGameManager] scrollSpeed];
    CCARRAY_FOREACH([spriteBatch children], sprite)
    {
        NSNumber* factor = [speedFactors objectAtIndex:0];
        CGPoint pos = sprite.position;
        pos.x -= scrollSpeed * [factor floatValue];
        if (pos.x < -screenSize.width)
        {
            pos.x += ((screenSize.width * 2) - 2);
            int x = (arc4random() % 3);
            int xHole = (arc4random() % 10);
            NSString *randomName = nil;
            CCSpriteFrame *randomFrame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:randomName];
            [sprite setDisplayFrame:randomFrame];
        }
        sprite.position = pos;
    }
}

要在建筑物之间添加孔洞,您可以在init方法中添加一个简单的rand()函数:

sprite.position = CGPointMake(((moduleSize * 3) - 1.1f + (rand()%40)), screenSize.height / 2);

这将添加一个随机间距(最大40点)

最新更新