《Unreal Engine 4蓝图可视化编程》一2.1 通过扩展蓝图添加加速技能

简介:

本节书摘来异步社区《Unreal Engine 4蓝图可视化编程》一书中的第2章,第2.1节,作者: Brenden Sewell 译者: 陈东林 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.1 通过扩展蓝图添加加速技能

开始探索FirstPersonCharacter蓝图,以使玩家在关卡中移动时拥有更多的战术选项。没做修改前,玩家还只是局限在一个速度进行移动。我们可以通过蓝图节点监听按键的动作来进行调整,将调整移动速度功能附加在CharacterMovement蓝图组件中。

2.1.1 分解角色移动蓝图

现在我们打开FirstPersonCharacter蓝图。它与第1章的Cylinder- Target_Blueprint蓝图位于同一个文件夹下。在内容浏览器中找到FirstPerson- Character,双击打开蓝图。选中事件图表标签,你将发现有许多的蓝图节点。我们首先研究的是加了Stick input注释的这一组节点,如图2.1所示。


2_1

红色的触发器节点在每帧都被调用,并将TurnRate和LookUpRate节点的值分别通过一个控制器输入传递出去。这些值通常与我们实际用的模拟摇杆的上/下、左/右轴相匹配。注意到这里只有两个输入轴触发器,却完成了向上看/向下看、向左转/向右转等4个功能,因为向上看与向下看传递的Axis Value为正值和负值,向左转和向右转也是一样,传递的Axis Value为正值和负值。

然后,两个轴向触发器的值都与一个变量相乘,表示玩家转身或向上(下)看的速率。这些值也都与world delta seconds相乘来归一化,避免了不同帧率的影响,尽管触发器会每帧都调用,但是玩家速率保持不变。3个输入引脚的乘积分别传递给Add Controller Yaw Input函数和Add Controller Pitch Input函数。这两个函数将控制器输入转化为展现在玩家摄像机中的效果。

在Stick Input蓝图节点组下方有另外一个注释为Mouse Input的节点组,它们看起来很像。Mouse Input转换鼠标移动输入,与轴向摇杆控制器不同,它直接获取数据然后将这些值直接传递给相应的Add Controller Yaw Input函数和Add Controller Pitch Input函数,而不需要像模拟输入做那些计算。

管理玩家移动功能的节点组的设置与摇杆和鼠标输入节点组有些类似。从输入轴MoveForward和输入轴MoveRight获取的轴值是由控制器或键盘输入的。与Stick input节点组一样,Movement input节点组也通过返回负的轴值来完成向后和向左运动的功能。在运动转换中很大的不同是我们需要actor移动的方向,这样移动转换可以被应用正确的方向。方向由Get Actor Forward Vector节点和Get Actor Right Vector节点获取并附加给Add Movement Input节点的World Direction输入引脚,如图2.2所示。

在新的版本中,添加了对VR支持,新增了First Person Camera、Get Forward Actor、Get Right Actor、Is Head Mounted Display Enabled等节点,如图2.3所示。


2_2_3


最后一个与移动相关的就是注释为Jump的节点组。它由输入动作Jump触发节点、Jump函数和Stop Jumping函数组成,输入动作Jump触发节点检测与跳起事件绑定的按键的按压和释放,并且从按键按下至抬起的时间内都有相关函数进行事件监听。

2.1.2 自定义输入控制

在FPS模板在蓝图中,绑定了一些玩家输入动作来产生一些行为,比如向前移动或跳跃。为了创建新类型的行为,我们将新的物理控制输入添加到玩家动作当中。为了改变游戏的输入设置,单击虚幻编辑器菜单的编辑按钮,找到项目设置(Project Settings)选项。在弹出的窗口左侧,引擎分类下找到输入(Input)选项并选择。

在引擎-输入(Engine-Input)菜单中的Binding(绑定)分类下,有两个部分,分别称为:Action Mappings和Axis Mappings,其中,Action Mappings监听按键和鼠标单击事件触发玩家动作;Axis Mappings针对的玩家移动和事件都有个范围,比如W键和S键同样影响Move Forward动作,但是结果不一样(控制角色向前走/向后走)。比如冲刺和变焦功能,它们有启用或不启用等两个选项,所以我们会将它添加作为Action Mappings。动作和按键映射(Action Mappings,Axis Mappings)提供了一种通过在输入行为和激活行为的按键之间插入一个中间层来方便地映射按键和坐标轴的机制。动作映射针对按键按下和释放,而坐标轴映射则针对具有连续范围的输入。

单击Action Mappings右侧的加号两次添加两个Action Mappings,将第一个重命名为Sprint,从下拉菜单中选择左Shift键与Sprint事件绑定。将第2个动作命名为Zoom,然后将它与鼠标右键绑定,如图2.4所示。


2_4

2.1.3 添加冲刺功能

上面我们讲到了输入节点接收控制器输入并将它应用到游戏角色中,既然有了基本的了解,接下来将为玩家扩展冲刺(Sprint)功能。我们需要在FirstPerson- Character蓝图中设置好一系列的节点。

首先我们需要创建触发器来激活冲刺功能。回想我们之前将冲刺动作映射到左Shift键,为了进入那个输入触发器,需在事件图表的空白区域单击鼠标右键,搜索Sprint,选择输入>>动作事件>>Sprint(InputAction Sprint)事件节点。

现在我们希望修改玩家的移动速度。如果你尝试添加一个新的节点,在搜索框内搜索speed并且勾选情境关联(context-sensitive),那你将仅仅只能找到检测最大速度并校验是否超过最大速度的节点,而并不能设置最大速度。所以,我们需要检索到一个值,从FirstPersonCharacter附加到actor的角色运动组件上。查看组件面板并选中CharacterMovement(继承)。之后,细节面板将会出现一系列的变量,如图2.5所示。

在这个变量列表中,你可以找到Max Walk Speed。这个变量的值定义了玩家可以达到的最大移动速度,并且它需要成为冲刺(Sprint)函数的目标。我们希望从角色移动组件中获取这个值并添加到事件图表中。为了做到这个,在组件面板选中CharacterMovement(继承)组件,将它拖曳到事件图表中,放置在左Shift节点附近。这个操作将生成一个Character Movement节点,如图2.6所示。


2_6

从Character Movement节点的输出引脚拖出引线至事件图表的空白区域,确保勾选了情境关联,在搜索框内键入“walk speed”,找到设置Max Walk Speed,将输出动作Sprint节点的Pressed输出执行引脚与设置Max Walk Speed节点的输入执行引脚连接,使得按下左[Shift]键的时候能够修改最大移动速度。最后,在输出动作Sprint节点中改变Max Walk Speed的值,将默认数值由0.0改为2200。

我们同样需要确保玩家能够在左[Shift]按键抬起的时候减速。为了做到这个,再次从Character Movement节点的输出引脚拖出引线,然后在搜索并添加另一个设置Max Walk Speed节点。这次连接输出动作Sprint节点的Released输出执行引脚和新的设置Max Walk Speed节点的输入执行引脚,然后将Max Walk Speed的默认值0.0改为600。为了养成良好的添加注释的习惯,选中本节我们添加的所有节点后,按下[C]键(或者单击鼠标右键,选择注释组>>从选中项中创建注释,将注释命名为Sprint,如图2.7所示。


2_7

现在编译、保存,最小化蓝图后在UE4编辑器中按下播放按钮进行测试。你将会注意到当你在移动过程中按下左[Shift]按键时,玩家角色显著地提高了速度。

相关文章
|
6月前
|
XML 编解码 开发工具
《移动互联网技术》第六章 资源管理: 掌握定制控件样式、界面主题、可绘制资源程序的编写方法
《移动互联网技术》第六章 资源管理: 掌握定制控件样式、界面主题、可绘制资源程序的编写方法
23 0
|
11月前
|
JavaScript 前端开发 数据库
Unity3d(webGL)构建数字孪生小案例(包含完整的数据交互体系)附赠完整代码
Unity3d(webGL)构建数字孪生小案例(包含完整的数据交互体系)附赠完整代码,请关注公众号:拼搏的小浣熊,获取简化版的代码!
|
领域建模 开发者 微服务
云巧工坊蓝图绘制简介
根据领域驱动设计引子,引出事件风暴建模方法,划分限界上下文等战略设计方法。介绍云巧工坊提供的蓝图设计工具,帮助开发者将业务模型落地为代码架构。
云巧工坊蓝图绘制简介
|
Web App开发 JSON 测试技术
更强的动画能力,更好的渲染质感,Oasis Engine 0.5 发布
本次里程碑重点重新设计了动画系统,提供了全新的 Animator 组件并支持了 BlendShape 动画,动画能力得到大幅提升。渲染方面重新设计了 PBR 材质接口,环境光的漫反射部分提供了球谐模式,PBR 工作流得到提升。2D 方面增加了精灵图集功能,Spine 增强了换肤能力,Lottie 动画也集成到编辑器中。官网支持中英文双语,新增 20+ 示例。
更强的动画能力,更好的渲染质感,Oasis Engine 0.5 发布
|
数据可视化 定位技术 Android开发
可视化炫技利器诞生——VISLAB交互动画组件包发布,附详细介绍
VISLAB交互组件包的出现极大地拓展了DataV的展示与交互能力,本文作者—阿里云MVP陈琦将详细介绍此组件包的应用场景,并分享一些可视化数据分析案例与可视化心得。
4633 0