A*Pathfinding Project Pro使用

1.导入A Pathfinding Project Pro 4.2.17.unitypackage

2.先创建一个Panel,让其坐标位于(0,0,0)上,然后x轴、z轴扩大10倍,y轴不变

3.再创建几个Cube,设置成障碍物

4.设置layer

新增两个layer


将Planel的layer设置成Ground
将创建的一个layer障碍物设置成Obstacle

5.添加寻路网格

创建一个新的GameObject,命名为“A*”,向其添加“AstarPath”组件

(选中该物体-》菜单栏->Components->Pathfinding->Pathfinder)

6.设置Grid Graph

Width跟Depth设置网格的长度和宽度,由于跟Unity的单位是一样的,设置成100*100就行了

NodeSize节点的宽度,设置成1就行了

MaxClimb可以爬升的最大高度

MaxSlope可以爬升的最大斜度

Erosion iterations 这个就是障碍物避让的设置,如果寻路的时候穿过障碍物的话就可以把这个设置大一些

高度测试:

      为了把寻路的node放置到场景中的正确位置,一般使用从node向下发射一个射线来进行检测,寻路node会被放置到碰撞点的位置。我们将mask设置为Ground,因为只希望寻路节点与Ground进行检测。

碰撞测试:

      当寻路节点被放置之后,它就会被用来检测是否可行走,一般可以使用sphere,capsule或ray来进行碰撞检测。一般Capsule会使用和AI对象一样的半径和高度来进行碰撞。为了让AI对象和障碍物有一些边缘,这里将Capsule的半径设置为2.另外将碰撞检测的layer设置为Obstacles,因为不想让地面成为障碍。

 好了,都准备好了,点击底部的Scan,我们就可以看到grid Graph的生成了,可以再编辑窗口中看到辅助线显示的寻路网格,包括了可寻路的区域和障碍区域。

7.添加AI

创建Capsule

装在组件seeker、 AIpath、 AIDestinationSetter Character Controller

8.指定目标物体

AIDestinationSetter组件,有一个名为“Target”的字段,创建“Target”GameObject分配给这个字段。

9.平滑

给对象添加上这个组件
菜单栏–>Components–>Pathfinding–>Modifiers–>Simple Smooth
现在再按下播放,路径应该看上去更流畅。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你好!A*寻路算法是一种用于图形路径搜索的算法,常被用于游戏开发中的AI角色移动控制等场景。下面是一个使用A*算法实现的寻路项目的流程: 1. 定义地图数据:将地图转化为网格,每个网格有一个代表该位置是否可以通行的状态值(如0表示可以通过,1表示障碍物)。 2. 定义节点类:节点类表示A*算法中的一个节点,包括该节点的位置、估价函数值、父节点等属性。 3. 定义启发函数:启发函数用于评估节点的优先级,一般使用曼哈顿距离或欧几里得距离。 4. 定义开放列表和关闭列表:开放列表用于存放待扩展的节点,关闭列表用于存放已扩展的节点。 5. 实现A*算法:从起点开始,按照启发函数的优先级将节点加入开放列表,重复执行以下步骤直到找到终点: - 从开放列表中选择优先级最高的节点; - 将该节点从开放列表中移除,并加入关闭列表; - 拓展该节点的邻居节点,如果邻居节点不在开放列表中,则加入开放列表,并计算它的估价函数值和父节点;如果已经在开放列表中,则比较新的估价函数值和原来的值,如果新的值更小,则更新估价函数值和父节点。 6. 回溯路径:当找到终点后,可以通过回溯每个节点的父节点,找到一条从起点到终点的最短路径。 7. 实现可视化:将路径在地图上可视化,方便查看和调试。 以上是一个基本的A*寻路项目的流程。希望这些信息能够帮助到你!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值