实现该功能需要用到组件PolygonCollider2D,官方链接:
https://docs.cocos.com/creator/3.4/manual/zh/physics-2d/physics-2d-collider.html
创建组件
创建一个精灵节点:
创建碰撞组件PolygonColider2D,如图
给按钮添加多边形碰撞组件PolygonColider,并设置Points。
勾选Editing可以看见Points的绿点,可以通过鼠标拖动自定义多边形形状。
也可以通过修改Threshold的值,点击Regenerate Points自动根据图片生成多边形。
代码实现
let collider = this.node.getComponent(PolygonCollider2D);
this.node.on(NodeEventType.TOUCH_END, (event: EventTouch)=>{
let location = event.getUILocation();
if (Intersection2D.pointInPolygon(location, collider.worldPoints)) {
console.log("hit")
}
else {
console.log("not hit")
}
})
ps:如果出现无法导入PolygonCollider2D,或者通过getComponent获取到组件,比如:
需要检查一下项目设置中的功能裁剪中有没有裁剪2D物理系统,PolygonCollider2D属于2D物理系统,勾上就好啦。