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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
150
在线时间
12 小时
注册时间
2022-8-3
帖子
2
跳转到指定楼层
1
发表于 2023-2-2 23:43:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Atea 于 2023-2-2 23:43 编辑

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

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

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

QQ截图20230202233610.png

Lv6.析梦学徒

老鹰

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

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

2
发表于 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
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
150
在线时间
12 小时
注册时间
2022-8-3
帖子
2
3
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 14:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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