虚幻引擎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
    
相关推荐
虾球xz2 小时前
游戏引擎学习第58天
学习·游戏引擎
ue星空3 小时前
虚幻引擎结构之UWorld
游戏引擎·虚幻
ue星空3 小时前
虚幻引擎结构之ULevel
游戏引擎·虚幻
向宇it4 小时前
【从零开始入门unity游戏开发之——unity篇01】unity6基础入门开篇——游戏引擎是什么、主流的游戏引擎、为什么选择Unity
开发语言·unity·c#·游戏引擎
神洛华6 小时前
Y3地图制作1:水果缤纷乐、密室逃脱
编辑器·游戏引擎·游戏程序
向宇it9 小时前
【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
java·开发语言·unity·c#·游戏引擎·里氏替换原则
神码编程15 小时前
【Unity功能集】TextureShop纹理工坊(五)选区
unity·游戏引擎·shader·ps选区
benben04421 小时前
Unity3D仿星露谷物语开发7之事件创建动画
unity·游戏引擎
虾球xz1 天前
游戏引擎学习第57天
学习·游戏引擎
异次元的归来2 天前
Unity DOTS中的share component
unity·游戏引擎