虚幻引擎VR游戏开发03| 键位映射
Enhanced input mapping 按键映射
在虚幻引擎(Unreal Engine)中,Enhanced Input Mapping 是一个用于管理和处理输入(例如键盘、鼠标、手柄等)的系统。它提供了一种更灵活、更强大的方式来定义和响应用户输入,相比传统的输入系统有多项改进。以下是它的主要功能和用途:
- 更灵活的输入映射:Enhanced Input Mapping 支持基本的按键绑定,也能处理组合输入(例如按住一个键再按另一个键)、修改器(如按住Shift键来修改其他按键的功能)、以及上下文感知输入(例如根据当前游戏状态动态改变输入的效果)。
- 输入行为的定义:开发者可以定义复杂的输入行为并精确管理,而不仅仅是简单的按键映射。例如,你可以创建一个输入行为来处理“跑步”动作,该动作可以绑定到多种不同的输入组合(如按住Shift键并前进),并且可以轻松切换或修改这些绑定,而无需改变底层代码。
- 多设备支持:提供了对多种输入设备的支持,比如键盘、鼠标、游戏手柄,VR控制器。开发者可以统一管理不同设备的输入映射,从而简化跨平台开发的工作流程。
- 方便的热插拔支持:更好地支持输入设备的热插拔(即插即用)。例如,玩家可以在游戏过程中更换控制设备(从键盘切换到手柄),游戏可以动态调整输入映射而不会中断游戏体验。
使用场景举例:
- 复杂动作绑定:你可以为角色的动作(如跳跃、攻击、特殊能力)创建复杂的输入规则,并根据游戏中的情况动态调整这些规则。
- 跨平台支持:在开发跨平台游戏时,使用 Enhanced Input Mapping 可以让你统一管理不同平台的输入方案,而不需要为每个平台编写独立的输入处理代码。
- VR/AR应用:在VR或AR项目中,Enhanced Input Mapping 能处理复杂的手势输入和不同控制器的输入模式。支持VR控制器的复杂手势输入。
IMC&&IA
在Unreal Engine中,IMC(Input Mapping Context)和IA(Input Action)是 Enhanced Input System 中两个核心概念,它们用于处理和组织用户输入。理解这两者的关系有助于高效地管理和响应输入事件。
1. Input Action (IA)
- IA 是一个输入动作,它代表了一种用户交互行为(例如跳跃、攻击、打开菜单等)。
- 每个 IA 资源定义了一种用户输入行为,可以是按键、鼠标点击、手柄按钮、触控操作等。
- IA 本身并不与特定的按键或输入设备直接绑定,它只是描述了用户的一个可能的动作(例如“跳跃”或“射击”),并且可以包含复杂的输入处理逻辑,例如双击、长按、组合键等。
2. Input Mapping Context (IMC)
- IMC 是是一个容器,译为输入映射上下文,它是一组 IA与具体输入设备的按键或按钮的绑定集合。
- IMC 允许你为不同的 IA 设置具体的按键映射。例如,你可以为“跳跃”这个 IA 绑定到键盘的空格键、手柄的A键,或者 VR控制器的某个按钮。
- IMC 还可以管理输入的优先级和上下文。例如,你可以有多个 IMC,根据游戏状态(例如战斗模式、菜单模式)切换不同的输入映射,在进入战斗模式时加载战斗输入映射,在菜单模式时加载菜单输入映射。
示例:
- IA_Jump:表示玩家跳跃的行为。
- IMC_PlayerControls:包含对 IA_Jump 的映射,例如将键盘的
Space
键和手柄的A
键都绑定到 IA_Jump 上。
IMC 管理了哪些按键/按钮会触发 IA,而 IA 定义了当这些按键/按钮被按下时,游戏应该执行的逻辑。
案例
在虚幻引擎蓝图中制作按下Pico Touch (R) Trigger就能打开一个UI交互对话
1:创建 UI Widget
2:设置输入映射
- 创建一个
Input Mapping Context
资源(如果使用 Enhanced Input System),并添加一个新的输入动作,命名为IA_OpenDialogue
。 - 在
IA_OpenDialogue
中绑定 Pico Touch (R) Trigger 的按键事件。
3:在蓝图中响应输入并显示 UI
-
打开角色蓝图(默认VR模板中,VR_pawn的蓝图里可以改键位映射)
-
示例蓝图逻辑:
InputAction OpenDialogue (Pressed) ↓ Create Widget (Class: WBP_DialogueUI) ↓ Add to Viewport