跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 综合服务 > 培训机构 > UE5——AI篇(一)

UE5——AI篇(一)

时间:2024-04-18 07:55:29 来源:网络cs 作者:欧阳逸 栏目:培训机构 阅读:

标签:

1:创建ai蓝图类

让怪物按照我们定义的逻辑运动,需要为怪物增加AI控制器,创建一个怪物AI控制器蓝图类:

2:为需要被ai控制的蓝图装上ai控制器

创建之后在需要被AI控制的蓝图中的细节面板中搜索AI,将我们刚刚创建的控制器作为这个蓝图的控制器:

 这时就可以在AI控制器中写逻辑了

一般在其中添加运行行为树节点,然后创建一个行为树,在行为树中写AI逻辑,也就是想让怪物怎么运动:

3:创建行为树

 如上操作完成后,在行为树中写移动逻辑

比如想让怪物在没看到主角时随机游荡,看到主角后向主角方向移动

4:ai感知组件

首先在怪物蓝图中添加组件:ai感知组件

然后调其参数:

然后往下滑找到组件的事件分发器:

可以在此写上逻辑,比如

 

 首先循环一波,将输出的对象判断是否为主角,如果是,就将主角设为黑板键

黑板在行为树中创建,黑板具体的作用:

 这里需要的应该是存储信息的作用,存储了主角这个角色信息,方便后面对目标角色进行处理

黑板可以设置键值,后面设置一个键值为目标玩家,目的是为了将黑板作为一个判断条件去执行,如果有目标玩家就执行,没有就执行下一个。

有时候找不到黑板键在哪创建,可能是因为创建黑板键的窗口隐藏了,在窗口界面找一下应该就能发现:如下:

5:行为树逻辑

先看行为树:

在根出创建一个选择器,行为树的执行顺序是从上往下,从左往右,所以左边先执行,也就是如果附近没有主角,怪物不向主角移动。这时就执行随机移动那边的逻辑

黑板的作用是当做条件,首先把黑板键改成目标玩家,如果ai感知器事件更新,也就是怪物视野中出现主角,黑板的条件就会变成真,也就是会执行下面的逻辑

如果附件在感知范围内有主角,就会执行怪物向玩家移动,再攻击主角。

6:怪物朝目标移动

具体逻辑:

 这里的instigator是怪物的pawn类引用(应该是,不太懂),拿到pawn后转换为角色总类,因为后面需要判断怪物的状态,也就是是否已死亡或者处于被击中,只用这个instigator肯定是拿不到这些状态数据的,所以需要类型转换,转换完后创建一个变量,这里名字先叫ai自己,变量类型设置为角色总类的数据类型,创建此变量的目的是方便后面拿到角色数据,不用每次都先获取instigator再类型转换。

往下:

 直接拉出ai自己,获取他的状态,如果没有死亡或者没有被打,就进行下面的逻辑,否则直接结束了。

 如果判断要继续执行,那么拉出ai move to节点,就是怪物要移动到哪

 输入的pawn就是之前创建的instigator,直接拉过来就行。下面的destination是移动的目的地
捋一下:需要怪物在看到玩家后向玩家移动,并且要在能打到玩家的地方停下来,然后实现对主角的击打动作,然后完成执行,进行下一次。

具体如下:

 这里的变量目标玩家是创建的变量,类型选择黑板键值,方便后面获取怪物的目标

拉出将黑板值作为actor获取,这样就能拿到目标的actor,然后获取其位置,将这个位置加上怪物的攻击距离。怪物的攻击距离是一个浮点值,因此需要再获取怪物的向前向量,将这个向量乘以距离这个值,最后将加起来的结果连到destination上,在将下面的半径设置为75,因为75是怪物攻击距离,这样到达攻击距离就停止了下来,这个半径是值停止执行的半径,所以将其设置为0是一样的效果,但大于半径就会导致怪物走到主角面前就停止了,因为没达到攻击距离攻击不了

最后在判断一下,如果角色本身已经处于怪物攻击距离内了,就可以不用移动,就是立即停止移动,否则就继续执行aimoveto的内容了:

最后补充:要让怪物进行ai移动,还需要设置可导航的范围:

这个放置出来之后就可以调整ai导航寻路范围了

 到这怪物向玩家移动的逻辑暂时完成

本文链接:https://www.kjpai.cn/news/2024-04-18/159913.html,文章来源:网络cs,作者:欧阳逸,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论