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

Project1

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

[已经过期] A*寻路的卡顿问题

[复制链接]

Lv6.析梦学徒

老鹰

梦石
40
星屑
33427
在线时间
6553 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

1
发表于 2023-2-3 20:52:01 | 显示全部楼层
本帖最后由 百里_飞柳 于 2023-2-4 09:57 编辑

最后一段,在实际应用a星时,加个冷却时间咯

  1. class Game_Character
  2.   alias old_move_toward_character move_toward_character
  3.   def move_toward_character(character)
  4.     @astar_wait ||= 0
  5.     if @astar_wait <= 0
  6.       astr = AStar.new($game_map)
  7.       astr.set_origin(@x, @y)
  8.       astr.set_target(character.x, character.y)
  9.       astr.set_character(self)
  10.       path = astr.do_search
  11.       pass = [2, 4, 6, 8].any? {|d| self.passable?(character.x, character.y, d) }
  12.       if path.empty? || !pass
  13.         @astar_wait = 10
  14.         old_move_toward_character(character)
  15.       else
  16.         move_straight(path.shift)
  17.       end
  18.     else
  19.       @astar_wait -= 1
  20.       old_move_toward_character(character)
  21.     end
  22.   end
  23. end
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 02:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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