(蓝图)虚幻4制作超级马里奥(八)两种方法实现AI移动

目录

AIMoveTo控制AI

1.创建Character类型蓝图

2.记录AI的初始位置,提升为变量

3.AutoWalk自定义事件

4.停止移动

完成

行为树控制AI

1.新建Character类型蓝图命名为AI_Character

2.黑板命名为MyBlackboard

3.新建行为树命名为MyBT

4.新建AIController类型蓝图命名为AI_Controller_Mine(需要在所有类中搜索)

完成


所谓的两种方式,准确的来说应该是使用和不使用行为树实现AI的移动

NavMeshBoundsVolume

不管用什么方法必须用导航体积包裹整个地图,选中该体积之后按P可以查看包裹的体积

AIMoveTo控制AI 

实际上,让AI移动的最主要的节点就是AIMoveTo,直接通过这种方式控制AI比较简单,我们实现角色进入AI身边时AI开始移动

 

1.创建Character类型蓝图

随意改变一下外观

增加一个球形碰撞,半径设置成300或者400(添加这个球形碰撞是为了节省资源,我们不需要这个机器人一直走动,只要进入玩家视野范围的时候进行走动,当然还有其它方式实现,我们这里使用这种简单粗暴的方式实现)

‘’

取消勾选HiddeninGame以便我们在游戏中看到这个体积的边缘

2.记录AI的初始位置,提升为变量

3.AutoWalk自定义事件

让AI随机的在开始位置的两侧进行移动,移动完成后延迟1秒再次调用这个函数

创建一个IsCanRun Bool类型变量用来中断这个函数

4.停止移动

完成

回到场景中,我们拖放一个AI_Character到场景中

这个Actor千万不能放到导航体积里面,会导致无法移动

这里只是先测试一下ai的移动,后面再进行一定修改

行为树控制AI

我们需要4个资源

1.新建Character类型蓝图命名为AI_Character

随意增加几个Mesh修改一下外观

一定要设置Character的AIControllerClass。点击组件中的AI_Character然后在细节面板中设置AIControllerClass为刚才创建的AI_Controller_Mine

 

2.新建黑板命名为MyBlackboard

黑板用于保存一些关键数据,对于AI移动的关键数据便是初始坐标

新建两个键值

3.新建行为树命名为MyBT

点击上面的新建任务(可以看到可以新建3种类型的蓝图,可以简单的理解,任务Task,作为树的叶子,相对比较务实,主要负责执行一定实际的事件;装饰器Decorator和服务Services都要依附在Task上,装饰器就是条件语句,服务用于定期更新黑板上的数据,更加专业详细的行为树介绍见官方文档

然后会在存放行为树的文件夹下生成一个Task,重命名为MyWalkTask

新建一个BlackboardKey类型的变量命名为HomeLocation,默认值为None

添加AIMoveTo节点,FinishExecute节点,CastToAI_Controller_Mine节点

按下图连接,作用是执行一次让AI移动到HomeLocation某一边。和上面基本上差不多这里我们没有角色检测。

回到行为树

首先添加一个Selector节点和Wait节点,Wait节点修改WaitTime等待时间为1秒

搜索刚才创建的Task,放到Wait左边(行为树中的节点是按照从左往右的顺序执行,可以看到每一个节点右上角有执行序号)

行为树补充:

Selector

Selector.png

Selector 节点从左至右执行其子项

其中一个子项达成后将停止执行其子项。(只要子项成功一个就不执行后面的)

如 Selector 的子项达成,则 Selector 也达成。

如 Selector 的所有子项未达成,则 Selector 未达成。

Sequence

Sequence.png

Sequence 节点从左至右执行其子项

如其中一个子项未达成,将停止执行执行其子项。(只要失败一个就结束)

如子项未达成,则 Sequence 也未达成。

如 Sequence 的所有子项均达成,则 Sequence 也达成。

4.新建AIController类型蓝图命名为AI_Controller_Mine(需要在所有类中搜索)

新建两个Name名称类型变量,并设置默认值为对应名称

总结:

AIController有黑板和行为树,行为树有Task,我们把Character的AIController设置成这个AIController,那么这个Character就能实现行为树中的行为。理清楚行为树的使用流程,应该就可以很好的使用了。

移动主要是靠AIMoveTo这个节点。

移动只是一种行为,攻击,跳跃,放技能等等行为都如出一辙

行为树?决策树?

 

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锋哥游戏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值