虚幻引擎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,根据游戏状态(例如战斗模式、菜单模式)切换不同的输入映射,在进入战斗模式时加载战斗输入映射,在菜单模式时加载菜单输入映射。

示例:

  1. IA_Jump:表示玩家跳跃的行为。
  2. 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

  1. 打开角色蓝图(默认VR模板中,VR_pawn的蓝图里可以改键位映射)

  2. 示例蓝图逻辑

    InputAction OpenDialogue (Pressed)
        ↓
    Create Widget (Class: WBP_DialogueUI)
        ↓
    Add to Viewport
    
相关推荐
咩咩觉主4 小时前
Unity实战案例全解析 :PVZ 植物脚本分析
unity·游戏引擎
躺下睡觉~1 天前
Unity-Transform-坐标转换
linux·unity·游戏引擎
吾名招财2 天前
unity3d入门教程五
游戏引擎·unity3d
王维志2 天前
Unity实现自己的协程系统
unity·c#·游戏引擎
Yasin Chen2 天前
Unity 粒子系统参数说明
unity·游戏引擎
躺下睡觉~2 天前
Unity—Transform类-position
unity·游戏引擎
dangoxiba2 天前
[Unity demo制作]从零开始制作空洞骑士第三集之导入插件2D toolkit和使用playmaker制作敌人状态机以及扩展FSM脚本
游戏·unity·visualstudio·c#·游戏引擎
吾名招财2 天前
unity3d入门教程六
游戏引擎·unity3d
tealcwu2 天前
【Unity插件】Asset Store中关于输入的插件汇总
unity·游戏引擎
潇湘秦2 天前
从OracleCloudWorld和财报看Oracle的转变
数据库·oracle·vr