Cocos2dで長方形以外のスプライトのヒットまたはタッチ検出を実装する正しい方法は何ですか?
私はジグソーパズルに取り組んでいるので、スプライトには奇妙な形(ジグソーパズルのレンガ)があります。現在のところ、「検出」は次のように実装されています。
- (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;
}
問題はキーワード「sprite.boundingBox
」にあることがわかります。これを実装するより良い方法はありますか、それとも.pngに基づくスプライトを使用する場合の制限ですか?もしそうなら、どうすればいいですか?