前天说没兴趣修寻路最后再说,然后昨晚闲得蛋疼鼓捣了一宿。
不过也算是解决了个严重的历史问题。
暴雪的宠物有一定的强制移动属性,用以避免玩家爬坡跳崖时BB绕远甚至卡住。
遗产和TC的宠物只是设定了跟随角度(右后方),如果玩家贴墙这个跟随位置就容易进虚空了。
这个直觉反应是给宠物位置做个Z轴地面检测,效果为

但是观感一般且有室内隐患,实际搞的方案是如果跟随路径有障碍就跟主人走一条道。

感觉暴雪也是这么弄的。
然后是recast的polypath在某类场景下的严重缺陷。

之前解析数据的测试效果还行(实际上参数不对好多mesh断层如上图右上角,这次重做了),但主要是因为这张图结构复杂度比较平均,绝大多数poly分区就相对合理。

但像贫瘠之地和艾尔文森林这种大平原+小茅房的场景,这种靠穿插临近poly寻路的就很容易平地大拐弯。
现在看自然是个显而易见的情况,但之前一方面没了解过这玩意儿,另一方面也以为行业背书的东西肯定不是问题所在,整得我有点抓狂。
理论上这类问题靠提高cell密度没法根本解决。我第一反应是在跑路径前先看下起点和终点是否相通(两点向量的z值和斜率也稍判断下),中间若没明显阻挡就把这条线当路径,从而避免再摸poly绕圈。

但这种拐角仍然需要跑navmesh处理,最后的方案也就是如果路径起点和终点都在navmesh上就先判定两点连线是否在同一mesh之内,是就直接拉线当路径,不是再摸poly生成,从而应付直角弯这类情况。
不是啥高明手段,就是recast的运作机制并不适配wow场景(特别是野外)出的问题,被迫小修小补。
顺道搞了点常规优化。比如追逐位置调整到了目标精确位置以及只在目标超出近战攻击范围之外时刷新追逐路径,还算比较明显地改善了怪物追人动作(及同期攻击动作)抽风的现象。
TC335的spline实现还是有点缺陷,不过这块也等剽窃高人成果了,我干不了这么神圣的活。
今天没啥营养。只是10分钟的活莫名鼓捣了一晚上,有点上火来吐个槽。
Edit: PTR的击飞闪避脱战是小BUG,这次一并修了(刚没想起来还有这事儿)。