1

我从事一个需要使用 A* 算法的项目。在这个项目中,你用左键选择你的玩家,然后用右键在地图中引导他,就像千策略游戏的玩法一样。图形是 2D 的,有点像饥荒,游戏是用 SFML / C++ 开发的。

我需要使用 A* 来代替玩家,事实上,如果他的道路上出现障碍物,他必须避开它。但目前,我不知道如何在地图上应用网格,我想在任何地方放置任何树木/岩石和其他东西,以免看到网格单元。目前开放列表仅由像素组成,我认为这不是一个好的解决方案^^,算法很慢。如果您在保持快速算法的同时有任何逼真的渲染解决方案,我会很高兴听到它。:)

先感谢您,

4

2 回答 2

2

你有截图吗?

寻路网格和渲染网格可以不同。塞尔达使用不同大小的瓷砖进行移动和渲染。

导航网格

这对您的地图结构来说可能是多余的,但您可以使用导航网格。

在此处输入图像描述,在此处输入图像描述

编辑:如果你还没有读过,Amit 有一个很好的资源:http ://theory.stanford.edu/~amitp/GameProgramming/

于 2013-09-24T21:19:19.117 回答
0

您正在寻找的是离散化。这个淫秽的名字背后有一个简单的原则:你不能处理无限量的数据。

然后您需要对您的世界进行转换:您可以将您的世界划分为某种网格(这就是导航网格),而不是让您的角色/单位在任何位置(x 和 y 是实数)和航路点正在做),并且只允许您的字符在这些单元格(或点,您可以随心所欲地看到)上继续前进。这是离散化:您将从连续值(实坐标)变为离散值(整数坐标/点)。你走得越精确,它看起来就越好。

完成此操作后,在单元格/点之间分配移动成本相当简单,并且也对其执行 A*。

于 2013-09-25T11:22:17.717 回答