Answers:
当然,我必须为我的游戏Star Catch弄清楚这一点。也许有更好的方法可以做到,但这就是我的方法。我实际上是在网上找到算法的(对不起,我不记得源代码了),我进行了搜索以检测多边形内的点。
我创建了一个NSMutableArray来说明我的观点。我在触摸事件中添加了点。
- (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;
}
让我知道这是否有帮助。
《实时冲突检测》一书中有关于线/段冲突检测的部分。Google图书示例:http://ow.ly/2gjQf