设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

关于自动寻路的问题

查看数: 4555 | 评论数: 7 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-10-4 13:28

正文摘要:

让事件接近主角使用的应该是类似于鼠标点击的自动寻路,但是会卡住,像下图这样 按照论坛大佬的说法,把Game_Character.prototype.searchLimi的限制数12放大就可以了,但是放大到30以后仍然会卡住 于是找到了17年 ...

回复

yang1zhi 发表于 2019-10-6 20:14:14
本帖最后由 yang1zhi 于 2019-10-6 20:15 编辑

30不够就再加大。
距离越大,路线就越多的。
他要一个个路线试过来。
这东西,很耗资源的。

另外
这个寻路不是(接近主角)
接近主角,就是最短距离直接过来
蝉17 发表于 2019-10-5 20:00:05
白嫩白嫩的 发表于 2019-10-5 18:22
yep_moveRouteCore插件 可以指定走到某个坐标或者事件或者角色 跳到某个坐标事件或者角色

JUMP TO: x, y

感谢大佬,这个yep之前试验过,关于一楼那个插件,我发现用事件替代玩家就不会报错了,虽然有点蠢但问题还是顺利解决了
白嫩白嫩的 发表于 2019-10-5 18:22:32
yep_moveRouteCore插件 可以指定走到某个坐标或者事件或者角色 跳到某个坐标事件或者角色

JUMP TO: x, y
JUMP TO: EVENT x
JUMP TO: PLAYER

MOVE TO: x, y
MOVE TO: EVENT x
MOVE TO: PLAYER

Example: Move To: 20, 30
         Move To: Event 5
         Move To: Player
         Avoid Move To: 30, 40
         Crash Move To: 40, 50


除此之外还有其他功能,寻路已经试验了,穿梭于各种npc事件中毫无压力
蝉17 发表于 2019-10-4 17:55:06
xjzsq 发表于 2019-10-4 15:09
我试了一下上面的脚本,使用上面的插件后只会让人物在无法搜到到达NPC所在路径的情况下反复在两个格乱晃, ...

谢谢大佬,一张17*13的小地图全部可通行没有障碍,但是有很多NPC,每次随机让一个NPC在随机移动N步后停下,循环这个过程。用了很多并行事件和随机数,不知道是不是这个原因产生了BUG。我用的MV跟着steam更新到1.6.2,
蝉17 发表于 2019-10-4 17:45:29
wabcmcc 发表于 2019-10-4 15:26
RM官方論壇智能尋路簡單好用.
作者:Shaz

抱歉大佬我没有看懂,使用的时候让本事件移动到事件7处,是在移动路线里写脚本SmartPath event0 event7吗

点评

加上說明  发表于 2019-10-4 20:06
wabcmcc 发表于 2019-10-4 15:26:37
本帖最后由 wabcmcc 于 2019-10-4 20:05 编辑

RM官方論壇智能尋路簡單好用.
作者:Shaz

事件頁,第三頁,插件命令.

插件命令:
  SmartPath eventId1 eventId2  //使事件1找到事件2的路徑  
     例子: SmartPath 1 2
  SmartPath eventId x y            //使事件找到位置x,y的路徑
  SmartPath eventId cancel       //取消尋找事件的路徑
.....................................
event = number for specific event    //事件= 特定事件的號碼.
event = 0 for "this" event               //事件= 0當前事件的號碼.
event = $gameVariables.value(x) to get the event id from variable x
//事件 = 從變量x中獲取事件ID
x, y = coordinates or $gameVariables.value(#) to use a variable coordinate
//x,y =坐標或以使用變量坐標


  1. //=============================================================================
  2. // Smart Pathfinding
  3. // by Shaz
  4. // Last Updated: 2015.10.21
  5. //=============================================================================

  6. /*:
  7. * @plugindesc Allows events or players to do smart Pathfinding
  8. * @author Shaz
  9. *
  10. * @help
  11. *
  12. * Plugin Command:
  13. *  SmartPath eventId1 eventId2      # Makes event 1 find path to event 2
  14. *  SmartPath eventId x y            # Makes event find a path to location x, y
  15. *  SmartPath eventId cancel         # Cancel Pathfinding for event
  16. *
  17. *  event = number for specific event
  18. *  event = 0 for "this" event
  19. *  event = -1 for player
  20. *  event = $gameVariables.value(x) to get the event id from variable x
  21. *
  22. *  x, y = coordinates or $gameVariables.value(#) to use a variable coordinate
  23. *
  24. */

  25. (function() {
  26.   var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  27.   Game_Interpreter.prototype.pluginCommand = function(command, args) {
  28.     _Game_Interpreter_pluginCommand.call(this, command, args);

  29.     if (command.toUpperCase() === 'SMARTPATH') {
  30.       subject = this.character(eval(args[0]));
  31.       if (args[1].toUpperCase() === 'CANCEL') {
  32.         subject.clearTarget();
  33.       } else if (args.length > 2) {
  34.         subject.setTarget(null, eval(args[1]), eval(args[2]));
  35.       } else {
  36.         subject.setTarget(this.character(eval(args[1])));
  37.       }
  38.     }
  39.   };

  40.   var _Game_CharacterBase_initMembers = Game_CharacterBase.prototype.initMembers;
  41.   Game_CharacterBase.prototype.initMembers = function() {
  42.     _Game_CharacterBase_initMembers.call(this);
  43.     this._target = null;
  44.     this._targetX = null;
  45.     this._targetY = null;
  46.   };

  47.   Game_CharacterBase.prototype.setTarget = function(target, targetX, targetY) {
  48.     this._target = target;
  49.     if (this._target) {
  50.       this._targetX = this._target.x;
  51.       this._targetY = this._target.y;
  52.     } else {
  53.       this._targetX = targetX;
  54.       this._targetY = targetY;
  55.     }
  56.   };

  57.   Game_CharacterBase.prototype.clearTarget = function() {
  58.     this._target = null;
  59.     this._targetX = null;
  60.     this._targetY = null;
  61.   };

  62.   var _Game_CharacterBase_updateStop = Game_CharacterBase.prototype.updateStop;
  63.   Game_CharacterBase.prototype.updateStop = function() {
  64.     _Game_CharacterBase_updateStop.call(this);

  65.     if (this._target) {
  66.       this._targetX = this._target.x;
  67.       this._targetY = this._target.y;
  68.     }

  69.     if (this._targetX != null) {
  70.       direction = this.findDirectionTo(this._targetX, this._targetY);
  71.       if (direction > 0)
  72.       {
  73.         this.moveStraight(direction);
  74.       }
  75.     }
  76.   };
  77. })();
复制代码
xjzsq 发表于 2019-10-4 15:09:45
我试了一下上面的脚本,使用上面的插件后只会让人物在无法搜到到达NPC所在路径的情况下反复在两个格乱晃,但是试了很多情况都没有报错,建议楼主把出错的地图截个图。
另外,我个人认为珂能是楼主的工程MV版本比较高,导致与脚本不兼容(因为MV版本不断升级导致自带脚本变化了很多,我的测试工程是MV1.2版本的,不排除是因为1.6版本更换了脚本导致出错)
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-30 06:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表