不知如何判断羊都被圈起来了 
如果是这么画怎么判断 

看过一个巧妙地判断方式,就是从羊开始上下两个方向做射线检测,如果在一个方向上检测到地绳子数量是偶数,那么羊就不在圈内。
isCollidePointPolygon(px: number, py: number, polygon: number[]): boolean {
let flag = false;
for (let i = 0, len = polygon.length, j = len - 2; i < len; j = i, i += 2) {
let ax = polygon[i];
let ay = polygon[i + 1];
let bx = polygon[j];
let by = polygon[j + 1];
if (px === ax && py === ay || px === bx && py === by) return true;// 点与多边形顶点重合
if (ay === by && py === ay && (ax < px && px < bx || bx < px && px < ax)) return true;// 点的射线和多边形的一条边重合,并且点在边上
if ((ay < py && py <= by) || (by < py && py <= ay)) {// 判断线段两端点是否在射线两侧
let x = ax + (py - ay) * (bx - ax) / (by - ay);// 求射线和线段的交点x坐标,交点y坐标当然是py
if (x === px) return true;// 点在多边形的边上
if (x > px) flag = !flag;// x大于px来保证射线朝右
}
}
return flag;
}
这个好像确实巧妙
,不过看了上面兄弟提供的代码后,发现cocos是有提供内置的方法:

这得配好多目标路径点吗
判断点是否在多边形内就行了,官方有api