第七章 寻路与地图对象(Pathfinding and Map Object)
这一章主要进行寻路与地图对象的部分工作。
一 A*寻路算法(A* Search Algorithm)
1 什么是A*寻路算法(Definition)
在计算机科学中,A*(A Star)是一种广泛应用于寻路和图形遍历的计算机算法,它是在多个节点(Node)之间进行寻找路径的过程。
由于其性能和精度非常好,所以得到了广泛的应用。
同时,它还是一种最优搜索算法(best-first search)。
它的目标在于寻找给定起始节点(start node)到目标节点(goal node)的最小消耗(最短距离、最短用时等)。
它是从起始节点开始向外延伸路径,直到找到符合标准的目标节点。
在这个过程中,它通过选择最小化的消耗(cost)实现:
f(n)=g(n)+h(n) f ( n ) = g ( n ) + h ( n )
其中:
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