利用pointInPolygon做不归测点击遇见问题



脚本在Canvas节点上挂着的,我一开始用的
let touch_pos = this.font_1.parent.getComponent(UITransform).convertToNodeSpaceAR(v3(touch_point.x, touch_point.y, 0));
得到结果始终是false,
let touch_pos = this.font_1.getComponent(UITransform).convertToNodeSpaceAR(v3(touch_point.x, touch_point.y, 0));
去掉后,反而在范围内true了,
这是引擎的问题,还是我脚本的问题?用的3.8.7的。



加上parent时

去掉parent时

还有PolygonCollider2D自带防止点击事件穿透,怎么才能取消,不行的话,我在想想用其他的方法。

points的坐标就是在它所在的node下的坐标,本来就不应该用node.parent吧,第二个写法是正确的

谢谢,还是没想通,空间转本地,本地转空间,用习惯了,都加着parent。我搜论坛里面时,有个伙计发的贴子用的this.node,他也加着parent。

[muzzik 插件]:SpriteButton-精灵按钮(像素级检测) - Creator 3.x - Cocos中文社区不知道这个能不能帮到你

这种类型的游戏一般不是通过svg绘制,然后通过像素检测点击嘛 :thinking:

像素检测我看见论坛,有人发过这个方法,用的采样器,不过我感觉还是用PolygonCollider2D比较方便,背景文字颜色是统一的,还是这样显隐Sprite组件快一些,后期记录坐标,或者让美术去摆预制去吧。