如何在cocos2d中对精灵进行分组以进行触摸检测?

时间:2014-04-18 18:53:45

标签: ios objective-c cocos2d-iphone

我使用此代码示例来检测是否触摸了精灵。

-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {

CGPoint location = [touch locationInView: [touch view]];
CGPoint convertedlocation = [[CCDirector sharedDirector] convertToGL: location];
CGPoint convertedNodeSpacePoint = [self convertToNodeSpace:convertedlocation];

  if (CGRectContainsPoint([_sprite boundingBox],convertedNodeSpacePoint))
{}

我有很多精灵,我必须多次复制那些代码才能改变精灵名称。如何让这个过程缩短一点?也许是NSArray

1 个答案:

答案 0 :(得分:0)

如果我的问题正确,您可以使用for循环并检查所有孩子。像这样的东西 -

CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];

for (CCSprite *spr in self.children) {
    if ([spr isKindOfClass:[CCSprite class]]) {

    float distance = pow(spr.position.x - location.x, 2) + pow(spr.position.y - location.y, 2);
    distance = sqrt(distance);

    if (distance1 <= 150) {
        //do something with your sprite
    }
}

}