【分享】CocosCreator:不规则图片的触摸点击问题

假设一个图片,我们在点击它时只想它的某一部分(不规则)响应,其他位置不响应;或者该图片的透明区域不响应;
查了一些资料,大都是通过判断位置所在的像素点的alpha阈值来决定响应还是不响应。
能力有限,不会写暂时也不太想研究怎么通过像素点来判断。于是就想着有没有捷径可走。不经意间发现了一个API辅助类pointInPolygon。

image
它有一个方法,可以判断一个点是否在一个多边形中。那么再结polygonCollider2D组件,不就可以很好的解决上面的问题了么。

image

image

test

测试点击相当精确哈。。。

个人没法判断和像素检测的方法比哪个更好…,够用。

pointInPolygon是一个悄咪咪的API,它还有其他一些包括矩形与多边形是否相交、测试矩形与圆形是否相交、测试多边形与多边形是否相交等等;但很遗憾在官方的文档中没有被提到。

希望能对要找这个方法的人有帮助吧~

4赞

可能就是要耗性能一些。

我也是用这个做的,,

引导遮罩用这个做的

收藏了,很好的分享

但是项目中没法用2D物理组件,请问还有别的方式可以实现吗

我记得论坛里有个透明区域点击穿透的方案,你可以搜一下

或者你编辑时挂上polygonCollider2D,把顶点存起来(比如建个表啥的),然后把polygonCollider2D去掉,用的时候读表就行了。

https://store.cocos.com/app/detail/5296
你是不是在找这个 :grinning:

可以直接把 UITransform 的 hitTest hack 掉这样判断