Unity3D插件A*Pathfinding插件分享《A*寻路插件》
Posted 恬静的小魔龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D插件A*Pathfinding插件分享《A*寻路插件》相关的知识,希望对你有一定的参考价值。
Unity3d 寻路插件A*Pathfinding学习与研究
参考资料
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组件的基本用法)。
概述
- A*Pathfinding插件的核心脚本就是AstarPath.cs脚本,它是场景中使用路径查找的组件。它是其他脚本的基础,负责生成寻路图形,并调整所有设置
- AstarPath.cs脚本只能在场景中存在一个,不能重复
- AstarPath.cs脚本可以在菜单栏->Components–>Pathfinding–>Pathfinder上找到。
- 第二个重要的组件是Seeker.cs组件,附加在需要使用路径查找的游戏对象上,例如AI
- 为了能让寻路的对象移动,需要添加脚本,这个移动的脚本可以自己编写,也可以用已经写好的移动脚本(AIPath, RichAI, AILerp)
- 处理路径平滑的脚本SimpleSommthModifier.cs,处理之后路径平滑或者简化一些
首先是场景准备
- 先创建一个Panel,让其坐标位于(0,0,0)上,然后x轴、z轴扩大10倍,y轴不变
- 再创建几个Cube,设置成障碍物
- 接着设置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的图形。虽然AIPath和RichAI脚本松散地遵循路径,但AILerp脚本使用插值非常精确地沿着路径移动,但可能不是以最现实的方式。你用哪一个取决于你的游戏。不同的脚本在不同的示例场景中使用,您可以查看它们的不同之处。
在这个案例中,我们可以添加AIPath脚本,这个组件只是一个非常简单的助手脚本,它将告诉AIPath脚本移动到特定的位置。将来,您可能会用自己的游戏特定脚本来替换这个脚本。
添加AIDestinationSetter组件,有一个名为“Target”的字段,将前面创建的“Target”GameObject分配给这个字段。
平滑
OK,对象是不是开始朝着目标点移动了。是不是感觉有什么不对劲,对,路径怎么歪歪曲曲的
这个时候就要添加光滑组件了
给对象添加上这个组件
菜单栏–>Components–>Pathfinding–>Modifiers–>Simple Smooth
现在再按下播放,路径应该看上去更流畅,正如我们所希望的。
OK。这次的学习就到这里吧,后续会有更新的。
有什么不对的请大家给我指正出来,谢谢。。。
以上是关于Unity3D插件A*Pathfinding插件分享《A*寻路插件》的主要内容,如果未能解决你的问题,请参考以下文章
unity3d的playmaker插件使用教程,三对象出入触发,声音播放