2d碰撞检测

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

 一:网格碰撞      

        网格碰撞检测筛选目标的经典传统算法,英雄无敌,三国志这类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、付费专栏及课程。

余额充值