gpt4 book ai didi

algorithm - 寻路算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:19 25 4
gpt4 key购买 nike

我是游戏编程的新手 我目前正在使用 unity 的 2D 功能重新制作 2D 游戏以进行练习。所以我只是对一件事有点困惑,到目前为止,我游戏中的每个敌人都是愚蠢的(他们在预定义的路径上移动)但是这个敌人,外星人直升机,无论玩家走到哪里都会飞行并跟随玩家。我的问题是我应该实现任何寻路算法吗?我研究过 A*,但我想弄清楚 A* 是否对我的环境有帮助,因为玩家会移动,而敌人必须继续寻找最短路径。我尝试为这个 AI 编写代码,当没有障碍时我的代码运行完美,但我的游戏有障碍,所以我想要一些高效的东西,那么你们认为我应该实现 A* 或任何其他算法吗?

最佳答案

关于 AI,如果您在游戏中遇到障碍,则需要实现某种寻路。请注意,只取最短的 block (节点)不是一种选择,因为这样的算法是不完整的,即即使有路径也可能找不到路径。想象一下 ab 之后:

(墙)(墙)(墙)

(免费)(免费)a(墙)b

(墙)(墙)(墙)

最短(最佳)路径是向左的,因为向上、向下和向右都被阻挡了。然而,在下一步行动中,最好的行动是向右走,因为它更近了。这就是 a 会陷入循环的原因。所以是的,你是对的,你确实需要获取从 ab 的路径。它通常采用节点列表的形式。然后您只需选择列表的头部(即索引 0 处的元素)。

A* 是您的最佳选择。它完整​​、高效,甚至可以为您提供最短路径。路径重新计算不应该成为小型游戏的问题。此外,如果您的游戏网格中的障碍物在游戏期间是静态的,您可以预先计算路径并缓存它们。例如,从 (x,y) 到 (x1,y1) 的路径是 [(a,b), (c,d) ...]。因此,您可以将其存储在某种 map 数据结构中,其中键是两点 - 起点、目标和值 - 路径。这当然取决于您是否要将敌人归类为其他敌人的障碍以及其他游戏因素

关于algorithm - 寻路算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30547093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com