【UE】AI行为树入门——以小白人跟踪玩家并攻击为例
创始人
2024-12-27 10:04:56
0

目录

前言

效果

步骤

一、准备工作 

二、用蓝图实现AI随机移动

三、用行为树实现AI随机移动与跟踪玩家并攻击的效果

3.1 AI随机移动 

3.2  AI看到玩家后跟踪玩家

3.3 AI攻击玩家


前言

        本篇文章要实现的效果是:小白人随机移动,并且在移动过程中如果看见了玩家,小白人就会跑向玩家,靠近玩家之后就会进行攻击。

效果

步骤

一、准备工作 

1. 新建一个第三人称游戏工程,复制一份第三人称模板蓝图,命名为“AI_BP”

打开“AI_BP”,删除事件图表中的所有节点

删除摄像机和弹簧臂组件

接下来需要完成AI随机移动的功能

二、用蓝图实现AI随机移动

首先介绍一下最关键的“AIMoveTo”节点,其中“Pawn”引脚表示是哪个AI要移动,“Destionation”表示AI要移动到哪个地方,“Target Actor”表示要移动到哪个actor所在的位置,“Acceptance Radius”表示距离目标半径为多远就可以停止,“Stop on Overlap”表示AI移动到指定位置后是否停止。

2. 向场景中拖入一个导航网格体边界体积

3. 在“AI_BP”的事件图表中创建一个AI随机移动的自定义事件,如下,让AI在以自身为圆心半径5000cm的范围内随机移动

每3~5s执行以下“AI移动事件”

4. 将“AI_BP”拖入场景,此时运行就可以看到小白人在随机移动

三、用行为树实现AI随机移动与跟踪玩家并攻击的效果

3.1 AI随机移动 

将“AI_BP”事件图表中的所有节点删除

5. 新建一个行为树和黑板

6. 再添加一个AI控制器

这里就命名为“MyAIController”

打开黑板,新建一个布尔类型的变量

这里命名为“是否看到玩家”

再添加一个向量类型的变量,这里命名为“要去的地方”

8. 打开“MyAIController”,添加一个AI感知组件

在右侧细节面板中添加一个感官配置元素,然后这里用到的是“AI视力配置”

在AI视力配置中需要勾选检测中立方,这样AI才能感知到玩家

添加目标感知更新时的事件

在目标感知更新时的节点中,actor引脚传入的是AI感知到的Actor(Pawn或角色),“Stimulus”引脚传入的是感知到的Actor的一些其它信息

我们可以尝试打印看一下AI能否成功感知

下面需要让AI使用AIController

9. 打开“BP_AI”,设置AI控制器类为“MyAIController”

此时运行游戏,当玩家进入AI的视野后就可以看到打印了True,当玩家在视野外时可以看到打印为Fasle。因为我们可以根据这个结果对AI的行为进行设置。

10. 打开AI行为树,设置黑板资产为我们创建的那个黑板

选择完成后可以看到右下角出现了我们在黑板中设置的变量

添加如下节点,我们希望当AI看到玩家时走左边的路线,没看到玩家时走右边的路线

选择左边的“Sequence”节点,点击添加装饰器,选择“Blackboard”

此时就可以将黑板中的变量调用过来

选中“Blackboard Based Condition”,然后设置黑板键为“是否看到玩家”

同样的步骤设置一下右边的“Sequence”节点,但是键查询设置为未设置。此时左边就表示了看到玩家,右边表示没有看到玩家。

设置左右两边的观察器中止都为“Both”

        ·None:不中断。它的子节点将继续执行。

        ·Lower Priority:打断除去自己子树外所有比自己优先级更低(执行索引更大)的节点,抢夺执行权。

        ·Self:立即终止自己子节点的执行,让出执行权。

        ·Both:结合了Lower Priority和Self的特性,打断包括自己子节点在内的所有比自己优先级低(执行索引更大)的节点。

下面我们需要将AI是否看到玩家的这个变量实时的传入黑板。

11. 打开“MyAIController”,添加如下节点,此时就可以将是否看到玩家的结果赋值到黑板中的变量“是否看到玩家”

12. 回到行为树中,继续编辑当AI看到玩家之后要做什么的逻辑。

点击“新建任务”

 这里命名为“随机找点”

13. 在“随机找点”中,重载函数“接收执行AI”

引脚“Controlled Pawn”表示AI控制器控制的Pawn 

添加如下节点,表示AI移动到目的地后就完成执行,完成执行后继续做下一个任务。注意最后的“完成执行”很重要,如果不加这个节点,流程就会卡在这里,不会执行后面的任务。

14. 回到行为树中,此时可以在“Tasks”中找到任务“随机找点”

我们还可以添加一个系统自带的任务“Wait”,这样每次随机找点后就会等待5s(注意这里的每次循环是从Sequence出发,不是从跟出发)

15. 需要在“MyAIController”中设置使用行为树

 此时我们已经完成了AI在没有看到玩家时的行为。此时运行可以看到AI能够随机移动。

下面我们还需完成AI在看到玩家后的行为。

3.2  AI看到玩家后跟踪玩家

16. 回到行为树中,再次新建一个任务

选择“BTTask_BlueprintBase”

命名为“寻找玩家”

17. 打开“寻找玩家”,重载函数“接收执行AI”

在事件图表中添加如下节点,让AI向着玩家所在位置移动

此时我们完成了寻找玩家任务的创建,还需在行为树中使用。

18. 在行为树中添加寻找玩家的任务。

此时运行可以发现AI在看到玩家后已经可以跟踪玩家了。

这里的问题是一旦玩家走出视锥角度外,AI就不会跟踪玩家了,因此我们需要AI一直朝向玩家。

19. 打开“AI_BP”,在类默认值中取消勾选将旋转朝向运动

勾选“使用控制器旋转Yaw”,此时AI的旋转就由AIController控制

在“寻找玩家”的事件图表中,添加“设置焦距”节点,该节点能够让AI控制器获取玩家的朝向,从而控制AI一直朝向玩家

20. 打开“随机找点”,在AI失去玩家的视野后我们还需关闭焦距

此时运行游戏可以看到无论我们怎样绕圈AI都能跟随玩家

下面我们需要实现AI在靠近玩家一定范围内后会向玩家挥拳。

3.3 AI攻击玩家

21. 打开“AI_BP”,添加一个球形碰撞

这里设置球体半径为80

22. 添加一个AI攻击的动画序列,对该动画序列创建动画蒙太奇(注意导入动画序列时选择的骨骼是女性的小白人骨骼)

23. 当玩家进入球形碰撞区域内时,让AI播放攻击的蒙太奇动画

上面的逻辑只能让AI攻击一次,我们需要在玩家进入碰撞区域后让AI一直播放攻击动画直到玩家离开。因此我们使用一个定时器来实现循环攻击的效果。当玩家离开球形碰撞区域后就清除定时器。

此时运行可以看到当玩家进入球形碰撞区域后小白人会播放攻击玩家的动画

参考视频:

https://www.bilibili.com/video/BV155411P7Tx/?spm_id_from=333.999.0.0&vd_source=36a3e35639c44bb339f59760641390a8

相关内容

热门资讯

推荐一款!金花房卡怎么购买荣耀... 荣耀联盟是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
玩家攻略,金花房卡官网桃花大厅... 玩家攻略,金花房卡官网桃花大厅/房卡怎么购买Sa9Ix苹果iPhone 17手机即将进入量产阶段。有...
ia实测“微信拼三张房卡怎么获... 金牛座金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡...
科普!微信上打炸金花房卡找谁买... 微信游戏中心:大牌九房卡,添加微信【55051770】,进入游戏中心或相关小程序,搜索“微信大牌九房...
头条推荐!牛牛房卡制作链接火星... 您好!微信火星大厅/新道游大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(火星大厅/新...
终于知道”新好游低价获取分享房... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
IA解析/金花微信链接市场价格... 今 日消息,毛豆互娱房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
ia攻略/金花房卡批发价玄灵大... 玄灵大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
科普!微信群打金花链接房卡,微... 微信游戏中心:牛牛房卡,添加微信【33903369】,进入游戏中心或相关小程序,搜索“微信牛牛房卡”...
终于知道”美人有挂吗“新道游房... 终于知道”美人有挂吗“新道游房间卡怎么购买微信房卡充值 添加房卡批售商:微【113857776】复制...
一分钟推荐“如何在微信上购买金... 新荣耀是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享...
玩家攻略,游戏推荐斗牛房卡出售... 微信游戏中心:海贝大厅/新天道房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或...
科普!创建微信链接金花房卡,微... 微信游戏中心:牛牛房卡,添加微信【8488009】,进入游戏中心或相关小程序,搜索“微信牛牛房卡”,...
终于知道”超稳无敌哪里有详细房... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
正版授权!金花房卡专卖店华山大... 您好!微信华山大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(华山大厅)大厅介绍:...
炸金花房卡专卖店联系方式/微信... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡...
终于知道”新众亿房卡购买“金花... 终于知道”新众亿房卡购买“金花房卡哪里是有卖 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服【...
科普!微信链接金花房卡在哪买的... 微信游戏中心:拼三张房卡,添加微信【55051770】,进入游戏中心或相关小程序,搜索“微信拼三张房...
房卡必备教程“炸金花房卡专卖店... 皇豪互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
重大通报,游戏微信牛牛房卡水仙... 水仙大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...