2d碰撞检测

本文介绍了2D游戏中的两种碰撞检测方法:网格碰撞和四叉树碰撞检测。网格碰撞通过划分格子减少不必要的碰撞计算,适用于数据较疏松的情况,但内存消耗大且不适合无限延展场景。四叉树碰撞检测利用空间分层,降低计算复杂度,适用于对象密集场景,能有效减少冗余计算。
摘要由CSDN通过智能技术生成

      碰撞检测分为两个步骤,一个是筛选目标,一个是进行计算是否碰撞。

 一:网格碰撞      

        网格碰撞检测筛选目标的经典传统算法,英雄无敌,三国志这类SLG,甚至是MOBA类游戏中都常用这种方法。思路就是在大地图中划分格子形成网格,每个战斗单位占据一个格子,当地图生成对象的时候,在对应的格子里面添加对象,删除的时候移除出来,对象位置,模型改变的时候,更新格子信息。检测碰撞只要单位时间内把以角色为中心点的9个格子的所有对象添加到列表中,然后遍历列表对象和角色进行碰撞检测。


A位置的对象 获取周边的格子对象得到的列表是[B],只需要检测A和B是否碰撞就可以了,减少了不必要的A和别的对象的碰撞检测,这样确保了即使对象很多,只要不再相邻格子里都无需计算,只需要更新位置信息即可,网格的优点是当数据比较疏松,格子大小均匀的时候效率高,缺点是1:对于大场景特别消耗内存,而且不太适合做无限延展的场景,2:查询每个对象周围的东西时候,不太方便,格子的粒度越细,速度越慢。3:如果数据比较精密,冗余数据多,重复计算碰撞。


二:四叉树

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值