物理刚体有可能会是一个多边形,这样使用cc.PhysicsPolygonCollider可以勾勒出多边形的形状,但是要在这个多边形上添加点击事件,我使用的是cc.Node的on监听了TOUCH_END事件,这样就会存在透明区域点击也会触发事件回调,尝试了多种办法,包括cc.Intersection.pointInPolygon,但是貌似还是不行,请问下有没有解决方案能分享一下的吗?
下面是我写的判断方法,但是不行。
let hitTest = (pos: cc.Vec2) => {
let hitPos = body.convertToNodeSpaceAR(pos);
let nodeSize = body.getContentSize();
if (body.getComponent(cc.PhysicsBoxCollider)) {
return true;
} else {
let polygonCollider = body.getComponent(cc.PhysicsPolygonCollider);
if (polygonCollider) {
hitPos.x -= nodeSize.width / 2;
hitPos.y -= nodeSize.height / 2;
let bool = cc.Intersection.pointInPolygon(hitPos, polygonCollider.points);
return bool;
}
}
}
试试这样呢
