Unity A* Pathfinding 文档


前言

A* Pathfinding 官网连接: 点击前往


提示:以下是本篇文章正文内容,下面案例可供参考

一、Pathfinder 面板

官方文档直接入口
在这里插入图片描述

1.Grid Graph

	最常用的网格渲染,适用大多场景,但对应开放型场景不适合。

2.Navmesh Graph

	导航网格。需要 放入 mesh。如果场景不变,这是最合适。

3.Point Graph

	不建议使用

二、Pathfinder.Guid 面板

官方文档介绍
在这里插入图片描述

Shape

		* 1. Guid  普通网格
		* 2. Isometric Guid 等间距网格。这个通常用来做2D
		* 3. Hexagonal 六边形网格
		* 4. advanced 高级网格

2D

		* 这只是一个方便属性,这个属性会读取/修改图形的旋转。与2D平面对齐的旋转决定了图形是否为2D。

Width

		* 宽。 网格图通常有10-500个节点宽。但默认情况下,它可以扩展到1024个节点。如果您发现自己需要一个非常高分辨率的网格,请考虑使用重铸图。

Depth

		* 深度。网格图通常有10-500个节点宽。但默认情况下,它可以扩展到1024个节点。如果您发现自己需要一个非常高分辨率的网格,请考虑使用重铸图。

NodeSize

		* 网格单位。  对于 Grid 类型,这是正方形的长度。对于Hexagonal ,不对应六边形的长度。

Center

		* 世界坐标位置。注意的是,寻路渲染,是从下往上的,所以 y轴尽量在 地面一下。

Rotation

		* 旋转坐标

Connection

		* 以度为单位旋转网格。Eight:8个点。Four:4个点 ,不能斜着走。

Cut corners

		* 是否对障碍物优化。 默认开启

Max Climp

		* 台阶高度。

Max Slope

		* 台阶坡度

Erosion iterations

		* 设置障碍物可移动边界。值越大,不可走区域也越大

Collider type

		* 碰撞类型
		* 1.Sphere:圆形碰撞
		* 2.Capsule:胶囊型碰撞
		* 3.Ray射线碰撞

Diameter

		*直径。障碍物不可走区域。值越大,不可走区域越大。当检查碰撞时,系统将检查是否有任何碰撞器在节点位置重叠特定形状。形状由类型字段决定。如果type设置为Ray,这不会影响任何事情。

Offset

		* 距地面高度。例如,如果地面位于y=0, collisionOffset =2 type = Capsule, height = 3,那么物理系统将查询是否有任何碰撞器在一个Capsule中,由底部球体组成的中心为y=2,顶部球体的中心为y=2+3=5。

Obstacle layer mask

		* 障碍物layer层级。

Ray length

		* 射线长度。 从上到下,多少距离开始计算寻路网格。

Mask

		*可以寻路的layer层级

Thick raycast

Unwalkable when no ground

		*当没有发现地面时,用高度光线投射使节点无法行走。

三、常用的方法

//Scans all graphs   全局计算网格
AstartPath.active.Scan();

//This holds all graph data 全局网格数据
var data = AstarPath.active.data;

//查找某个图表
var g = data.FindGraph(gra => gra.GetType() == typeof(类型))

//更新网格数据,需要Bounds数据
AstarPath.active.UpdateGraphs(Bounds);

//Seeker 类,相当于Unity 中的Navigation 自动导航脚本
//开启某一段导航,首先要在某个物体上加上该脚本,并获取引用_seeker,
//返回值是个Path,但是由于计算时间问题,并不能保证是最终计算好的路径
 _seeker.StartPath(start,end)//因此有个计算完成回调. 该回调才是最终的计算好的路径。
//参数为 Path 类型
_seeker.pathCallback += 你的方法

// 获取路径中的所有点。可以利用这些点,进行自动行走。里面还有很多数据,需要的自己查看
path.vectorPath

//还有另一种移动方式。这种方式可以通过按键wasd 进行移动
//给移动物体添加, AIPath脚本,同样的会自动添加Seeker脚本,并获取AIPath引用 aiPath
//参数为 deltaPosition。 意思就是位置差,也可以理解为移动方向
aiPath.Move(deltaPosition * Time.deltaTime * speed)

//但是,这种移动呢,可以在任何区域移动,哪怕是障碍物区域、无渲染网格区域。
//所以,为了解决这个问题,需要设置:
aiPath.constrainInsideGraph = true;


//后续。。。。。。。。。。。。。。。。





  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
烘培桥是指将场景中的网格图(NavMesh)生成并保存在磁盘上,以便在运行时进行快速的路径计算。要在Unity中使用A*路径查找算法,需要使用Unity的NavMesh系统,并使用A*寻路插件来执行路径计算。 以下是在Unity中使用A*路径查找算法的步骤: 1. 安装A*寻路插件:从Unity Asset Store中下载并导入A* Pathfinding Project Pro插件。 2. 创建场景:在Unity中创建一个场景,并添加游戏对象和地形。 3. 创建NavMesh:使用Unity的NavMesh系统来创建场景的NavMesh。在场景中选择菜单栏的“Window”->“Navigation”,打开“Navigation”窗口,然后单击“Bake”按钮来烘焙NavMesh。 4. 添加A*路径查找组件:在场景中选择要使用A*路径查找算法的游戏对象,然后右键单击并选择“Add Component”->“A* Pathfinding”->“A* Pathfinding Component”。这将添加一个A*路径查找组件到游戏对象上。 5. 设置路径查找组件:在A*路径查找组件的属性窗口中,设置起点和终点,以及其他路径查找参数,例如搜索半径、移动速度和路径平滑等。 6. 执行路径查找:在游戏运行时,调用A*路径查找组件的路径查找函数来执行路径查找。例如,在脚本中调用“GetComponent<AstarPath>().Scan()”函数来执行路径查找。 7. 显示路径:在游戏运行时,使用A*路径查找组件的路径可视化功能来显示路径。例如,在脚本中调用“GetComponent<AstarPath>().DrawPath()”函数来显示路径。 以上是在Unity中使用A*路径查找算法的基本步骤。通过使用A*寻路插件和Unity的NavMesh系统,可以轻松地实现高效的路径查找功能,从而为游戏开发带来更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值