Tabii, bunu Star Catch oyunum için bulmalıydım. Bunu yapmanın daha iyi yolları olabilir ama ben böyle yaptım. Aslında algoritmayı çevrimiçi buldum (üzgünüm kaynağı hatırlayamıyorum) Bir çokgenin içindeki bir noktayı tespit etmek için bir arama yaptım.
Demek istediğim bir NSMutableArray oluşturdum. Puanları toucheventlerime ekliyorum.
- (BOOL) testNodeInLoop:(CCNode *)node {
CGPoint prev;
// This is more accurate point for the node
CGPoint absPoint = [node convertToWorldSpace:CGPointZero];
float x = absPoint.x;
float y = absPoint.y;
BOOL isIn = NO;
CGPoint cp;
for(int i = 0, j = [points count] - 1; i < [points count]; j = i++) {
[[points objectAtIndex:i] getValue:&cp];
[[points objectAtIndex:j] getValue:&prev];
if( ((cp.y > y) != (prev.y > y)) && (x < (prev.x -cp.x) * (y - cp.y) / (prev.y - cp.y) + cp.x)) {
isIn = !isIn;
}
}
return isIn;
}
Bunun yararlı olup olmadığını bana bildirin.