【发布时间】:2015-04-29 21:35:06
【问题描述】:
我一直在玩 Unity,我已经实现了 A* 算法,用于在 2D 方形节点网格上进行一些路径查找。从那以后,我将寻路扩展到了一个 3D 节点网格,所以我基本上有一个 2D 网格节点作为地面,另一个 2D 网格节点在它上面充当天空。
为此的计划是使用 A* 创建机场和航空旅行。到目前为止,我的两个网格通过机场连接在一起。例如,当我在机场节点的地面网格上搜索相邻节点时,我还将天空网格中的相邻节点添加到列表中。这允许从机场“起飞”到天空中的相邻节点。同样,当在天空中时,我搜索相邻节点,如果相邻的地面节点之一是机场,我将其添加到邻居列表中。这允许飞机从空中“降落”到机场。
到目前为止,我有与地面旅行的各种地形相关的移动成本,而我的空中旅行目前为 0,但是在往返天空的“起飞”和“着陆”运动期间有很大的移动成本。这是希望在天空中创造一条更快的路径,这很值得,但是为了平衡会增加很大的一次移动成本,所以在两个机场之间走4个节点是没有意义的。
这一切都很好。如果乘坐飞机的旅行成本低于他必须在地面上行走的旅行成本,那么这个人会选择乘坐飞机。然而,我的问题是,有时地面路径,以及与之相关的任何成本的路径有时会在机场上选择,而很明显,这样做比乘坐飞机要覆盖更多的地面节点。
我有一种感觉,这可能是由于对目标的路径搜索,而不是机场,机场可能在另一个方向,因此机场不是任何被搜索节点的邻居节点,因此甚至没有考虑,即使它可能是一个更快的路径解决方案。
这听起来像是我遇到的问题吗?如果我想做这样的事情,我是否使用了错误类型的算法?我能做些什么来帮助附近的机场始终接受检查,或者给予他们更多的关注?我想我可以以较低的移动成本或其他方式添加通往它们的道路......
感谢您的帮助!
【问题讨论】:
标签: c# unity3d artificial-intelligence path-finding