cocos-2d:随机掉落的块

时间:2013-04-27 07:15:30

标签: iphone cocos2d-iphone

所以我想随机创建下降块。块可以是GRects或Sprite,我只是不知道如何去做。

我需要随机选择一个时间来调用createBlock函数。然后我需要它在屏幕顶部创建一个块,从屏幕底部落到底部。最终结果应该是从屏幕上掉下来的无穷无尽的块流。我不太关心随机区间部分,更关心的是获得尽可能多的块,我需要掉落。

提前致谢!

1 个答案:

答案 0 :(得分:1)

好吧,假设你对cocos2d如何操作(图层,场景,孩子等)有基本的了解,那就是你可以采用的方法。

CGSize winSize = [[CCDirector shareDirector] winSize];
CCSprite *block = [CCSprite spriteWithFile:@"block.png"];

// Generate a random x position
CGFloat x = arc4random() % winSize.width;

// Position the block at a random x, just above the top of the screen
block.position = ccp(x, winSize.height + block.contentSize.height/2);

// Tell the block to fall down to the bottom of the screen over 2 seconds
CCMoveTo *fall = [CCMoveTo actionWithDuration:2 position:ccp(block.position.x, 0 - block.contentSize.height/2)];
[block runAction:fall];

如果您希望在常量的块流中进行此操作,则可以设置回调函数,以便经常调用“createBlock”函数。不断重新创建块并不是非常有效,但它比维护屏幕外块的列表更简单,并在必要时将它们移动到顶部再次下降。

CCSequence *rainBlocks = [CCSequence actions: [CCCallBlock actionWithBlock:^{
    [self createBlock];
    }],
    [CCDelayTime actionWithDuration:3],
    nil]];

[self runAction:[CCRepeatForever actionWithAction:rainBlocks]];

我不是100%的语法,但这是一般的想法。