Project1

标题: 【插件】寻路插件QJ-FindPath【V1.6】 [打印本页]

作者: 仇九    时间: 2021-12-5 15:05
标题: 【插件】寻路插件QJ-FindPath【V1.6】
本帖最后由 仇九 于 2022-12-28 19:06 编辑

一般来说使用MV原生的寻路算法,寻路半径只有12格。
将寻路半径改大时,改到18+的时候就开始卡顿了。
为了解决这个问题我写了这个脚本。
使用了库:https://github.com/qiao/PathFinding.js
* ================================================================
* 1.此脚本只有两个可以写在移动路线中的“脚本”中指令。
*   (1) this.fpXy(tarX,tarY)
*   向指定点移动一格。
*   (2) this.fpChar(characterId)
*   向指令事件/玩家移动一格。
*   characterId:写-1时代表玩家,写大于0的数字代表指定事件。写其余数字无效。
*   (3) 也可在最后加参数showTrace:
*      this.fpXy(tarX,tarY,showTrace)
*      this.fpChar(characterId,showTrace)
*      showTrace写true时,该事件每进行一次寻路,都会在地图上显示出路径的格子图。方便检查。
*      同时只能有一个事件的寻路的showTrace为true。
*      此图仅用于测试,在正式游戏中建议关闭。
* 2.库一共提供了如下几种寻路算法:
*   0.AStarFinder * (A*算法)
*   1.BestFirstFinder
*   2.BreadthFirstFinder *
*   3.DijkstraFinder *
*   4.IDAStarFinder.js *
*   5.JumpPointFinder * (跳跃点算法)
*   6.BiAStarFinder (双向A*算法)
*   7.BiBestFirstFinder
*   8.BiBreadthFirstFinder *
*   9.BiDijkstraFinder *
*   其中加*的能够确保找到最短路径,前面加Bi的是双向寻路算法。
*   不同的游戏适合不同的算法。
* 3.若无特殊要求,只建议使用第 0 个算法。
*   虽然第0个和MV原本的寻路一样都是A*算法,但是通过预处理和数据再利用,其运算效率比MV
*   原有的寻路要快很多。可以支持比较大的地图和特别复杂地图的寻路。
* 4.此脚本不支持像素移动的寻路,若有此特殊要求请联系我。
* 5.尽管此插件将原有的寻路范围扩展至近百,但仍旧需要考虑效率的影响。
*   地图的复杂度对寻路的效率的影响相对来说小,但是地图的大小对寻路的效率的影响很大。
*   以默认的AStarFinder为例:
*   (1)在范例1中的地图中:事件在(0,0)玩家在(10,12),事件追逐玩家。
*      初始寻路路径长度:44
*      第一次寻路(需进行初始化,所需时间长): 范围为0.90~1.00ms 平均0.95ms
*      之后寻路: 范围为0.11~0.21ms 平均0.15ms
*   (2)在范例2中的地图中:事件在(0,0)玩家在(99,99),事件追逐玩家。
*      初始寻路路径长度:860
*      前三次寻路(前几次寻路时间不稳定,均取前三次的最大值): 范围为14.00~17.00ms 平均15.17ms
*      之后寻路: 范围为0.94~1.40ms 平均1.07ms
*   注意地图越大,绘制移动轨迹(上方第1点中的showTrace为true时)所消耗的资源越多。
*   若想测试具体耗时或者性能请不要绘制轨迹。
*   地图大小最好小于100*100,但是地图的复杂度可任意设置。
* 6.斜向移动。
*   有些算法默认了必须进行斜向移动,例如JumpPointFinder,即使右方的插件参数中将斜向移动设为false,寻路时
*   事件仍旧会斜向移动。
* 7.玩家寻路。
*   玩家点击地图,系统进行自动寻路时是否使用本插件的寻路方法。
* ================================================================

* ================================================================
链接:https://pan.baidu.com/s/18KsVDIgrlynQlLjWqFQVFg?pwd=9999

作者: RyanYe    时间: 2021-12-5 19:28
支持楼主,比Shaz版主的插件更优

作者: 被遗忘的角落    时间: 2021-12-5 21:32
支持,好用的
作者: OOO三蛋    时间: 2021-12-6 04:40
好耶 !支持!
作者: hhj8889    时间: 2022-1-9 16:31
谢谢楼主,很好用,这个脚本对玩家有用吗,可以让玩家朝指定位置移动吗
作者: hhj8889    时间: 2022-1-11 14:06
楼主,我这边用的时候出了个问题.
从小尺寸地图进入大尺寸地图的时候,如果大尺寸地图有事件就会报错,没有事件就不会报错,这个要怎么办
作者: 仇九    时间: 2022-1-11 16:06
hhj8889 发表于 2022-1-11 14:06
楼主,我这边用的时候出了个问题.
从小尺寸地图进入大尺寸地图的时候,如果大尺寸地图有事件就会报错,没有事 ...

可以让玩家朝指定位置移动。
我已经更新下载链接了,更新后的新版本(V1.3)便没有这个bug了。
作者: 孔德俊    时间: 2022-2-3 23:15
楼主,支持mz吗?我试了好几个优化的插件了,都不支持
作者: hy2000    时间: 2022-3-14 14:59
试了一下,角色移动不知道为什么人物会莫名其妙的下陷;同时如果目的地无法到达的话会在很近的障碍物直接卡住
作者: lcx666s    时间: 2023-3-18 17:16
这个寻路算法似乎不会考虑到地图的地形,只是简单判断图块是否可以通行。作者可否优化一下?@仇九
作者: testevil    时间: 2023-3-20 07:15
感谢楼主分享!
作者: RadianceUmbra    时间: 2023-4-19 19:48
实测非常好用捏,感谢。
作者: 是阿浪啊    时间: 2023-4-20 13:05
多谢大佬分享
作者: Arrose    时间: 2023-7-1 15:36
这个插件有MZ版本吗?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1