Как заставить несколько объектов в cocos2d реагировать на прикосновения - PullRequest
0 голосов
/ 26 февраля 2012

В моей игре есть следующий код:

int x = 50;  
int y = 400;  
for (int i = 1; i < 30; i++) {  
    if (x+54 > self.boundingBox.size.width) {  
        x = 50;  
        y -= 70;  
        ccDrawCircle(CGPointMake(x, y), 20, 3.14, 100, NO);  
    } else {  
        ccDrawCircle(CGPointMake(x, y), 20, 3.14, 100, NO);  
        x += 72;  
    }  
}

Как заставить каждый из этих кругов реагировать на прикосновения? В частности, я подумываю о том, чтобы придать им эффект нажатия кнопки (уменьшение при касании, изменение размера при касании), а также изменение цвета при касании.

1 Ответ

1 голос
/ 26 февраля 2012

При использовании Cocos проще всего сделать круги CCSprites и затем реагировать на прикосновения к этим спрайтам, используя этот метод в вашем слое:

-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{

Затем итерируйте свои спрайты, используя общую технику, подобную этой:

isTouchHandled= CGRectContainsPoint([sprite boundingbox], [[CCDirector sharedDirector] convertToGL:[touch locationInView: [touch view]]]);

Если isTouchHandled - ИСТИНА, тогда вы можете делать то, что вам нужно, с этим спрайтом или чем-то еще.

Обратите внимание, что вы можете использовать этот метод либо в самом слое, либо в подклассе спрайта, и в зависимости от того, что вы выберете, вы должны зарегистрировать узел с диспетчером касания, указав его в init или где-то еще:

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];

...