虚幻官方项目《CropOut》技术解析 之 在实战中理解Enhanced Input系统

news2024/11/26 9:44:05

文章目录

  • 概要
  • Enhanced Input系统基础
    • 回顾旧版输入系统
      • 定义物理按键和Action/Axis的映射
      • 输入事件
    • Enhanced Input系统
      • 统一的Action
      • Input Mapping Context
      • 输入事件
  • 《Crop Out》
  • 《Crop Out》中基于Enhanced Input的输入控制系统
    • Input Mapping Context分层管理
    • 输入修改器(Input Modifier)
      • 预设输入修改器
      • 《Crop Out》中的自定义输入修改器
  • 一些琐碎的知识点
    • 如何判断当前控制器类型

概要

在上一篇文章《虚幻官方项目《CropOut》技术解析 之 程序化岛屿生成器(IslandGenerator)》我们介绍了《CropOut》中使用Geometry Script程序化生成每个关卡的岛屿。今天再来聊一聊Enhanced InputEnhanced Input是虚幻官方想用《Crop Out》诠释的技术要点之一。其实在去年虚幻官方的直播节目中,虚幻官方已经对Enhanced Input作了比较全面深入的介绍,本文将重点分析《CropOut》中基于Enhanced Input的输入控制系统。

Enhanced Input系统基础

为了便于没接触过Enhanced Input的朋友阅读,先介绍一下这个系统,已经熟悉Enhanced Input的朋友可以跳过这个部分。

回顾旧版输入系统

定义物理按键和Action/Axis的映射

旧版输入系统大家都不陌生,我们在Engine>Input中配置Action/Axis和物理按键的对应关系

在这里插入图片描述

上述配置会静态记录在DefaultInput.ini文件中
在这里插入图片描述

输入事件

接下来DefaultInput.ini中定义的Action会被反射到蓝图中成为输入事件,当运行时有相应的物理按键被按下就会触发后面的游戏逻辑

在这里插入图片描述

把上述映射关系抽象出来其实就是:

在这里插入图片描述

旧版输入系统我们用了很久,并没有觉得有什么不妥,遇到一些问题也有成熟的解决方案,那么新版的“提升”在于哪些方面呢?

Enhanced Input系统

从使用的角度,新的Enhanced Input系统有几个最显著的变化:

统一的Action

将之前的ActionAxis统一为Action,并且使用Input Action资源来定义它们,每个Input Action资源文件定义了一个Action:

在这里插入图片描述

Input Mapping Context

使用Input Mapping Context资源文件定义物理按键和Action的映射关系等信息:

在这里插入图片描述

在这里插入图片描述
Input Mapping Context资源文件的内容很像旧系统中配置Action/Axis和物理按键的对应关系的界面。并且一个项目可以配置多个Input Mapping Context

输入事件

同样的,当运行时有相应的物理按键被按下就会触发后面的游戏逻辑,我们可以看到输入事件有了更多更细分的状态引脚

在这里插入图片描述

把上述映射关系抽象出来其实就是:

在这里插入图片描述

上述改变的意义是什么呢?由于Input Mapping Context是资源文件,于是就允许我们在游戏的运行时对Input Mapping Context进行动态装卸,每个Input Mapping Context都是一组Action的集合,只有当Action所属Input Mapping Context被加载,该Action才会被触发。所以每一个Input Mapping Context其实就是一个输入模块。

在这里插入图片描述

这样我们就可以轻松列举出Enhanced Input系统模块化的几大优点了:

  • 在不同的模式(状态)下可以加载对应的Input Mapping Context,很方便地隔离不同模式(状态)下输入事件触发的游戏逻辑
  • 可以对Input Mapping Context分层管理(在《Crop Out》中会有例子)
  • 运行时系统只需要轮询当前加载的Input Mapping Context中的Action,一定成度上提升了效率
  • 刚才说到更多更细分的状态引脚也节省了我们很多代码

当然Enhanced Input系统的提升还不止是这些。接下来我们结合虚幻官方示例项目《Crop Out》尝试在实战中理解Enhanced Input系统。

《Crop Out》

在阅读下文之前建议先上手试玩一下《Crop Out》或者看一下官方的导览视频

[教程]《Cropout》休闲RTS示例项目导览(官方字幕)

游戏中的Player是实际是一个如下图所示的Pawn
在这里插入图片描述

《Crop Out》中基于Enhanced Input的输入控制系统

Input Mapping Context分层管理

《Crop Out》中一共包含4个Input Mapping Context并且按照他们的有效周期可以分成了3个层次:

BP_Player

在这里插入图片描述

  • 第1层 IMC_BaseInput:在游戏运行中全程有效,包含使用键盘、Gamepad、鼠标滚轮实施屏幕移动、缩放、旋转操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 第2层 IMC_Villager_ModeIMC_BuildMode:分别在Villager Mode和Build Mode有效,对应着两种模式下的不同操作方式

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

  • 第3层 IMC_DragMove:用鼠标和触摸屏实施的拖拽操作,仅在Villager模式的特定条件下有效。

在这里插入图片描述

在这里插入图片描述

输入修改器(Input Modifier)

Enhanced Input还提供了输入修改器(Input Modifier),允许用户将初始值程序化地映射(修正)成新的值,并且多个输入修改器还可以串联起来形成队列,从而应对更复杂的需求。

预设输入修改器

Enhanced Input提供了一系列的预设输入修改器

  • DeadZone:限定值的范围
  • Scalar: 缩放一个标量
  • Negate: 取反
  • Smooth: 多帧之间平滑
  • CurveExponential: 指数曲线,XYZ
  • CurveUser: 自定义指数曲线,CurveFloat
  • FOVScaling: FOV缩放
  • ToWorldSpace: 输入设备坐标系向世界坐标系转换 (调换XYZ顺序)
  • SwizzleAxis: 互换轴值
  • Collection: 嵌套子修改器集合

《Crop Out》中的自定义输入修改器

还可以自定义输入修改器,《Crop Out》中自定义了2个输入修改器,分别使用在下图所示的位置:
在这里插入图片描述
它们分别是对出,触摸屏设备的手势操作的初始值进行归一化以及偏移修正。

IM_Normalize

在这里插入图片描述

IM_Offset

在这里插入图片描述

一些琐碎的知识点

如何判断当前控制器类型

BP_PC(Player Controller)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/912415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu系统全盘备份——TimeShift的安装与使用

Timeshift,它使用完全备份的方式,直接将整个操作系统包括个人配置全部备份打包。也就是全盘备份。 操作过程 依次执行命令: sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt update sudo apt install timeshift打开软件后&#x…

【ES6】—【必备知识】—函数的参数

一、参数的默认值 1. ES5 设置默认值 function foo (x, y) {y y || worldconsole.log(x, y) } foo(hello, xiaoxiao) foo(hello, 0) // hello xiaoxiao // hello worldPS: 使用 || 的方式设置默认值不严谨, 0、undefined、‘’ 这些参数都会被判定为f…

安装VSCA 过程中的报错

安装VSCA 过程中的报错:无法获取目标服务器证书的SSL指纹: 解决方案三点: 防火墙 网络IP,网关 使用ping命令或者telnet检查网络是否可达 网络端口没有开启 有无启用 另外最新版本有漏洞 建议换一个常用版本

NestJS 中的 gRPC 微服务通信

想象一下,你回家过节,你的家人决定聚会。而不是让一个人做所有的烹饪,每个人都同意带上他们擅长制作的特色菜。目标是通过组合所有这些菜肴来制作一顿完整的饭菜。你同意做鸡肉炒饭,你哥哥做甜点蛋糕,妹妹做沙拉。 每…

SV-7101T网络音频广播终端使用手册

1.1、产品简介 感谢你使用我司的SV-7101T网络音频播放终端,SV-7101T能处理tcp/ip网络音频流,提供一路线路输出。主要用于公共数字广播,媒体教学,报警等需要数字音频的领域。 SV-7101T具有10/100M以太网接口,支持最高4…

高忆管理:巨无霸IPO来了!年内全球最大?英伟达曾400亿美金“求亲”

当地时间8月21日,美股三大股指涨跌纷歧,纳指连跌四日之后反弹。截至收盘,道指跌0.11%,标普500指数涨0.69%,纳指涨1.56%。本周市场关注美联储主席鲍威尔周五在杰克逊霍尔央行年会上的说话。 周一美国国债收益率攀升。美…

Power BI 如何做页面权限控制

同一个PBI报告中有多页, 有时我们需要将其中一些页面开给一部分人, 一些页面开给另一部分人 比如A用户只允许查看报告的第1,2页,B用户只能查看第3页等 1 导入页面控制权限表 2 创建角色 3 设计封面页 选择筛选器视图, 将页面字段拖进去, 将筛选器设置成单选选择, …

2023年上半年,吉利汽车销量增长13.1%,同比增长38%

根据吉利汽车发布的中期业绩报告,2023年上半年,吉利汽车取得了令人瞩目的销售和收入增长。该公司在中国乘用车市场表现出色,销量增长了13.1%,达到了69.4万辆,超过了整体市场增长率(8.8%)。 这主…

ebay小夜灯亚马逊UL1786测试报告

小夜灯UL报告UL1786测试标准亚马逊美国站销售办理 UL认证,很多人对它熟悉却又陌生。出口美国的时候,很多人都听过UL认证。但是因为UL认证在美国属于非强制性的认证,对于清关没有影响,所以有很多卖家不会深入了解它。其实相关产品…

Python实现SSA智能麻雀搜索算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出&a…

​LeetCode解法汇总849. 到最近的人的最大距离

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个数…

互联网医院开发|医院叫号系统提升就医效率

在这个数字化时代,互联网医院不仅改变了我们的生活方式,也深刻影响着医疗行业。医院叫号系统应运而生,它能够有效解决患者管理和服务方面的难题。不再浪费大量时间在排队上,避免患者错过重要信息。同时,医护工作效率得…

QT基础教程之三信号和槽机制

QT基础教程之三信号和槽机制 信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目…

Python实现SSA智能麻雀搜索算法优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出&a…

2023-08-22 Unity Shader 开发入门2 —— Shader 开发介绍

文章目录 一、必备概念1 计算机图形程序接口2 图形接口程序与其他概念的联系 二、Shader 开发1 Shader2 Shader 开发3 需掌握的内容 一、必备概念 1 计算机图形程序接口 ​ 计算机图形程序接口(Graphics API)是一套可编程的开放标准,不论 2…

我和ChatGPT吟诗作对《落凡尘》

《落凡尘》 萌生泥里追梦去,归时不做蓬蒿人。 人间在世须进取,哪得几回落凡尘。 我和ChatGPT吟诗作对。

高忆管理:市盈率市净率市销率关系?

市盈率(Price-Earnings Ratio,简称P/E Ratio)、市净率(Price-to-Book Ratio,简称P/B Ratio)和市销率(Price-to-Sales Ratio,简称P/S Ratio)是常用的股票估值目标&#xf…

【数据分享】2012-2022年全球范围逐年NPP/VIIRS夜间灯光数据

夜间灯光数据是我们在各项研究中经常使用的数据!本次我们给大家分享的是2012-2022年全球范围的逐年的NPP/VIIRS夜间灯光数据,数据格式为栅格格式(.tif)。该数据来自于NCEI国家环境信息中心,近期该网站更新了2022年的夜间灯光数据,…

大数据扫盲(2): 数据分析BI与ETL的紧密关系——ETL是成功BI的先决条件

着业务的发展每个企业都将产生越来越多的数据,然后这些数据本身并不能直接带来洞察力并产生业务价值。为了释放数据的潜力,数据分析BI(商业智能)成为了现代企业不可或缺的一部分。然而,在数据分析的背后,有…

【HCIP】08.ISIS中间系统

链路状态协议,传递LSA信息ISIS基于数据链路层封装在OSI时,也有自己的网络层地址和自己的路由协议,即ISIS。之前的ISIS支持OSI的网络层地址,是为OSI中的CLNP(无连接网络协议)网络设计的路由协议,…