接上一节

6、 寻路网格体代理

通过允许配置多个“代理”,虚幻引擎使得用户能够轻松为大小各异的AI创建寻路网格体。首先,选中世界大纲视图中的“RecastNavMesh”,找到细节面板中的“生成”分段,如下图所示。这里的几个选项都与代理相关,分别是“代理半径”(Agent radius)、“代理高度”、“代理最大高度”、“代理最大斜面”和“代理最大步高”。默认的代理半径是35,而这个值应该和AI宽度相同。代理高度应该和AI高度相同。

在项目设置中,有一个选项循序我们添加多种类型的代理,并且每一种都能定义不同的参数。首先打开项目设置,然后找到“引擎-导航系统”,如下图所示,在最底层有一个“agent”分段,其中一个选项是“支持的代理”,它实际上是一个数组,我们可以向里面添加一些元素,每个元素都包括“代理半径”(Agent radius)、“代理高度”、跳、游泳等选项,我们能够为不同的AI设置不同的代理,配置不同的导航网格体。

7、 寻路网格体

创建完寻路网格体后,我们将为AI角色蓝图添加功能,让AI随机移动到附近某个位置,等待片刻,然后移动到另一个位置,循环往复。首先,要在角色蓝图中新建一个自定义事件,并让它包含随机漫游逻辑,然后使用另一个函数在游戏运行中时反复调用自定义事件。

首先在内容浏览器中打开AI蓝图,在事件图表中,右击并搜索“自定义事件”,将新的自定义事件命名为“random wander”.

拖动这个自定义事件的执行引脚,然后搜索“simple move to location”,添加到图表中,其需要两个参数,一个是角色使用的控制器,一个是以向量表示的目标位置。先设置角色使用的控制器,右击搜索“get conroller”,点击后连接至自定义事件;接下来右击搜索“get random reachable point in radius”,点击应用。这个函数有许多参数,我们只用其中部分。其中,“orgin”表示它移动的起点,“radius”定义了起点周围的移动距离。在这里,我们的起点就是第三人称AI的起点位置,我们可以使用“get actor location”函数,右击搜索得到该函数,默认下,该函数返回值就是当前目标的位置,并将其连接到“orgin”。然后根据自己需求设置半径“radius”。然后将“get random reachable point in radius”连接到“simple move to location”的“goal”中。现在,我们的随机漫游事件就完成了。

接下来需要再创建一个事件·来调用它,否则它不会自动运行。右键找到“beginplay”,拖动“beginplay”的引脚,然后搜索输入“set timer by event”。关于这个函数,首先需要告诉它触发哪个事件。为此,我们可以将“random wander”事件的委托输出引脚,连到“set timer by event”的事件输入上。接下来,我们需要指定这个事件何时被触发,可以将时间值设置为1.5。这意味着每过1.5秒,关联的事件就会被触发。为了让它能够循环触发,勾选“set timer by event”的循环选项。“set timer by event”的返回值是一个定时器句柄结构。我们不需要使用它,因为不需要在其它地方用到定时器。这意味着我们无需设置这个输出。编译后,我们需要检测这个蓝图是否在游戏中有效。

UE4蓝图AI角色制作(三)的更多相关文章

  1. UE4蓝图AI角色制作(四)之Gameplay调试器

    8. 寻路网格体和Gameplay调试器 为了及时识别出AI系统中的导航问题,UE4提供了一个工具用来解决这类问题,它叫Gameplay调试器.打开项目设置,在左侧找到"引擎",然 ...

  2. UE4蓝图AI角色制作(七)之追逐玩家

    15.追逐玩家 现在我们的AI无法做出任何决策,它总是执行相同的决策.我们先把感知系统中的相关信息提供给AI,让AI知道如何做出决策,然后我们会修改行为树.我们首先需要创建新的黑板键,这样我们就能在行 ...

  3. UE4蓝图AI角色制作(六)之行为树

    13.行为树原理 AI最重要的环节就是行为树.我们将解释什么是行为树.为何它如此重要,以及构建行为树需要哪些元素. 借助行为树,我们可以轻松控制并显示AI的决策制定过程.行为树是一种将AI在场景中的决 ...

  4. 【摸鱼向】UE4的AI模块探索手记(1)

    前言 之前实现了自主创作的角色导入进UE4并成功控制其进行一系列动作,但目前的样子距离基本的游戏架构还差了一个很大的模块:NPC,而这部分是由电脑来进行自动控制,所以,我有一句话不知当讲不当讲(对,我 ...

  5. UE4简单AI

    首先做个小小的声明把,由于俺之前也没接触过AI ,所以有一些专业的词汇可能翻译存在各种问题,如果你发现的话,还是希望能够提出来哦,我们一起进步. 记住配合视频食用更佳哦~ 视频连接:http://ww ...

  6. UE4的AI学习(2)——官方案例实例分析

    官方给出的AI实例是实现一个跟随着玩家跑的AI,当玩家没有在AI视野里时,它会继续跑到最后看到玩家的地点,等待几秒后如果仍然看不到玩家,则跑回初始地点.官方的案例已经讲得比较详细,对于一些具体的函数调 ...

  7. UE4蓝图编程的第一步

    认识UE4蓝图中颜色与变量类型: UE4中各个颜色对应着不同的变量,连接点和连线的颜色都在表示此处是什么类型的变量.对于初学者来说一开始看到那么多连接点, 可能会很茫然,搞不清还怎么连,如果知道了颜色 ...

  8. [UE4]让AI跑起来

    让AI由静止状态变成跑步状态,做法跟玩家角色走路一样. 一.创建1D混合动画 二.在AI角色关联的动画蓝图中使用第一步创建的混合动画

  9. UE4蓝图与C++交互——射击游戏中多武器系统的实现

    回顾   学习UE4已有近2周的时间,跟着数天学院"UE4游戏开发"课程的学习,已经完成了UE4蓝图方面比较基础性的学习.通过UE4蓝图的开发,我实现了类似CS的单人版射击游戏,效 ...

随机推荐

  1. save tran tranName

    begin tran 语句将 @@Trancount加 1.Rollback tran将 @@Trancount递减到 0,但 Rollback tran savepoint_name 除外,它不影响 ...

  2. ES6中class的继承

    extends 子类的继承 super(); 调用父类的构造方法,只能在子类中执行 继承可以让子类获得父类的方法 属性,可以扩充 增加新的方法 属性等 父类(基类)--被继承的类 子类--继承后的类 ...

  3. Windows10下MySQL的安装

    简单介绍一下MySQL的安装 官方网址:https://www.mysql.com/downloads/ 1.找到MySQL Community Edition (GPL) (注:GPL版本为开源,非 ...

  4. ubuntu开机自启设置 Ubuntu16.04下测试OK

    在~/.config/autostart/目录下,添加xxx.desktop文件,内容如下: [Desktop Entry] Type=Application Name=start apps NoDi ...

  5. ES6中函数调用自身需要注意的问题

    在传统的递归调用中,可以采用如下方式 function sum(n) { return sum(n - 1) + n;} 但如今es6盛行,为了保持代码一致性,可以采用两种解决方式. 第一种,将thi ...

  6. 基于Linux系统的网络服务——高速缓存DNS及企业级域名解析服务

    1.DNS域名系统 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数 ...

  7. Photoshop 各混合模式 RGB 是如何计算的

    原文链接:https://www.jb51.net/photoshop/249182.html 1.正常模式(Normal) 默认模式,显示混合色图层的像素,没有进行任何的图层混合.这意味着基色图层( ...

  8. 史上最全git命令集

    配置化命令 git config --global user.name "Your Name" git config --global user.email "email ...

  9. Appium自动化(8) - 可定位的控件属性

    如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 在前面几篇文章可以看到,一个 ...

  10. GridView控件使用

    增加显示列gridView.Columns.AddVisible("AgentName", "姓名");设置是否为只读gridView1.OptionsBeha ...