2013-04-27 2 views
0

поэтому я хочу случайным образом создать падающие блоки. Блоки могут быть GRects или Sprites, я просто не знаю, как это сделать.cocos-2d: Случайно падающие блоки

Мне нужно как случайным образом выбрать время для вызова функции createBlock. Затем мне нужно создать блок в верхней части экрана, который падает в нижней части экрана. Конечным результатом должен быть бесконечный поток блоков, падающих с экрана. Я меньше разбираюсь в части случайного интервала и больше забочусь о том, чтобы получить столько блоков, сколько мне нужно упасть.

Заранее благодарен!

ответ

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% от синтаксиса, но это общая идея.

+0

Большое спасибо. Он отлично работал. В итоге мне пришлось использовать изменяемый массив, чтобы следить за выключенным экраном и блоками экрана так же, как вы сказали. – sbjluke

Смежные вопросы