Project1

标题: A*寻路的卡顿问题 [打印本页]

作者: Atea    时间: 2023-2-2 23:43
标题: A*寻路的卡顿问题
本帖最后由 Atea 于 2023-2-2 23:43 编辑

在游戏中,当玩家在一个事件到达不了的位置时,游戏会变的很卡顿

有大佬知道怎么解决吗?
A*寻路

QQ截图20230202233610.png (30.36 KB, 下载次数: 18)

QQ截图20230202233610.png

作者: 百里_飞柳    时间: 2023-2-3 20:52
本帖最后由 百里_飞柳 于 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
复制代码

作者: Atea    时间: 2023-2-4 01:47
百里_飞柳 发表于 2023-2-3 20:52
最后一段,在实际应用a星时,加个冷却时间咯

还是会卡顿




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