当前位置:   article > 正文

UE5学习笔记|增强输入系统EnhancedInput_enhanced input

enhanced input

前言

在UE5.1中,官方将原有的输入系统正式替换为增强输入系统。初次使用这个系统时难免会觉得有些复杂,本文档的写作目的就是简单介绍一下增强输入系统的构成以及如何使用它的基础功能。

EnhancedInput的优点

如果接触过EnhancedInput应该了解这套框架在蓝图中配置一个输入事件的流程要比原本的输入系统复杂。 相应的这些流程也为构建一些较为复杂的输入机制带来了优势:

  • 角色能够在不同的情景下切换不同的输入变化(例如切换近战/远程/不同载具等)

  • 系统中包含一些默认实现的较为复杂的输入行为(例如按住蓄力/双击等)

  • 将按键输入、轴输入等更多的输入事件都集成在了一个Input Event中

EnhancedInput的基础构成

  • InputAction(IA)输入动作

 老版本的输入设置:

EnhancedInput中的IA相当于老版本中的输入事件的名称,不过它相比老版本多了一些能够自定义设置的参数。

  • Value Type

IA的value type共有四种,代表了这一输入事件的输出值类型。

         一般来说Bool值代表以前的动作映射,判断按键是否按下。

         float,Vector等值可以用于判断鼠标,手柄摇杆的输入,可以根据输出值判断手柄或者鼠标的位置。

         Vector3D可以用于运动传感器的输入,得到传感器的三维坐标。

  • InputMappingContext(IMC)输入映射上下文环境

 老版本中的按键mapping

IMC的结构类似老版本的的Mapping,作用也是将按键与输入事件绑定。区别在于老版本是通过输入命名来自定义输入事件,而EnhancedInput中是在IMC中将按键与用户创建的InputAction进行绑定。

 

顾名思义,IM就是用于对输入动作的输出值进行限制/修改的规则。比如在老版本中判断前进后退的输入是通过修改Scale的正负,在EnhancedInput中就是通过修改IM来实现的。

 老版本中通过修改按键Scale值来决定输出值的正负

IT是用来判断当前输入事件什么时候应该触发的触发规则,比如想做一个蓄力事件:蓄力时间为1秒,蓄力一秒后仅触发一次事件,就可以按照下图的方式来进行配置:

注意事项

上图中可以看到IMC和IA中都可以对键位配置Modifiers和Triggers,这两者有什么区别呢?

IA中的参数相当于全局,IMC中的参数只是针对于当前情景,并且两者之间的修改是会叠加的。

如果输入事件在IA和IMC中的Modifier都配置了negative,则输出值会负负得正变为正值。

输入事件绑定

EnhancedInput系统中绑定输入事件不像之前的系统只需要在项目设置中绑定按键,现在需要创建两种文件进行绑定:InputAction(IA)和InputMappingContext(IMC)

在创建好需要用到的IA后,在IMC中对各个IA事件进行具体按键的绑定:

 

根据不同的情景可以创建多个IMC

 

然后在蓝图中倒入对应情景的IMC进行导入

导入后就能像之前输入系统一样获取对应的输入事件来IA进行逻辑的绑定

案例:蓄力事件

下图为蓄力事件的配置与在蓝图中事件触发时Event不同输出口的触发条件

参考文档/视频

https://zhuanlan.zhihu.com/p/470949422

https://docs.unrealengine.com/5.1/zh-CN/enhanced-input-in-unreal-engine/

https://www.bilibili.com/video/BV14r4y1r7nz/?spm_id_from=333.337.search-card.all.click&vd_source=09360098519d857e12c5a4e268163c45

UE5引擎自带VR模版

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/714440
推荐阅读
相关标签
  

闽ICP备14008679号