虚幻UE 增强输入-第三人称模板增强输入分析与扩展

news2024/11/28 12:49:38

本篇是增强输入模块,作为UE5.0新增加的模块。
其展现出来的功能异常地强大!
让我们先来学习学习一下第三人称模板里面的增强输入吧!

文章目录

  • 前言
  • 一、增强输入四大概念
  • 二、使用步骤
    • 1、打开增强输入模块
    • 2、添加IA输入动作
    • 2、添加IMC输入映射内容
    • 3、绑定IMC到EIPS增强输入本地用户子系统
    • 4、具体按键实现逻辑
  • 三、测试其他特性
    • 1、同一按键 不同Map先后
    • 2、不同按键(组合键
    • 3、运行时按键控制
  • 总结
  • 参考


前言

为什么要开发出一个新的输入模式呢?
是因为旧的输入模式不好吗?其实并不是,而是不够灵活、方便,
且一般只能实现简单的功能,如果需要复杂的功能得自己写逻辑了,
比如按住、双击、联合输入等
所以就开发了一个新的输入模式----增强输入(Enhanced Input System)


一、增强输入四大概念

增强输入主要提出了四个概念:

输入动作(UInputAction): 是增强输入系统和项目代码之间的通信链接。
和我们的按键无关,只知道按键的状态,也就是是否按下。 

输入修改器(UInputModifier):用于修改来自用户设备的原始输入值。
也就是可以对按键的状态进行修改

输入触发器(UInputTrigger): 使用经过修饰器修改的输入值,
或者使用其他输入动作的输出值,来确定是否激活输入动作。

输入映射内容(UInputMappingContext): 将用户输入映射到输入动作,
并可以动态地为每个用户添加、移除或安排优先次序。和按键有关。

二、使用步骤

1、打开增强输入模块

开启增强输入插件
在这里插入图片描述
修改默认的输入模式为增强输入
在这里插入图片描述

2、添加IA输入动作

在这里插入图片描述

原先的Action绑定:
在这里插入图片描述
原先的Axis绑定:(也可以把左右移动、上下移动写在一个IA里,用2D来表示在这里插入图片描述

2、添加IMC输入映射内容

在这里插入图片描述

按键绑定:(修改器中Negate是相反的意思,就是把修饰器修改的输入值,
或者使用其他输入动作的输出值进行取反

3、绑定IMC到EIPS增强输入本地用户子系统

在这里插入图片描述

4、具体按键实现逻辑

在这里插入图片描述
在这里插入图片描述
这样一个简单的第三人称模板的输入就搞定了!

注意:我们这里接触到是输入修改器(UInputModifier)暂时只有Negate反向,
但其实在第三人称模板内,还涉及了:


盲区DeadZone为了解决两个问题:
1、如果用户没有按下任何键,系统通常会将输入视为无效或忽略。
2、当用户只是暂时释放了按键,但很快又按下时,系统可能无法正确地响应他们的输入。
解决方式:当用户在一定时间内没有按下任何键时,系统可以忽略他们的输入,以避免误操作或干扰游戏进程。同时,当用户按下某个键时,系统可以快速地响应并执行相应的动作,提供更好的游戏体验。


拌合输入轴值Mixed Axis Values为了解决的问题:
1、将1D输入(例如键盘按键)映射到2D或3D空间的问题。
简单的来说就是同时按下W和A键时,如何判断移动的方向?
拌合输入轴值允许开发者将多个轴值组合在一起,形成更复杂的输入动作。

三、测试其他特性

两份功能一模一样的IA和IMC
在这里插入图片描述

1、同一按键 不同Map先后

结论:后进先出 

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

1、改变优先级  优先级越大越优先

在这里插入图片描述

2、consume input为false(默认为true,如果最后mapping的那个为false的话不会影响其他的输入
Consume Input 允许开发者控制输入事件是否被处理或传递给其他系统或组件。
通过使用 Consume Input,开发者可以拦截用户的输入行为,并进行自定义处理,
而不需要将输入传递给其他组件或系统。

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

2、不同按键(组合键

在这里插入图片描述
组合键
1和2一起按才打印
两个IA都要加入到Mapping 此时单独按1 没有用
在这里插入图片描述
此时1和2一起按下
在这里插入图片描述

3、运行时按键控制

运行时加入
刚运行时按2没有反应 当按下1后 2才有反应在这里插入图片描述
运行时离开
1和2随便按 再按3 后来又1和2随便按 最后发现1已经失效在这里插入图片描述


总结

增强输入的功能太强了,远不止我所展示的这么多,
还有很多功能需要再研究,等待后续发掘!!!
关注不迷路!!!


参考

UE5.0官方中文文档:虚幻引擎中的增强输入

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

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

相关文章

SAFe大规模敏捷企业级实训

课程简介 SAFe – Scaled Agile Framework是目前全球运用最广泛的大规模敏捷框架,也是成长最快、最被认可、最有价值的规模化敏捷框架,目前全球SAFe认证专业人士已达80万人,福布斯100强的70%都在实施SAFe。本课程是一个2天的 SAFe权威培训课…

线程的深入学习(二)

前言 上一篇讲了线程池的相关知识,这篇文章主要讲解一个 1.并发工具类如CountDownLatch、CyclicBarrier等。 2.线程安全和并发集合: 3.学习如何使用Java提供的线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList等。 并发工具类 …

java练习题之String方法运用

应用知识点:​​​​​​String类 1:(String 类)仔细阅读以下代码段: String s "hello"; String t"hello"; char[] c {h,e,l,l,o}; 2:下列选项输出结果为false 的语句是() System.out.println( s.euqals( t…

线段树基础(下)

线段树二分 对序列进行二分的操作,可能使用线段树二分进行优化。 一些序列上最左/最右位置问题可以二分解决,同时需要使用线段树进行查询。时间复杂度通常是 O ( n log ⁡ 2 n ) O(n\log^2n) O(nlog2n),可以尝试使用线段树二分的技巧将其优…

机器学习(四) -- 模型评估(2)

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理(1-3) 机器学习(三) -- 特征工程(1-2) 机器学习(四) -- 模型评估…

B端产品经理学习-对用户进行需求挖掘

目录: 用户需求挖掘的方法 举例:汽车销售系统的用户访谈-前期准备 用户调研提纲 预约用户做访谈 用户访谈注意点 我们对于干系人做完调研之后需要对用户进行调研;在C端产品常见的用户调研方式外,对B端产品仍然适用的 用户需…

6.1810: Operating System Engineering 2023 <Lab6: Multithreading>

一、本节任务 二、要点 2.1 锁(Locking) 在多 CPU 或者单 CPU 多线程并发的场景中,对临界资源(或者说共享资源)的访问如果不加以限制,可能会引发一些严重的问题,比如当两个线程同时对一个共享…

Python初探:从零开始的编程奇妙之旅

一、Python是什么 Python是一门多用途的高级编程语言,以其简洁、易读的语法而脱颖而出。在深度学习领域,Python扮演着至关重要的角色。其丰富的科学计算库(如NumPy、Pandas、Matplotlib)和强大的深度学习框架(如Tenso…

jmeter参数化的三种方式

1.用户定义变量 使用变量: ${变量名} 这个变量是全局变量,也就是在下面子节点中都可以使用; 使用场景:两个账号分别有不同的权限,A经办,B审核。等。。。 2.CSV数据文件设置 3.函数

案例071:基于微信小程序的汽车预约维修系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

jupyter更改默认路径到其它的目录或者到其它的盘 比如D盘

1.打开终端 输入jupyter notebook --generate-config 如下 2.在C:\Users\mb5958\.jupyter路径下 3.用记事本打开它,搜索directory 4.在你想要的路径下新建一个文件夹,如‘D:\jupyterFile’,然后将路径名放在c.NotebookApp.notebook_dir"…

卷麻了,00后测试用例写的比我还好,简直无地自容...........

经常看到无论是刚入职场的新人,还是工作了一段时间的老人,都会对编写测试用例感到困扰?例如: 如何编写测试用例? 作为一个测试新人,刚开始接触测试,对于怎么写测试用例很是头疼,无法…

【PCB专题】Allegro封装更新焊盘

在PCB封装的绘制中,有时会出现需要更新焊盘的情况。比如在制作封装的过程中发现焊盘做的不对而使用PAD_Designer重新更新了焊盘。 那在PCB中如何更新已经修改过的焊盘呢? 打开封装,选择Tools->Padstack->Refresh... 选择Refresh all …

让 sdk 包静默升级的 SAO 操作,你见过几种?

拓展阅读 让 sdk 包静默升级的 SAO 操作,你见过几种? 业务背景 有时候为业务方提供了基础的 sdk 包,为了保证稳定性,一般都是 release 包。 但是每一次升级都非常痛苦,也不可能写一个一步到位的 jar 包&#xff0c…

javascript 常见工具函数(三)

21.克隆数组的几种方法: (1)slice方法: let arr [1,2,3,4] let arr1 arr.slice() //或者是 let arr1 arr.slice(0) arr[0] 6 console.log(arr) // [6, 2, 3, 4] console.log(arr1) // [1, 2, 3, 4] (2&…

Android Jetpack学习系列——Navigation

写在前面 Google在2018年就推出了Jetpack组件库,但是直到今天我才给重视起来,这真的不得不说是一件让人遗憾的事。过去几年的空闲时间里,我一直在尝试做一套自己的组件库,帮助自己快速开发,虽然也听说过Jetpack&#…

Stable Diffusion模型概述

Stable Diffusion 1. Stable Diffusion能做什么?2. 扩散模型2.1 正向扩散2.2 反向扩散 3. 训练如何进行3.1 反向扩散3.2 Stable Diffusion模型3.3 潜在扩散模型3.4 变分自动编码器3.5 图像分辨率3.6 图像放大 4. 为什么潜在空间是可能的?4.1 在潜在空间中…

【智慧地球】星图地球 | 星图地球超算数据工场

当前空天信息处理涉及并发并行的大量计算问题,需要高性能计算、智能计算联合调度,以此来实现多算力融合;而我国算力产业规模快速增长,超算算力资源正需要以任务驱动来统筹。 基于此,中科星图与郑州中心展开紧密合作&a…

Qt学习_17_一些关于QTableWidget的记录

1 QTableWidget::clear() 程序异常退出 近日,项目中使用到QTableWidget,遇到一个问题,项目需要清空这个表格,但是无论调用clear(),clearContents(),程序都报:程序异常退出。 而且项目程序还比较…

OpenVINS学习5——VioManager.cpp/h学习与注释

前言 之前又看到说VioManager.cpp/h是OpenVINS中的核心程序,这次就看看这里面都写了啥,整体架构什么样,有哪些函数功能。具体介绍: VioManager类 整体分析 VioManager类包含 MSCKF 工作所需的状态和其他算法。我们将测量结果输…