关于图片节点事件触发的问题与思考

52}4RPJ~61Q0EM6_BIY@ZYS
图片白色部分表示透明区域,用户当点击透明区域时,不会触发事件,不发生移动。只有点击有颜色的区域才能触发事件


一张图片总是矩形的形状的,肯定会存在透明的部分。那么该如何实现只有点击有颜色的区域才能触发事件么?

试试 PolygonCollider

碰撞组件,用于检测两物体是否发生碰撞,当发生碰撞时会有三个事件触发,onCollisionEnter,onCollisionEnter,onCollisionExit。但鼠标的点击事件该怎么办呢?试过了给物体添加PolygonCollider后,添加点击事件,点击到透明区域仍然会触发事件的。

const touchPoint = touch.getLocation()

    if (cc.Intersection.pointInPolygon(touchPoint, this.nodeCollider.world.points)) {

        console.warn("颜色部分")
    }
    else {
        console.warn("空白区")
    }

判断一下

避开透明区域呢

Regenerate Points精细化物体的碰撞检测了。但点击透明区域时 this.node.on(“touchmove”, (e: cc.Event.EventTouch) => { }) 还是能触发的。

根据您反给我的代码,然后又看了官网案例


但是不知道如何个 collider: cc.PolygonCollider 赋值内容

@property(cc.PolygonCollider)
nodeCollider: cc.PolygonCollider = null

然后把你那个节点拖过去

1赞

嗯,其实它就和其它的节点一样使用的。



还需将世界坐标转为当前节点的坐标

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。