四叉树与碰撞检测 !Cocos Creator !

本文介绍了如何结合四叉树和Cocos Creator进行碰撞检测,通过四叉树进行物体分块,提高碰撞检测效率。文章提供了一个完整的项目示例,并详细解释了实现原理,包括四叉树的构建和引擎的碰撞检测机制。最后,作者分享了实际的检测代码,并鼓励读者实践和分享。
摘要由CSDN通过智能技术生成

四叉树与引擎内置碰撞检测的结合运用。完整项目见文末。

效果预览

绿色为参加检测的对象(当前四叉树节点),红色为碰撞对象。

如何使用

引入脚本 QuadtreeCollision.ts , 新建一个 QuadtreeCollision ,并初始化为世界坐标系下的对齐轴向的包围盒(AABB)。

// 这边是挂载在canvas下的脚本,用canvas的rect初始化创建。
this._quadCollision = new QuadtreeCollision(this.node.getBoundingBoxToWorld())

传入待检测的碰撞数组 cc.Collider[] 和测试对象的 cc.Collider

返回准备测试的 cc.Collider[] 和发生碰撞的 cc.Collider[]

// check(colliders: cc.Collider[], testCollider: cc.Collider)
const { retrieve, contacts } = this._quadCollision.check(this._all_collider, this.collider_role);
// retrieve 准备测试的对象(预览图中的绿色)   cc.Collider[]
// contacts 碰撞对象(预览图中的红色)   cc.Collider[]

实现原理

四叉树是什么?

白玉无冰是这样理解的,四叉树本身是树结构的一种,如果物体过多的话,先根据物体所处位置划分成四块,如果每个块中的物体数量还是很多的话,继续划分成四块。如下图红线所示。

检测的时候,就是根据待测试对象的位置,去找属于哪个块,再把这个块中的物体告诉你。如下图中的绿色物体。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值