虚幻输入动作与键盘事件

问题描述 投票:0回答:1

当我可以在游戏控制器中简单地使用键盘事件时,为什么要设置增强输入操作事件?键盘按钮没有其他功能,并且不需要用户进行更改。 或者在这种情况下输入操作没有真正的好处?

keyboard-events unreal-engine5 enhanced-input-system
1个回答
0
投票

朋友!
这实际上是一个很好的问题,所以让我尝试澄清一下。
因此,基本上增强输入系统不仅仅是处理硬件输入的“不同方式”。是处理硬件输入的方式。这是因为,虽然实现起来比较复杂,但它已经准备好处理一系列不同的情况。
我将尝试给出一些示例,如果您要使用直接捕获按键

,您必须学习如何解决这些问题
  1. 增强输入系统可以将不同的输入映射到同一操作:在您的示例中,如果玩家将来使用控制器会发生什么?您需要不同的逻辑来捕获每种不同的输入类型。不在增强输入中。在增强输入映射编辑窗口中,您可以为同一操作定义多个不同的输入。这意味着如果您决定新密钥应该或不应该触发某个操作,则无需更新任何代码。
  2. 增强输入系统可以处理运行时重新映射:假设您使用常用的 WASD 进行移动,但您决定玩家可以在“选项”菜单中重新绑定其按键。你做什么?现在,您需要一种方法来捕获他可以使用的每个可能的键盘和控制器输入,然后将其与其他一些数据进行比较,以确定他现在使用的映射类型。不适用于增强输入。您可以在运行时访问输入映射上下文并更新其结构,它的字面意思很简单,就是
    IMC->UnmapKey() / IMC->MapKey()
  3. 增强输入系统可以区分输入类型:假设您的玩家可以按E键打开门,也可以按住E键猛击门。实际上有一种方法可以在没有增强输入系统的情况下处理此问题:您必须跟踪玩家按下给定键的所有后续帧,并根据按下的时间执行特定操作。如果您尝试在客户端/服务器类型的场景中想象一下这一点,您就会明白这是多么容易发生故障。嗯,增强输入系统不行。您只需进入“输入操作”编辑窗口,添加“保持触发器”并定义触发操作之前的秒数。即使它应该只发射一次或者应该受到时间膨胀的影响。当我这么说时,我不是在开玩笑,如果您想在蓝图中以某种方式手工构建类似的东西,可能需要几个月的时间才能达到相同的结果。我不是在开玩笑。不仅如此,输入操作还可以轻松地区分每个操作仅应触发一次的操作以及何时触发。而且使用起来非常简单。
  4. 动态切换映射:假设当玩家按下空格键时,您需要角色
    Jump
    ,但如果他在水下,则需要
    Swim Up
    。您可以跟踪游戏中所有不同的玩家状态,并为每个键和每个状态定义不同的逻辑,或者您可以只切换映射输入。如果您只是切换地图输入(或巧妙地处理其优先级),则不需要任何新逻辑。只需将每个玩家状态绑定到输入映射上下文(如果需要的话),当玩家更改状态时,它会更改映射。简单。
  5. 输入的不同时刻有不同的事件:假设你需要你的玩家在按住W的同时继续向前走。但是,你需要在他按下W的第一帧和在他按下W的最后一帧中触发一个特定的方法。按 W(例如,处理触发动画)。我什至不会开始解释如何使用直接按键捕获来处理此问题,因为它不值得。但是,在增强输入系统中,您可以在不同的输入事件上为相同的操作定义不同的方法。例如,您有 Started 事件,该事件仅在按下按键的第一帧中调用。或者 Completed 事件,将在最后一帧中触发。属于同一输入操作的每个事件都可以绑定到脚本中的不同方法。完全消除了评估您收到的事件类型的任何逻辑的必要性。

说实话,我可以继续说下去,但我想我已经表达了自己的观点,而且我也在制作一个有关此内容的 Youtube 视频,我不想在这里剧透这一切。 xD
不管怎样,我希望我能提供帮助,相信我,增强输入系统是正确的选择。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.