寻路系统算法

Dijkstra 算法:

  • 初始设置当前节点,把所有其他节点加入到未访问节点,设置权重为无穷大。
  • 从当前节点开始遍历,如果访问到未访问节点,更新未访问节点的权重。如果访问到已访问节点,且权重比之前小,那么刷新对应节点的父节点和权重值。
  • 从未访问节点中取出权重最小的值继续遍历

优先遍历周围节点是属于广度优先算法。一定能拿到最优解
从起点到目标搜索

A* 算法:

是在Dijkstra 权重加上当前节点位置到目标位置距离,更容易到达目标
启发式算法只是用经验寻找近似解,不保证是最优解
从起点到目标搜索

D* 算法

从目标到起点搜索,目标点不变的时候可以共享以前的查询数据

势力图:

在动态对象上加上衰减的的影响权重,让其它对象寻路的时候不会挤在自己周围

https://hlog.cc/archives/89/
在这里插入图片描述

想要寻路优化

需求

  • 怪物Follow 玩家
  • 玩家频繁修改位置,对于怪物需要频繁寻路
    问题
  • 怪物寻路的时候没有考虑其他信息,不会绕路
  • 怪物被前面怪物挡住,后面速度快的时候会因为挡住而产生时停效果(抖动)
  • RVO2 碰撞避免修正位置对左右碰撞表现会比较好,前后是弹开的表现,不符合实际物理表现。
    思路
  • 先不考虑消耗问题,在玩家周围产生NavModifier 格子对修改导航地图。这样寻路的时候会绕开
  • 考虑到导航是依靠导航生成的几何体进行导航。所以对玩家周围的格子,不管有没怪物都添加到导航地图上
    失败
  • 期望是导航的时候几何体相对问题,结果相同成本的NavModifier 格子 会在编译的时候优化成为一个几何体形状。也就是说不是期望的玩家周围是格子形状的导航几何体。此方案不可行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值