unity利用A*算法进行2D寻路

本文介绍了在Unity中使用A*算法实现2D寻路的方法,地图采用Tilemap作为基础。通过结合贪心算法和广度优先搜索的优势,A*算法在存在障碍时能有效找到最短路径。作者提供了代码示例,并强调理解算法原理的重要性。
摘要由CSDN通过智能技术生成

找了份新工作之后,忙的要死,都没时间鼓捣博客了,深深的感受到资本家的剥削,端午节连粽子都没有,每天下班累得跟条咸鱼一样(可能就是)。

 

刚好最近忙里偷闲,就来写写unity在2D下的AStar寻路算法。

地图用untiy的tilemap来贴。

大概的效果,没有去找好看的图片,将就弄点颜色表示:

黑色表示障碍,绿色表示路径,开头和结尾也是用的绿色,好懒o(╥﹏╥)o

 

原理和详细解释,还是参考的这位国外的大神:

https://www.redblobgames.com/pathfinding/a-star/introduction.html

 

解说如下:

A*算法其实可以理解为是贪心算法和广度优先搜索算法的结合体。

 

广度优先搜索算法,每次都可以找到最短的路径,每走一步都会记下起点到当前点的步数,优点是绝对能找到最短的路径,缺点就是地图越大计算量会变得很巨大。

 

贪心算法,每次都是走当前点距离终点最近的格子,在没有障碍的情况下效率很高,但是如果有障碍的话,就很绕路。

 

A*算法结合两者,计算当前走过的步数 与 当前点到终点的距离 之和作为走格子的依据,优点就是当有障碍物时,能找到最短距离并且计算量没有广度优先搜索大,没有障碍物时,效率和贪心算法一样高。

 

其实代码量没多少,直接贴出来了,具体也不解释,看注释吧,我好懒。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;

public class MapBehaviour : MonoBehaviour
{
    public Vector2Int mapSize;//地图尺寸

    public Tilemap tilemap;
    public Tile normalTile;//白色tile
    public Tile obstacleTile;//黑色tile
    public T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值