Controller

我们看到案例里面的控制器 B_Als_PlayerController,看到下面的事件和函数,发现其实这个蓝图很简短,也没有 C++ 父类,基本上只处理一些输入事件
在这里插入图片描述

那我们先看到 BeginPlay 事件

在这里插入图片描述

比较简短,绑定增强输入后,创建 2 个 Widget,一个是用于右上角提示 Debug 的 HUD(忽略),还有一个就是我们按 Q 时跳出来的切换栏。

在上一期中我们提到了切换状态栏其实就是切换了角色身上的 OverlayMode(这是个Tag)的值,根据这个 Tag 值我们选取对应的 OverlayObject 和关联动画层

那么接下来我们看一下状态栏 UI 的主要逻辑,也是这个 Controller 里主要处理的内容。

按键 Q,按下时设置慢动作和添加切换栏,松开时恢复正常速度、应用切换到的 OverlayMode 和移除切换栏

在这里插入图片描述

接着我们看其他按键,滚轮上下,实现切换栏的上下选择,剩余按键我就不过多赘述了,内容不多也很简单。

在这里插入图片描述

那么我们直接跳转到 W_Als_OverlayModeMenu 这个 Widget 里面,看一下怎么实现状态栏滚动的,老规矩先看有哪些事件和函数,同样的内容很少

在这里插入图片描述

第一个关键事件 Initialized,很简单的发现是根据 Tag 创建子组件添加进来,同时设置子组件的一些信息,这个 GetChildTags 函数是项目中在 C++ 中实现的函数,就是获取 Als.OverlayMode 下面的子Tag(忽略红色报错,IDE 发病),蓝图中暂时没有找到能实现这个功能的函数。
在这里插入图片描述
在这里插入图片描述

首先构造的时候先设置当前选择的 OverlayMode,比例,这样当我们是拿着 M4 的时候按 Q 就会直接是选择的 M4 的选项。
这里 On Selected Overlay Mode Changed 就是设置对应的选择的子组件的颜色大小等。

在这里插入图片描述

接下来就是几个函数了,SelectPrevious \ NextOverlayMode 就是在滚轮滑动时上下滑动选择子组件的,就不展开说了,可以自己看一下

在这里插入图片描述
在这里插入图片描述

最后就是松开Q的时候调用的应用 OverlayMode,就是获取到角色然后设置 OverlayMode 的值

在这里插入图片描述

那么到这里我们已经看完了控制器上面的全部逻辑了,加下来我们看一下摄像机的动画蓝图吧,篇幅问题我们只看一下配置吧。只看一下动画图表吧。

Camera动画蓝图

在这里插入图片描述

只有3个状态,且3个状态都可以互相转换,这个三个状态我们可以发现其实就是对应的角色身上的 AlsRotationModeTag,一个是根据速度旋转角色,一个是根据视野朝向旋转,一个是瞄准状态下的旋转

在这里插入图片描述

同时我们看切换状态的逻辑也是根据这个 Tag 值来切换的。

在这里插入图片描述

在这里插入图片描述

接着我们点进一个状态里面看一下,其实3个状态的内容都是一样的,只是数值配置的不一样(瞄准的时候摄像头会拉的很近就是这里配置的)。

在这里插入图片描述

可以看到我们就是根据 GaitTag(奔跑走路状态)和 StanceTag(站立蹲下状态)来修改对应的动画曲线值,这里暂时不讲什么时动画曲线,为什么要修改它,我们暂时知道怎么使用这个插件的功能就可以了。下面是 2 个 Tag 的定义

在这里插入图片描述

那么我们试着修改一下上面的数值看看效果会怎么样。

我们把X偏移值拉小一点(这里说拉小因为这是一个偏移值,我就忽略正负了),发现摄像头会拉近很多

在这里插入图片描述

CameraOffsetX:-325

在这里插入图片描述
CameraOffsetX:-200

在这里插入图片描述
同理其他的值也就是左右上下的位置修改了,就不描述了,然后还有 LocationLagX/Y/Z 是对摄像机 3 个方向速度的修改,数值越小,摄像机移动速度越慢。这里在 UE 自带的弹簧臂组件下也有 LagSpeed 的数值可以设置,两者大概的作用是一样的,可以自己修改试一下看看(记得备份)。

那么到这里我们已经学会了 Controller 的逻辑和 Camera 动画蓝图Camera 位置和速度的修改,文章到这里也结束了,我们总结一下几个点。

跟上一篇文章有点像的地方是,这个部分作者也用了很多的 Tag 来代表状态等,好处也是同样的,便于拓展和修改,我们加状态,不会对摄像机蓝图里的根据 Tag 选择出 bug,如果是根据枚举值选择,修改枚举会容易出 bug。同时对网络同步很有帮助(这部分后续到 C++ 部分会细讲,还在学习总结网络的部分)。

还有就是

后续的计划

目前没什么时间了,写的内容也很水,一直没涉及核心的计算部分,等暑期已经把这个系列猛更,那时候应该会对已发出的文章有多次修改,还请见谅。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐