哈喽~我是yumir。
写过俯视角射击和“元气骑士”舆图天生之后,不做个仇敌AI总以为差点什么,以是又研究了一下Unity的2D寻路。
传送门:这次我用的是APathfinding的免费版。
获取方法:
在官网:https://arongranberg.com/astar/ 点击Download选项,在跳转到的页面上选择下载”Free“版本,将下载下来的文件导入到unity中,就可以开始我们的大奇迹了。
一、设置寻路网格
虽然也可以脚本掌握,但是建议先大略搭建一个场景熟习下插件,而且能不写代码就完成功能我以为喷鼻香得很~
在搭建好的场景中新建一个空物体,点击”AddComponent“搜索”Pathfinder“添加该组件。添加组件之后面板显示如下,点击图中框选按钮添加Grid Graph(Graphs>Grid Graph)。
由于我做的是2D寻路,以是将”2D“和”Use 2D Physic“勾选,利用2D模式,再在第三个红框的位置选择一个Layer,这个Layer表示”不能行走“的范围,也便是障碍物,做这一步的同时须要将场景中的障碍物的Layer都设置为对应的Layer。
”Width“和”Depth“分别表示网格的长高,单位是”nodes“也便是有几个格子。下面的”Node size“ 表示格子的大小也可以理解为网格的精度,这些都根据需求调度。点击下方的Scan按钮,就会扫描天生寻路网格,赤色方框的部分代表不可行走,蓝色部分则反之。
那么动态天生的舆图该当怎么烘焙网格呢,设置一张对应大小的网格然后在舆图天生结束的时候调用插件供应的方法即可:
GetComponent<AstarPath>().Scan();
二、让仇敌找到玩家首先我们须要一个迷人的反派角色,我把玩家的贴图叠了一层赤色画了个红眼睛用来充当,效果还不错。
新建一个空物体作为反派角色的父物体,在该物体上添加”AI Path“组件,而后系统会自动添加另一个组件”Seeker“,这是由于AI Path须要利用Seeker来寻路,放着别动就行,除非你打算自定义一个AI Path。
再添加一个”AI Destination Setter“组件,该组件卖力更新目标位置。
AI Path紧张修正以下内容:Orientation、Enable Rotation、Gravity。
再将玩家角色拖拽到AI Destination Setter的Target上,点击运行就可以看到寻路的效果。
三、大略AI实现
迷人的反派角色当然不能只是跟屁虫,这里给他写一个大略的状态机,分别又待机、追逐、攻击三个状态:
enum EnemyState{ Idle, Tracking, Attack}
在Update中根据当前的状态类型分别调用对应的方法:
switch (enemyState) { case EnemyState.Idle: Idle(); break; case EnemyState.Tracking: Tracking(); break; case EnemyState.Attack: Attack(); break; default: break; }
AI Path没有供应停滞寻路的接口,但是没紧要,将速率设置为零就可以让他停下了。在各自的状态方法中改变当前的速率、状态类型、和动画:
AIPath.maxSpeed = speed;enemyState = EnemyState.Tracking;enemyModel.GetComponent<Animator>().SetBool("walk", true);
加上和玩家相互攻击的逻辑便是一个小游戏啦。
链接:https://pan.baidu.com/share/init?surl=khG-XNnPQIoXBmIj5VejEQ
提取码:kkm8
~~~分割线~~~
欢迎加入游戏开拓群欢快搅基:610475807
对游戏开拓感兴趣的童鞋可戳这里进一步理解:http://www.levelpp.com/