Unity3D插件A*Pathfinding插件分享《A*寻路插件》

Posted 恬静的小魔龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D插件A*Pathfinding插件分享《A*寻路插件》相关的知识,希望对你有一定的参考价值。



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轴不变
    【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*Path
  2. 再创建几个Cube,设置成障碍物
    【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*Pathfinding_02
  3. 接着设置Tag Edit->Project Settings->Tags&Layers
    【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*_03
    一个Tag设置成Ground->地面
    一个Tag设置成Obstacle->障碍物
    将Planel的Tag设置成Ground
    将创建的一个Cube障碍物设置成Obstacle
    【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_自动寻路_04【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*_05

现在我们来添加寻路网格

创建一个新的GameObject,命名为“A*”,向其添加“AstarPath”组件(菜单栏->Components->Pathfinding->Pathfinder)。

【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*Path_06【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_AstarPath_07

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

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

MaxClimb可以爬升的最大高度

MaxSlope可以爬升的最大斜度

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

【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*_08

添加Ai

【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*_09

添加一个胶囊体,添加移动脚本让它移动

这个时候有两种选择,1就是自己编写脚本,更能理解这个脚本的运行过程

2就是使用已经写好的脚本AIPath, RichAI and AILerp

AIPath脚本可以用于任何图形,而RichAI主要用于基于Navesh的图形。虽然AIPath和RichAI脚本松散地遵循路径,但AILerp脚本使用插值非常精确地沿着路径移动,但可能不是以最现实的方式。你用哪一个取决于你的游戏。不同的脚本在不同的示例场景中使用,您可以查看它们的不同之处。



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



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

【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*Path_10

平滑

OK,对象是不是开始朝着目标点移动了。是不是感觉有什么不对劲,对,路径怎么歪歪曲曲的

【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_A*Path_11

这个时候就要添加光滑组件了

给对象添加上这个组件

菜单栏–>Components–>Pathfinding–>Modifiers–>Simple Smooth

现在再按下播放,路径应该看上去更流畅,正如我们所希望的。

【Unity3D插件】A*Pathfinding插件分享《A*寻路插件》_AstarPath_12

OK。这次的学习就到这里吧,后续会有更新的。

有什么不对的请大家给我指正出来,谢谢。。。



以上是关于Unity3D插件A*Pathfinding插件分享《A*寻路插件》的主要内容,如果未能解决你的问题,请参考以下文章

unity3d的playmaker插件使用教程,三对象出入触发,声音播放

Unity3D 插件 SUIMONO_water 怎么用

unity3d的playmaker插件使用教程,六血量显示及处理

Unity3D怎么导入插件包?

unity3d 插件是啥

安装了unity3d插件却不能玩unity3d游戏,怎么办?