Cách chính xác để thực hiện phát hiện chạm hoặc chạm cho các họa tiết không phải hình chữ nhật trong Cocos2d là gì?
Tôi đang làm việc trên một trò chơi ghép hình, vì vậy các họa tiết của chúng ta có một số hình thức kỳ lạ (gạch ghép hình). Đến bây giờ, chúng tôi đã thực hiện "phát hiện" theo cách này:
- (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;
}
Tôi biết rằng vấn đề nằm ở từ khóa " sprite.boundingBox
". Có cách nào tốt hơn để thực hiện điều này không, hay nó có phải là một hạn chế khi sử dụng các họa tiết dựa trên .png không? Nếu vậy, tôi nên tiến hành như thế nào?