怎么获取节点的实际边框啊?

protected onLoad(): void {
        const itemNode = this.node.getChildByName('item')

        const boundingBox = itemNode.getBoundingBox()

        const graphicsNode = new cc.Node()
        graphicsNode.parent = itemNode.parent

        const graphics = graphicsNode.addComponent(cc.Graphics)
        graphics.strokeColor = cc.Color.RED
        graphics.lineWidth = 2
        graphics.rect(boundingBox.x, boundingBox.y, boundingBox.width, boundingBox.height)
        graphics.stroke()
    }

使用 getBoundingBox() 获取到的大小是包含了节点4个角的,怎么获取白色节点实际的边框啊?

image

你这样子不是已经获取成功了吗?

image

我是想要这个,

这个是aabb 你需要obb

框里面如果是一张图片的话,据我所知是获取不到了,你可以说下你想做什么,让大家看看有没有别的方案

大佬,obb怎么获取啊,,

image

我是 bg 节点监听触摸事件,然后判断触摸点是不是在 item 节点上,,

test.zip (4.0 KB)

image

image

实际的需求是一个角色多个部位画线,然后绑定到 spine 动画上,但要求能一次画完,,

只能在白色小人里面画线?

是的,这是多个节点组成的,外面套了个黑色的框,里面的头、手等都是白色的底图,,

有个想法,使用多边形碰撞组件,手动编辑多边形区域,然后判断触摸点是不是在多边形内

cc.Intersection.pointInPolygon(touchLocation, o.getComponent(cc.PolygonCollider).world.points)

不过这样如果关卡很多的话,可能需要很大的编辑工作量

多谢大佬,确实只能用这个方法了,, :joy:

矩形用 BoxCollider 就行了,没改角度的用 getBoundingBoxToWorld 这个接口,,

只是矩形而已, 将触摸点坐标转换到节点空间不行吗? 这个转换是包含旋转的

我之前有写过一个obb的检测代码 包括obb和obb obb和点 obb和圆

论坛不是已经有人写了根据像素点判断是否点击中的功能吗,稍微改改就是了

开启碰撞,用 BoxCollider 解决了,我是想找 getBoundingBox 这种接口的,, :joy: