0

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

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

提前致谢!

4

1 回答 1

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% 了解那里的语法,但这是一般的想法。

于 2013-04-27T14:18:07.270 回答