Quelle est la bonne façon d'implémenter la détection de toucher ou de toucher pour les sprites non rectangulaires dans Cocos2d?
Je travaille sur un puzzle, donc nos sprites ont des formes étranges (briques de puzzle). Pour l'instant, nous avons implémenté la "détection" de cette façon:
- (void)selectSpriteForTouch:(CGPoint)touchLocation {
CCSprite * newSprite = nil;
// Loop array of sprites
for (CCSprite *sprite in movableSprites) {
// Check if sprite is hit.
// TODO: Swap if with something better.
if (CGRectContainsPoint(sprite.boundingBox, touchLocation)) {
newSprite = sprite;
break;
}
}
if (newSprite != selSprite) {
// Move along, nothing to see here
// Not the problem
}
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
[self selectSpriteForTouch:touchLocation];
return TRUE;
}
Je sais que le problème est dans le mot clé " sprite.boundingBox
". Existe-t-il une meilleure façon de l'implémenter, ou est-ce une limitation lors de l'utilisation de sprites basés sur .png? Si oui, comment dois-je procéder?