接上一节

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. Ubuntu的build-essential有什么作用

    Ubuntu缺省情况下,并没有提供C/C++的编译环境,因此还需要手动安装.但是如果单独安装gcc以及g++比较麻烦,幸运的是,Ubuntu提供了一个build-essential软件包.查看该软件包 ...

  2. 测试工具Wiremock介绍

    WireMock是一个开源的测试工具,支持HTTP响应存根.请求验证.代理/拦截.记录和回放.最直接的用法: 为Web/移动应用构建Mock Service 快速创建Web API原型 模拟Web S ...

  3. Map 综述(一):彻头彻尾理解 HashMap

    转载自:https://blog.csdn.net/justloveyou_/article/details/62893086 摘要: HashMap是Map族中最为常用的一种,也是 Java Col ...

  4. mybaits源码分析--自定义插件(七)

    一.MyBatis插件 插件是一种常见的扩展方式,大多数开源框架也都支持用户通过添加自定义插件的方式来扩展或者改变原有的功能,MyBatis中也提供的有插件,虽然叫插件,但是实际上是通过拦截器(Int ...

  5. TCP/IP以及Socket聊天室带类库源码分享

    TCP/IP以及Socket聊天室带类库源码分享 最近遇到个设备,需要去和客户的软件做一个网络通信交互,一般的我们的上位机都是作为客户端来和设备通信的,这次要作为服务端来监听客户端,在这个背景下,我查 ...

  6. Python - 面向对象编程 - 小实战(2)

    需求 小明和小美都爱跑步 小明体重 75 公斤 小美体重 45 公斤 每次跑步会减肥 0.5 公斤 每次吃东西体重增加 1 公斤 需求分析 小明.小美都是一个具体的对象,他们都是人,所以应该抽象成人类 ...

  7. java 多线程Thread和Runnable的区别

    如果一个类继承Thread,则不适合资源共享.但是如果实现了Runable接口的话,则很容易的实现资源共享 实现Runnable接口比继承Thread类所具有的优势:1. 适合多个相同的程序代码的线程 ...

  8. openswan协商流程之(三):main_inR1_outI2

    主模式第三包:main_inR1_outI2 1. 序言 main_inR1_outI2()函数是ISAKMP协商过程中第三包的核心处理函数的入口.这里我们主要说明main_inR1_outI2的函数 ...

  9. C# Dapper基本三层架构使用 (一、架构关系)

    Dapper是一款轻量级ORM工具.如果你在小的项目中,使用Entity Framework.NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀.你又觉得ORM省时省力,这时Dapp ...

  10. struts2执行流程和架构图

    一.struts2执行流程 二.架构图 只需要编写黄色部分的代码: