第七章 寻路与地图对象(Pathfinding and Map Object)
这一章主要进行寻路与地图对象的部分工作。
一 A*寻路算法(A* Search Algorithm)
1 什么是A*寻路算法(Definition)
在计算机科学中,A*(A Star)是一种广泛应用于寻路和图形遍历的计算机算法,它是在多个节点(Node)之间进行寻找路径的过程。
由于其性能和精度非常好,所以得到了广泛的应用。
同时,它还是一种最优搜索算法(best-first search)。
它的目标在于寻找给定起始节点(start node)到目标节点(goal node)的最小消耗(最短距离、最短用时等)。
它是从起始节点开始向外延伸路径,直到找到符合标准的目标节点。
在这个过程中,它通过选择最小化的消耗(cost)实现:
其中:
g(n) g ( n ) 是第n个节点的实际消耗;
h(n) h ( n ) 是一个启发函数,这里是第n个节点的预估消耗;
f(n) f ( n ) 是第n个节点的最小化的消耗;
注意: A*算法在计算中,使用二叉树能获得更好的性能,但由于我们的计算量不是特别大,可能不会使用二叉树。
2 节点与格子信息(Node and Cell Data)
在A*中,每个节点也就相当于游戏中的格子,所以我们将节点信息写入到 Cell Data 中。首先新建我们的CellData.cs文件。
2.1 新建CellData.cs
先建立文件,然后再进行填充:
namespace DR.Book.SRPG_Dev.Maps
{
/// <summary>
/// 地图上每个格子的信息
/// </summary>
public class CellData : IDisposable
{
public void Dispose()
{
}
}
}
IDisposable接口可不加,加上只是为了以防万一以后要使用。
由于这里需要用到地图对象,我们可以先建立一个空的地图对象:
namespace DR.Book.SRPG_Dev.Maps
{
/// <summary>
/// 空的地图对象,以后填充
/// </summary>
[DisallowMultipleComponent]
public

本文详细介绍了A*寻路算法在SRPG游戏开发中的应用,阐述了算法的基本概念和原理,并逐步讲解了节点与格子信息的处理,包括CellData.cs的创建与填充。此外,讨论了寻路主函数的设计,包括如何寻路的接口IHowToFind.cs以及寻路过程中的关键步骤。最后,讨论了移动范围与攻击范围的处理,强调了不同显示范围算法的重要性。
最低0.47元/天 解锁文章
986





