我使用此代码示例来检测是否触摸了精灵。
-(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
?
答案 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
}
}
}