UE4 TRPG制作日志14

要实现一个AI,要用到几个基本部件,Behavior Tree,类似于人的大脑、CPU,提供逻辑计算执行功能,Blackboard,类似于memory,提供存储记忆功能。AI Controller,类似于PlayerController,不过AIController的控制输入不再来源于玩家手柄等输入,而是来自BehaviorTree。

一、实现简单的移动至玩家位置,调用技能,执行攻击 

1、首先是Blackboard,作为memory,他存储着一套逻辑所需要的数据,比如,玩家位置,自身状态等一些你想要在执行AI时想要使用到的数据。这些数据称为Key,这就是程序中的变量。

创建一个key之后,可以选取key的类型,如上就创建了一个保存玩家信息的key。

2、先看如何使用Key?这就需要用到Task(任务函数,其实就是函数)。Task在哪定义?在哪里使用?这就用到了Behavior Tree

下图就提供了一个简单移动至玩家位置的ai,

其中的MoveTo就是UE4提供的Task,该Task用于使用上面创建的TargetKey。

3、目前来说,我们还没有给TargetKey赋值,初始化。使用NewTask来创建一个Task用于更新和赋值TargetKey。(使用New Task创建,见上图)

对于一个新创建的Task,UE4提供了6组函数,其中Event Receive ExcuteAI作为Task的输入,类似于函数的入口。在Task中我们可以定义Variables。增加Functions,自定义Events,与普通蓝图没有太大差别。

这里我们来获取下玩家控制的character。首先创建一个public的key用于保存和向Blackbord传值。

逻辑如下:其中Set Blackboard value as (Bool\Enum\Object)等的选择是根据你在BlackBoard中具体定义的key的类型来决定的,这个函数目的就是按照给定的类型来为自身的TargetKey来赋值。注意,每个分支都需要finish excute,来保证这个Task逻辑能够被BehaviorTree执行完成。

有兴趣的话比较一下直接获取玩家Pawn类和通过playerController获取Pawn的异同。(推荐playerController这种方式) 

 完成了更新key后,需要在Behavior中来实际的使用:如下便完成了一个简单的移动至玩家的逻辑

 4、创建一个AI controller,并让Enemy使用。蓝图中找到AIController,基于此创建

在Enemy中使用自定义的AIController

 AIC_Enemy中要允许BehaviorTree

5、至此,没有差错的话效果如下:

接下来创建攻击Task,具体的逻辑读者自行思考完成。最后BehaviorTree看起来是这样的。

效果如下:

 

 

 当然这种实现目前还是很粗糙的。要优化的话需要一些更细致的数据,例如是移动到棋盘某一位置,玩家朝向,回合制state等。另外也可以看到使用UE4来实现一个简单AI还是很简单方便的。不推荐使用C++来实现UE4的AI这一块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值