CocosCreator 3.4.2版本 如何判定两个Node节点是否在对方区域内 边缘也算 代码实例
时间: 2024-03-09 15:46:40 浏览: 226
Cocos Creator 3.4.2 中可以使用 `getBoundingBoxToWorld` 函数来获取一个节点在世界坐标系中的包围盒。通过比较两个节点的包围盒是否相交,可以判断它们是否在对方区域内。
以下是一个示例代码:
```typescript
// 假设有两个节点 node1 和 node2
const box1 = node1.getBoundingBoxToWorld();
const box2 = node2.getBoundingBoxToWorld();
if (box1.intersects(box2)) {
console.log('两个节点相交');
} else {
console.log('两个节点不相交');
}
```
在这个示例中,`getBoundingBoxToWorld` 函数会返回一个 `Rect` 对象,表示节点在世界坐标系中的包围盒。`intersects` 函数用于判断两个矩形是否相交,如果相交则返回 `true`,否则返回 `false`。
需要注意的是,`getBoundingBoxToWorld` 函数返回的包围盒是一个矩形,它的边缘也包含在内。如果需要排除边缘,可以通过调整包围盒的大小来实现。例如,可以使用 `inset` 函数来缩小包围盒的大小,从而排除边缘的影响:
```typescript
const insetSize = 10; // 缩小的大小
const box1 = node1.getBoundingBoxToWorld().inset(insetSize);
const box2 = node2.getBoundingBoxToWorld().inset(insetSize);
if (box1.intersects(box2)) {
console.log('两个节点相交');
} else {
console.log('两个节点不相交');
}
```
在这个示例中,`inset` 函数会将包围盒的大小缩小 `insetSize` 像素。这样,如果两个节点的边缘距离小于 `insetSize` 像素,它们仍然不会被判定为相交。
阅读全文