SRPG游戏开发(二十三)第七章 寻路与地图对象 - 一 A*寻路算法(A* Search Algorithm)

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

返回总目录

第七章 寻路与地图对象(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 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值