A* Pathfinding Project (Unity A*寻路插件) 使用教程
来源:互联网 发布:实验数据分析怎么写 编辑:程序博客网 时间:2024/06/05 09:19
下面是动态图,借助 A* 插件,编写很少的代码就可以做到寻路。
1、创建场景
在场景中添加一些Cube 作为障碍物 Obstacles,添加一个 Capsule 作为Player,然后添加一个Plane 作为地面,再添加一个Plane,作为斜坡测试。
在创建一个GameObject,改名为 A* ,添加A Star Path (Path finder) 组件。
2、编辑场景,指定障碍物
A* 插件中,是根据 Layer 来判断障碍物的,所以我们要把 作为障碍物的 Cubes 都设置到 Obstacle 这一个Layer。
然后给我们的地板,设置Layer 为 Ground ,两块地板都是
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
3、生成寻路网格
选中 A* ,在Inspector 中,展开 。查看下面的面板。
如图中,
黑色箭头所指是宽高,这里的宽高,是指格子的数量。这里用到的就是 A* 的格子寻路。
调整宽高,覆盖整个Plane。
红色箭头所指,是左上、右上、左下、右下、中心 四个点,选中其中一个点,就可以调整这个点的位置。
选中中心,点击蓝色箭头所指的 Snap Size,会根据中心的位置来自动对齐。
继续设置。
红框中的Collision Testing,是生成 禁止通过 格子的。
因为我们的 Cubes 是障碍物,所以在 Mask 中选择 Cubes 所在的Layer - Obstacles。
黄色框中的Height Testing 是用来 让寻路节点 与 Ground 进行检测的,比如要爬坡的时候就需要检测高度。
设置完成后,点击Scan,就会生成寻路网格。
转自http://blog.csdn.Net/huutu http://www.thisisgame.com.cn
4、编写寻路 AI 代码
生成寻路网格之后,我们在代码中就可以使用 A* 来进行寻路了。
首先在 Player 这个 Capsule 上添加Seeker 组件。
然后新建脚本 AStarPlayer.cs 作为测试代码。
在代码中,首先我们从 屏幕发射射线,来定位目标位置。
然后使用 Seeker 来开始生成最短路径。
Seeker生成路径成功后,会把每一个节点的位置保存在 List中。
我们按照顺序读取 List 中的位置,位移Player 到对应的位置,就完成了寻路。
下面是完整代码:
至此简单的寻路了。
在A* 的Example 中,有很多个例子。
最简单的寻路脚本写法是 直接继承 AIPath 。
下面新建一个 脚本 PlayerAI.cs 继承 AIPath 来作为测试
代码量少,但是不如自己写的直观。
两种不同的脚本都可以实现寻路效果。
- A* Pathfinding Project (Unity A*寻路插件) 使用教程
- A* Pathfinding Project (Unity A*寻路插件) 使用教程
- A* Pathfinding Project (Unity A*寻路插件) 使用教程
- [Unity插件]A* Pathfinding Project:简易教程(一)
- [Unity插件]A* Pathfinding Project:简易课程
- A star pathfinding project插件点到点寻路
- A*Pathfinding Project学习之【2】插件的使用
- [Unity] A* pathfinding project integrated with influence map
- [Unity3D插件系列]-A* Pathfinding Project 学习(一)
- [Unity3D插件系列]-A* Pathfinding Project 学习(一)
- 插件Pathfinding+Project+Pro的使用
- 寻路插件A* Pathfinding Project_Pro的系统学习(一)_Pathfinder组件_扫描功能
- 寻路插件A* Pathfinding Project_Pro的系统学习(二)_AI Path组件_Seeker组件_寻路功能
- A* pathfinding for beginners
- A* Pathfinding for Beginners
- A* Pathfinding for Beginners
- A* Pathfinding for Beginners
- A* Pathfinding for Beginners
- JAVA特性: 多态
- 单片机 相关基础常识(二)
- linux获取命令帮助详解
- 剑指offer-连续子数组的最大和
- Java_基础—Map集合的遍历之键值对对象找键和值
- A* Pathfinding Project (Unity A*寻路插件) 使用教程
- 67. Add Binary(C语言改进版)
- 判断一个年份是不是闰年
- 网络中立:YouTube联名上书
- NLP碎碎念
- 找不到xxx.so.x错误的解决方法
- Struts2-1
- 名字控制
- setContentView那些事