Tentu, saya harus memikirkannya untuk game Star Catch saya. Mungkin ada cara yang lebih baik untuk melakukannya tetapi ini adalah bagaimana saya melakukannya. Saya benar-benar menemukan algoritma online (maaf saya tidak ingat sumbernya) Saya melakukan pencarian untuk mendeteksi titik di dalam poligon.
Saya membuat NSMutableArray untuk mempertahankan poin saya. Saya menambahkan poin di layar sentuh saya.
- (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;
}
Beri tahu saya jika ini bermanfaat.