如何得到一个节点世界坐标系下的boundingBox,getBoundingBoxToWorld 会得到子节点的

看文档,getBoundingBoxToWorld得到的包围盒包括子节点,如何得到自己单个节点的包围盒

自己实现一个吧,就是把节点坐标转换成世界坐标,然后根据节点宽高和锚点组装一个rect.可以参考getBoundingBox的源码:

好的,谢谢啦! 只是暂时有点不太明白 this._matrix是什么东西

你可以不用这个,直接使用this.node.parent.convertToWorldSpaceAR(this.node.getPosition());就可以获取node的世界坐标了

最近也碰到了这个问题,贴一下我自己的解决方法,cocos creator版本是2.4.10

// 返回节点自身的AABB包围盒(不包含其子节点)
static getNodeSelfBoundingBoxToWorld(node: cc.Node): cc.Rect {
// 获取节点基于其父节点坐标系下的包围盒
const localBoundingBox = node.getBoundingBox();
// 获取节点父节点的世界变换矩阵
let worldMatrix: cc.Mat4 = new cc.Mat4();
node.parent.getWorldMatrix(worldMatrix);
// 使用世界矩阵将局部边界框转换为世界坐标系中的边界框
let worldBoundingBox: cc.Rect = new cc.Rect();
localBoundingBox.transformMat4(worldBoundingBox, worldMatrix);
return worldBoundingBox;
}

2赞

getBoundingBox()返回的是不包含子节点的包围盒的

非常好用 嘻嘻嘻