Unity3d 寻路插件A*Pathfinding学习与研究(一)

Unity3d 寻路插件A*Pathfinding学习与研究(一)



参考资料

1.A* Pathfinding Project
2.从A*寻路项目开始
3.[Unity3D插件系列]-A* Pathfinding Project 学习(一)


下载链接

https://arongranberg.com/astar/download
https://pan.baidu.com/s/1-nUJxwR0GOa9UfN9YuVZ1Q


从A*寻路项目开始

寻路就是寻找A点和B点之间的最佳路径,这就是A*路径发现项目所做的,在本教程中,您将学习如何在新场景中设置项目,并在避免障碍的同时获得一个简单的AI移动。

这个AI你将写将不会很先进,它只是最低数量的代码,以获得移动和跟随一条道路。如果您想要更高级的人工智能,您可以扩展本教程中将要编写的脚本,或者使用(或扩展)AIPath或里奇包中包含的脚本(见第2部分,RichAI组件的基本用法)。


概述

  1. A*Pathfinding插件的核心脚本就是AstarPath.cs脚本,它是场景中使用路径查找的组件。它是其他脚本的基础,负责生成寻路图形,并调整所有设置
  2. AstarPath.cs脚本只能在场景中存在一个,不能重复
  3. AstarPath.cs脚本可以在菜单栏->Components–>Pathfinding–>Pathfinder上找到。
  4. 第二个重要的组件是Seeker.cs组件,附加在需要使用路径查找的游戏对象上,例如AI
  5. 为了能让寻路的对象移动,需要添加脚本,这个移动的脚本可以自己编写,也可以用已经写好的移动脚本(AIPath, RichAI, AILerp)
  6. 处理路径平滑的脚本SimpleSommthModifier.cs,处理之后路径平滑或者简化一些

首先是场景准备

  1. 先创建一个Panel,让其坐标位于(0,0,0)上,然后x轴、z轴扩大10倍,y轴不变
    这里写图片描述
  2. 再创建几个Cube,设置成障碍物
    这里写图片描述
  3. 接着设置Tag Edit->Project Settings->Tags&Layers
    这里写图片描述
    一个Tag设置成Ground->地面
    一个Tag设置成Obstacle->障碍物
    将Planel的Tag设置成Ground
    将创建的一个Cube障碍物设置成Obstacle
    这里写图片描述这里写图片描述

现在我们来添加寻路网格

创建一个新的GameObject,命名为“A*”,向其添加“AstarPath”组件(菜单栏->Components->Pathfinding->Pathfinder)。
这里写图片描述这里写图片描述
Width跟Depth设置网格的长度和宽度,由于跟Unity的单位是一样的,设置成100*100就行了
NodeSize节点的宽度,设置成1就行了
MaxClimb可以爬升的最大高度
MaxSlope可以爬升的最大斜度
Erosion iterations 这个就是障碍物避让的设置,如果寻路的时候穿过障碍物的话就可以把这个设置大一些
这里写图片描述

添加Ai

这里写图片描述
添加一个胶囊体,添加移动脚本让它移动
这个时候有两种选择,1就是自己编写脚本,更能理解这个脚本的运行过程
2就是使用已经写好的脚本AIPath, RichAI and AILerp
AIPath脚本可以用于任何图形,而RichAI主要用于基于Navesh的图形。虽然AIPathRichAI脚本松散地遵循路径,但AILerp脚本使用插值非常精确地沿着路径移动,但可能不是以最现实的方式。你用哪一个取决于你的游戏。不同的脚本在不同的示例场景中使用,您可以查看它们的不同之处。

在这个案例中,我们可以添加AIPath脚本,这个组件只是一个非常简单的助手脚本,它将告诉AIPath脚本移动到特定的位置。将来,您可能会用自己的游戏特定脚本来替换这个脚本。

添加AIDestinationSetter组件,有一个名为“Target”的字段,将前面创建的“Target”GameObject分配给这个字段。
这里写图片描述

平滑

OK,对象是不是开始朝着目标点移动了。是不是感觉有什么不对劲,对,路径怎么歪歪曲曲的
这里写图片描述
这个时候就要添加光滑组件了
给对象添加上这个组件
菜单栏–>Components–>Pathfinding–>Modifiers–>Simple Smooth
现在再按下播放,路径应该看上去更流畅,正如我们所希望的。
这里写图片描述
OK。这次的学习就到这里吧,后续会有更新的。
有什么不对的请大家给我指正出来,谢谢。。。

猜你喜欢

转载自blog.csdn.net/q764424567/article/details/80528457