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

Project1

 找回密码
 注册会员
搜索

A*寻路的卡顿问题

查看数: 1945 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-2-2 23:43

正文摘要:

本帖最后由 Atea 于 2023-2-2 23:43 编辑 在游戏中,当玩家在一个事件到达不了的位置时,游戏会变的很卡顿 有大佬知道怎么解决吗? A*寻路 #==================================================================# # ...

回复

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

还是会卡顿

点评

已经改了,重新复制下  发表于 2023-2-4 12:54
额,我才发现打错了字,atar_wait 都要改成 astar_wait  发表于 2023-2-4 09:56
百里_飞柳 发表于 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, 2025-6-10 15:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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