当前位置: 首页 > wzjs >正文

做网站需要备案几次今天最新军事新闻视频

做网站需要备案几次,今天最新军事新闻视频,专业提供建站模板的公司,慈利做网站在哪里摘要: 本文主要介绍如何使用 Input Actions(Unity 新输入系统) OpenXR 来实现 VR手柄控制(监听ABXY按钮、摇杆、抓握等操作)。 🎮 Unity 中使用 InputActions 实现手柄控制详解(基于 OpenXR 新…

摘要:
本文主要介绍如何使用 Input Actions(Unity 新输入系统)+ OpenXR 来实现 VR手柄控制(监听ABXY按钮、摇杆、抓握等操作)

图片为AI生成


🎮 Unity 中使用 InputActions 实现手柄控制详解(基于 OpenXR + 新输入系统)


✅ 一、环境准备

必要组件

  • Unity 2021.3 或以上(推荐使用 LTS 版本)
  • 已启用 XR 插件管理器,并为目标平台启用 OpenXR
  • 安装以下 Package:
    • Input System
    • OpenXR Plugin

启用 OpenXR

Edit > Project Settings > XR Plug-in Management > OpenXR

然后启用 OpenXR 的 Interaction Profiles:

  • OpenXR Feature Group > Interaction Profiles
    • Oculus Touch Controller
    • Valve Index Controller
    • Microsoft Mixed Reality Controller

🧱 二、创建 Input Actions 文件

1. 创建 Action 文件

Assets 文件夹中右键点击:

Create > Input Actions

重命名为:XRControls.inputactions

双击打开,会出现如下结构编辑界面:


2. 添加 Action Map 和 Actions

示例:创建两个 Action Maps
  • XRI LeftHand
  • XRI RightHand
XRI RightHand 中添加这些动作:
Action NameAction TypeControl TypeBinding Path
selectButtonButton<XRController>{RightHand}/trigger
activateButtonButton<XRController>{RightHand}/grip
positionValueVector3<XRController>{RightHand}/devicePosition
rotationValueQuaternion<XRController>{RightHand}/deviceRotation
joystickValueVector2<XRController>{RightHand}/thumbstick
primaryButtonButtonButton<XRController>{RightHand}/primaryButton
secondaryButtonButtonButton<XRController>{RightHand}/secondaryButton

💡 注意:ABXY 按钮在默认的 XRI Default Input Actions 文件中 没有绑定,需要你手动添加绑定。

对于左手 X/Y 按钮,可添加:
  • <XRController>{LeftHand}/primaryButton → X 按钮
  • <XRController>{LeftHand}/secondaryButton → Y 按钮

配置完成后,点击 Save。


🔌 三、绑定 Action 到脚本中监听手柄输入

1. 创建脚本:XRControllerInputListener.cs

using UnityEngine;
using UnityEngine.InputSystem;public class XRControllerInputListener : MonoBehaviour
{[Header("输入绑定")]public InputActionProperty selectAction;public InputActionProperty activateAction;public InputActionProperty joystickAction;public InputActionProperty positionAction;public InputActionProperty rotationAction;[Header("主按钮(ABXY)")]public InputActionProperty rightPrimaryButton;   // A 按钮public InputActionProperty rightSecondaryButton; // B 按钮public InputActionProperty leftPrimaryButton;    // X 按钮public InputActionProperty leftSecondaryButton;  // Y 按钮void OnEnable(){selectAction.action.Enable();activateAction.action.Enable();joystickAction.action.Enable();positionAction.action.Enable();rotationAction.action.Enable();rightPrimaryButton.action.Enable();rightSecondaryButton.action.Enable();leftPrimaryButton.action.Enable();leftSecondaryButton.action.Enable();selectAction.action.performed += OnSelectPressed;activateAction.action.performed += OnGripPressed;rightPrimaryButton.action.performed += ctx => Debug.Log("A 按钮按下");rightPrimaryButton.action.canceled  += ctx => Debug.Log("A 按钮抬起");rightSecondaryButton.action.performed += ctx => Debug.Log("B 按钮按下");leftPrimaryButton.action.performed     += ctx => Debug.Log("X 按钮按下");leftSecondaryButton.action.performed   += ctx => Debug.Log("Y 按钮按下");}void OnDisable(){selectAction.action.performed -= OnSelectPressed;activateAction.action.performed -= OnGripPressed;}void OnSelectPressed(InputAction.CallbackContext ctx){Debug.Log("Trigger pressed");}void OnGripPressed(InputAction.CallbackContext ctx){Debug.Log("Grip pressed");}void Update(){// 摇杆值Vector2 joystick = joystickAction.action.ReadValue<Vector2>();if (joystick.magnitude > 0.1f){Debug.Log($"Joystick: {joystick}");}// 控制器位置Vector3 pos = positionAction.action.ReadValue<Vector3>();Quaternion rot = rotationAction.action.ReadValue<Quaternion>();transform.SetPositionAndRotation(pos, rot);}
}

2. 绑定 InputActionProperty 到 Inspector

选中绑定此脚本的 GameObject,在 Inspector 中:

  • 展开每个字段(例如 rightPrimaryButton
  • 选择 InputActionAsset 中的:
    • XRI RightHand/primaryButton
    • XRI RightHand/secondaryButton
    • XRI LeftHand/primaryButton
    • XRI LeftHand/secondaryButton

📌 常用输入绑定路径(OpenXR)

控制器部位Binding Path
扳机 Trigger<XRController>{RightHand}/trigger
抓握 Grip<XRController>{RightHand}/grip
主按钮 A/B/X/Y<XRController>{RightHand}/primaryButton
摇杆方向<XRController>{RightHand}/thumbstick
摇杆点击<XRController>{RightHand}/thumbstickClick
控制器位置<XRController>{RightHand}/devicePosition
控制器旋转<XRController>{RightHand}/deviceRotation

✅ 如果仍想使用默认 XRIActions 文件怎么办?

可以这样做:

  1. 复制一份 XRI Default Input Actions.inputactions
  2. 重命名为你自己的(比如 XRControls.inputactions
  3. 添加上述的 ABXY Action
  4. Project Settings > XR Interaction Toolkit 中替换为你的版本

✅ 总结

通过 Unity 的 Input System + OpenXR,可以优雅地实现对手柄各种输入(按钮、摇杆、位置等)的监听和处理。其优势是:

  • 自动适配各种头显(Oculus、Index、Pico)
  • 支持多平台一致性
  • 易于拓展和可视化调试

同时补充支持 ABXY 按钮,只需扩展绑定路径与监听逻辑即可,无需重新实现控制器系统。

http://www.dtcms.com/wzjs/264060.html

相关文章:

  • 德国站有哪些做站外秒杀的网站谷歌seo推广
  • wordpress 定制燃灯seo
  • php网站开发防注入东莞营销推广公司
  • 企业铭做网站外包公司和劳务派遣
  • 常州网站制作工具91关键词
  • 网站设计基本原则百度怎么做网站
  • 有什么软件可以做网站青岛百度快速排名优化
  • 丽水专业网站建设公司新郑网络推广外包
  • 竞价网站单页百度下载安装 官方
  • 烦恼可以做网站吗营销型网站案例
  • 五金 东莞网站建设如何做企业网页
  • 网页设计图片怎么变小深圳sem优化
  • 怎样做博客网站简述什么是seo及seo的作用
  • 模板做网站影响seo域名关键词排名查询
  • mcms怎么做网站seo公司 彼亿营销
  • 单片机编程入门基础知识seo渠道
  • 网站备案号几位数字 沪杭州百度推广优化排名
  • 昆明网站建设锐网营销型高端网站建设
  • 正能量网站入口免费安全seo黑帽教程视频
  • word里网站的超链接怎么做百度公司招聘条件
  • 长安外贸网站建设公司地方网站建设
  • 厦门门户网站建设百度公司总部地址
  • 网站内容管理系统cms怎么让百度收录网址
  • o2o网站制作公司seo在线工具
  • 浏览器怎样屏蔽网站站长之家权重查询
  • asp网站下载哪里做网络推广好
  • 自己做的网站可以查看谁访问吗百度竞价排名是什么意思
  • 网站建设和维护重庆高端品牌网站建设
  • 济南市住房和城乡建设局官方网站杭州网站优化流程
  • 网站建设费与网络维护费区别公司做网络推广怎么做