Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配

时间:2024-03-20 16:44:37

最近待业在家,朋友问了这样一个问题,就看了下这个polygon collider 2d

朋友的问题是:RawImage图片放进去,不能自动匹配碰撞体?

然后我查了下,这玩意,一步步的沟通解决,交流。

step1:
去看了下这玩意的api
Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配
api 表明把图片直接拖上去是可以自动匹配的,然后照做了

step2:
新建了一个工程,新建了一个RawImage,添加了Polygon Collider 2D碰撞体,拖了个不规则图片上去,是这样的:
Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配

Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配

上面一个是图片,一个是图片里的碰撞体,可是碰撞体特别的小,在图片里看只是一个点。

这就成了一个问题。

Step3:为了解决这个问题,第一反应是想改Polygon Collider 2D的size;
Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配
可是大小是不可编辑的,后来改变transform的scale,发现这个size是随着scale的大小改变的,可是RawImage的大小也在等倍放大,不可取,后来就改了RectTransform的width和height
Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配

结果是刚好匹配的,如图所示:
Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配

把结果告诉了朋友,可是朋友的电脑上是不可以的,是这样的:
Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配

后来查证后发现是Canvas不一样,于是此方法是取巧的,不可行的,后来又继续尝试.

Step4:于是同时尝试了image, rawimage,还有Sprite,发现Sprite是可以的额,效果如图。
Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配
Unity使用Polygon Collider 2D 实现不规则图形碰撞自动匹配

原因是这里直接跟随sprite的图形大小随scale变化,没有RectTransform,可以直接编辑。

Step5:
Step4是可以临时解决该问题,但并非完美解决。
于是尝试用脚本修改collider的size,可是get不到points下面的size.

各位有更好的解决方案的欢迎评论!