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

Project1

 找回密码
 注册会员
搜索
查看: 1610|回复: 1
打印 上一主题 下一主题

[已经过期] 寻路脚本出错,如何修改

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3293
在线时间
1463 小时
注册时间
2014-8-9
帖子
337
跳转到指定楼层
1
发表于 2017-8-31 21:31:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 huajinyu123 于 2017-8-31 21:56 编辑

我在网上下了个寻路脚本
然而执行寻路的事件老是卡在单面不可通行地图块那里,(打开附件,运行,看一下就明白了)
我检查了半天也没查出问题
求解

第二个附件fp.rar才是展示问题之所在

Project3.rar

188.99 KB, 下载次数: 65

fp.rar

189.79 KB, 下载次数: 71

Lv5.捕梦者 (版主)

梦石
1
星屑
23984
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2017-9-2 11:42:49 | 只看该作者
本帖最后由 guoxiaomi 于 2017-9-2 11:48 编辑

我下载了 fp.rar 文件,把脚本 - 附加里的 astarmove 方法稍微修改了一下,问题解决了:

RUBY 代码复制
  1. def astarmove(to = 0,from = "self")
  2.     from = @id if from=="self"   
  3.     from = from==0 ? $game_player : $game_map.events[from]
  4.     to = to==0 ? $game_player : $game_map.events[to]
  5.     #p from.id,to.id if from.is_a?(Game_Event)
  6.     unless from.moving?
  7.       if (from.x-to.x).abs<=1 and (from.y-to.y).abs<=1
  8.  
  9.       else
  10.         if !@dr
  11.           @astr = AStar.new($game_map)
  12.           @astr.set_origin(from.x,from.y)
  13.           @astr.set_target(to.x,to.y)        
  14.           @dr = @astr.do_search[0..5]
  15.         else
  16.           move_dr(@dr.shift)
  17.           @dr = nil if @dr.empty?
  18.         end
  19.       end
  20.     end
  21.   end


优化的原则是:
1. 并不在每次行走都执行寻路,而是等前一次的寻路完全走完
2. 只取 astar 算法找到的前 5 步,这样即使目标改变也能尽快调整

原来的写法是每走一步都会执行寻路,其实没有必要……
问题出在哪?我并不知道……

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 可惜楼主没影了

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-9-21 18:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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