虚幻引擎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 小时前
Horse3D 游戏引擎研发笔记(七):Clydesdale——从流式日志到多输出订阅
c++·qt·unity·游戏引擎·图形渲染·unreal engine·opengl
江上闲人.21 小时前
Wardogs战犬\战狗Beta测试启动报错UE崩溃卡顿?解决方法来了
游戏·游戏引擎·虚幻·战犬·战狗·wardogs
Mixr_immersive1 天前
VR大空间CS线下场馆组团式游乐项目选型指南
vr·娱乐
杨丰玮4181 天前
从零手写Java飞机躲障碍游戏|Swing绘图、鼠标跟随、计时器碰撞检测实战(五)
java·python·游戏·游戏引擎·图形渲染·动画·贴图
鼎艺创新科技2 天前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
huihui3612 天前
校友网管理软件技术选型框架:基于功能核验与系统架构的量化评估
unity·系统架构·游戏引擎
五仁烧饼2 天前
Unity性能优化系列设置篇 - URP 移动端设置基线与分档策略
unity·游戏引擎
新手unity自用笔记2 天前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
心前阳光2 天前
Unity之XR Interaction Toolkit | IPointerDownHandler问题
unity·游戏引擎·xr
帅_shuai_3 天前
unity 静态字段内存查找工具
unity·游戏引擎