《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]按键时,玩家角色显著地提高了速度。

相关文章
|
数据库
【latex】在Overleaf的IEEE会议模板中,快速插入参考文献
【latex】在Overleaf的IEEE会议模板中,快速插入参考文献
4781 1
|
Ubuntu
node、npm 命令升级
node、npm 命令升级
485 0
|
6月前
|
运维 监控 Linux
Finalshell远程管理软件安装步骤详解(附SSH连接与文件传输教程)
FinalShell是一款专为运维与开发者设计的国产远程管理工具,支持SSH/SFTP连接Linux服务器、VPS及云主机,集成终端、文件拖拽传输、实时资源监控(CPU/内存/磁盘)等功能,界面简洁易用,Win7–Win11全兼容。(239字)
3414 4
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与未来医疗:AI技术在疾病诊断中的应用前景####
本文探讨了人工智能(AI)在现代医疗领域,尤其是疾病诊断方面的应用潜力和前景。随着技术的不断进步,AI正逐渐改变传统医疗模式,提高诊断的准确性和效率。通过分析当前的技术趋势、具体案例以及面临的挑战,本文旨在为读者提供一个全面的视角,理解AI如何塑造未来医疗的面貌。 ####
|
人工智能 搜索推荐 开发者
Kiss3DGen:基于图像扩散模型的3D资产生成框架
Kiss3DGen是一个创新的3D资产生成框架,通过重新利用预训练的2D图像扩散模型,高效生成、编辑和增强3D对象,支持文本到3D、图像到3D等多种生成任务。
583 5
|
前端开发 数据可视化 安全
82.7K star!大气炫酷UI开源项目,超级火!
shadcn/ui 是一款基于 Radix UI 和 Tailwind CSS 构建的现代化 UI 组件库,专为追求设计品质与开发效率的开发者打造。不同于传统组件库,它提供完全可定制的组件代码模板,让开发者既能享受开箱即用的便利,又能保持对设计系统的完全掌控。
866 13
|
人工智能 搜索推荐 程序员
AI神器Deepseek:3分钟搞定一篇爆款文案!
大家好,我是小米,一个31岁、热爱分享技术的自媒体人。本文将介绍如何使用Deepseek写文案。Deepseek是一款基于AI的文案生成工具,能快速生成高质量文案,支持多种语言风格,帮助提高写作效率。文中通过具体案例——为咖啡店新品“焦糖玛奇朵”撰写推广文案,详细讲解了从明确目标到发布文案的全过程,并提供了优化和应用技巧。如果你还在为写文案发愁,不妨试试Deepseek,它将成为你的得力助手!
2520 23
|
监控 测试技术 数据库
详解Hyper-V虚拟机CPU分配方法
在Hyper-V环境中,合理分配虚拟机的CPU资源至关重要。vCPU是物理CPU的虚拟化表示,管理员可通过指定处理器数量、核心数、设置兼容性和亲和性、启用动态分配等方法优化性能。使用性能监视工具监控并调整CPU资源,避免过度分配,确保虚拟机稳定运行。定期评估和优化资源分配策略,以适应业务变化,保持最佳性能。
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
1851 5
|
分布式计算 Hadoop

热门文章

最新文章