Unity AI角色寻路 ——A星寻路

这篇博客介绍了Unity的A* Pathfinding Project插件,对比了A*寻路和导航网格NavMesh寻路的适用场景,并详细阐述了插件的使用步骤,包括设置网格参数、生成可行走区域、添加角色组件以及实现代码控制AI角色寻路。
摘要由CSDN通过智能技术生成

Unity 官方 A*Pathfinding Project 插件的使用学习笔记

A* Pathfinding Project 是基于Unity扩展编辑器开发的一款寻路插件,寻路原理是基于AStar寻路新算法,,也称作A* 寻路算法。

一、A* 寻路 VS 导航网格NavMesh寻路:
  • A*寻路: 动态寻路,适用于场景状态变化大的,比如游戏,但CPU消耗高
  • NaveMesh:静态寻路,适用于场景状态不怎么变化的,CPU消耗低
二、插件的使用
  • 创建Ground ,指定Layer层:Ground (地面)
  • 创建Obstacles,指定Layer层:Obstacles (障碍物)
  • 创建Empty,命名AStarPathfinder,添加脚本组件Pathfinder(Astar Path)
  • 选择Grid Graphs 网格寻路:
    * Width/Depth(nodes):网格节点数(网格范围大小)
    * Aspect Ratio:单位网格的长宽比
    * Center:设置网格的位置,若发现网格位置不理想,没关系,点击Snap Size 即可
    * Erosion iterations:默认值为0,调整该值避免人穿障碍物,亲测值为 1 即可
  • Collision testing:Mask >> 选择Obstacles,指定障碍物
  • Height testing:Mask >> 选择Ground,指定地面
  • 点击Scan 按钮,生成可行走区域
  • 创建Capsule(或者指定模型),命名Player, 代表AI角色,添加脚本组件 Seeker 用于计算路径
  • Player对象添加 SimpleSmoothModifier 脚本组件,用以平滑Player的移动路线(默认的路线曲曲折折的,人物移动时不平滑)
  • 创建 AstarPlayer 脚本,编辑代码控制Player寻路:
三、代码示例
using Pathfinding;

public class AstarPlayer:MonoBehaviour
{
   
	private float _moveSpeed = 10.0f;		//AI角色移动速度

	private Seeker _seeker;					//A*寻路路径计算组件
	private Vector3 _targetPoint;			//寻路目标点
	private Path _path;						//寻路计算出的路径
	private Vector3 _playe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值