Unity中PICO中手柄按键返回值

这篇具有很好参考价值的文章主要介绍了Unity中PICO中手柄按键返回值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在上篇文章中,我们实现了PICO中 隔空取物 和 接触抓取。

  • Unity中PICO实现 隔空取物 和 接触抓取物体

在这篇文章中,我们来实现 手柄C#脚本交互。


一、我们看一下每个按键返回值

  • 手柄&头戴输入映射

pico获取按键,PICO,unity,游戏引擎,vr,c#

  • 按键Unity XR 键值菜单键CommonUsages.menuButton:
    表示菜单键的激活状态(即是否被按下)。

  • 扳机键CommonUsages.triggerButton:
    表示扳机键的激活状态。

  • CommonUsages.trigger:
    表示扳机键被按下的程度。例如,在射箭类游戏中,可以表示弓箭的拉满程度。

  • 抓握键CommonUsages.gripButton:
    表示抓握键的激活状态。

  • CommonUsages.grip:
    表示抓握键被按下的程度。例如,在射箭类游戏中,可以表示弓箭的拉满程度。

  • 摇杆CommonUsages.primary2DAxisClick:
    表示摇杆是否被按下。

  • CommonUsages.primary2DAxis:
    表示摇杆的上下左右拨动情况。

  • X/ACommonUsages.primaryButton:
    表示 X/A 键的激活状态。

  • Y/BCommonUsages.secondaryButton:
    表示 Y/B 键的激活状态。

获取按键返回值的方法

  • XRNode.LeftHand 可以修改为 右手柄
  • XXX 可以修改为以上的按键类型
  • YYY 为按键返回值

InputDevices.GetDeviceAtXRNode(XRNode.LeftHand).
TryGetFeatureValue(XXX,out YYY);


二、我们实现一个左摇杆控制平滑移动的功能

1、创建一个左摇杆控制移动的脚本

pico获取按键,PICO,unity,游戏引擎,vr,c#

2、传入XR Origin对象,并且定义一个公开变量控制移动速度

public GameObject xrOrigin;
public float moveSpeed = 0.1f;

3、获取到摇杆是否移动,以及移动的偏移量

bool success = InputDevices.GetDeviceAtXRNode(XRNode.LeftHand).
TryGetFeatureValue(CommonUsages.primary2DAxis, out Vector2 result);

4、如果摇杆偏移了,使用摇杆偏移值控制XR Origin移动

  • 移动时,保证我们 推动摇杆的前方 一直 为我们视角的前方。
  • 所以,使用四元数欧拉角旋转

if (success)
{
Vector3 position = xrOrigin.transform.position;
//使用四元数欧拉角旋转控制移动,让移动的前方一直朝向摄像机的前方
Vector3 direction = new Vector3(result.x, 0, result.y);
float y = Camera.main.transform.rotation.eulerAngles.y;
direction = Quaternion.Euler(0, y, 0) * direction;
xrOrigin.transform.position = position + direction * moveSpeed;
}文章来源地址https://www.toymoban.com/news/detail-853643.html


三、测试代码

using UnityEngine;
using UnityEngine.XR;
using UnityEngine.XR.Interaction.Toolkit;

public class LeftController : MonoBehaviour
{
    public GameObject xrOrigin;
    
    public float moveSpeed = 0.1f;
    
    void Update()
    {
       MoveFun();
        
    }
    //手柄控制移动
    void MoveFun()
    {
        bool success = InputDevices.GetDeviceAtXRNode(XRNode.LeftHand).
            TryGetFeatureValue(CommonUsages.primary2DAxis, out Vector2 result);
        if (success)
        {
            Vector3 position = xrOrigin.transform.position;
            //使用四元数欧拉角旋转控制移动,让移动的前方一直朝向摄像机的前方
            Vector3 direction = new Vector3(result.x, 0, result.y);
            float y = Camera.main.transform.rotation.eulerAngles.y;
            direction = Quaternion.Euler(0, y, 0) * direction;
            
            xrOrigin.transform.position = position + direction * moveSpeed;
            
        }
    }
}

到了这里,关于Unity中PICO中手柄按键返回值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity PICO VR 入门(一)-Unity导入PICO SKD-PICO Unity Integration SDK

    基于官方教程PICO开发者文档 建议unity 2020.3.48或者更高,并且安装安卓适配,PICO3及以上使用 安装插件SDK Windows Package Manager//插件菜单 在 Package Manager 窗口中,点击 + Add package from disk。 选择 解压好的SDK文件夹中的package.json 文件并导入。Unity PICO SDK下载 不需要账号key也可以安装

    2024年01月19日
    浏览(50)
  • 2023—Unity打包Pico4(3)全流程(Pico插件)

    一、项目选择了2021.3.0版本的URP,把项目Build成Android 二、打开Project Setting→ 安装最下面的XR Plugin Management 安装完成后的界面,此时还没有Pico选项出现 三、我们需要在该网站下载Pico的SDK包 SDK - PICO Developer (pico-interactive.com) 解压 该文件到指定文件夹 四、打开Unity的Package Manag

    2024年02月08日
    浏览(47)
  • Unity接入PICO Unity Integration SDK

     1.我下载的SD版本是 2.2;  2.支持Pico3 ,Pico 4开发   3.Pico设备的系统版本要在5.6.0以上 4.注意支持的Unity 版本最低为2020.3.21  我用的是2021.2.5 下载完成并且解压出来  1.打开包管理器,选择从磁盘中加载选择 packakge.json  回到unity后会看见是否切换新版输入系统,然后等待unity重启

    2024年02月07日
    浏览(45)
  • 【Unity UltimateXR】Unity UltimateXR PICO使用

    UltimateXR是一个专业级的、免费的、开源的Unity框架和工具包。UltimateXR的目标是简化虚拟现实应用程序的开发;从模拟器到电子游戏,从简单的原型到完整的aaa级项目。  1.1 创建新的URP项目,并将项目发布版本设置为安卓 1.2 导入UltimateXR插件 方法一:通过链接导入 GitHub - VR

    2024年03月27日
    浏览(47)
  • 【VRTK】【Unity】【PICO】PICO项目打包后闪退的根本原因

    一开始打包运行好好的PICO项目,中途用Preview模式开发了一阵后,再次打包就闪退了。 项目设置没有动过,那么可能是Preview开发过程中引入的包导致的问题。 千万不要在PICO项目中导入Oculus包。我原本想用一些Oculus包内的Assets资源,所以导入了Oculus,现在叫Meta的开发SDK包,经

    2024年01月22日
    浏览(136)
  • 【PICO】【Unity】【VR】如何对打包后的PICO项目有效Debug

    PICO项目打包后再运行就看不到Console了。当然,会有各类专业的Debug工具。 有一类Debug的工具是Preview形式下展示Debug信息,但是发现Preview成功不见得打包也成功。 打包后也会有一些Debug工具,不过这里我给出自己的简单解决办法。 Unity Console的Debug是展示信息,所以我们也在游

    2024年01月21日
    浏览(48)
  • Unity+Pico 响应射线事件

    1、添加组件 为了让场景内的物体能够响应射线的操作,需要在该物体上添加“XR Simple Interactable”组件,并对射线的交互事件编写脚本看,最常用的是“Hover”和“Select”事件。 2、编写脚本 在编写脚本时,需要引入UnityEngine.XR.Interaction.Toolkit命名空间,另外,从步骤1中的截图

    2024年02月12日
    浏览(46)
  • Unity+pico4开发过程及问题记录,创建一个自己的pico安卓应用

    参考PICO developer 官方文档,本人unity版本为 2022.116f1c1 , PICO Unity Integration SDK- 214 . sdk最新版官网下载:PICO Unity Integration SDK 博主使用的版本在这里提供一个链接: 以下过程均基于以上版本,按照如下流程操作比较合适。 ①Unity编辑器需要支持安卓平台,在 添加模块 窗口处,勾

    2024年02月03日
    浏览(48)
  • 【Unity】【VRTK】【Pico】如何快速在VRTK中引入带动画的PICO控制器

    之前的VRTK篇章中,我只介绍了Oculus,Open VR,SImulator这三种Rig的配置方法,那么Pico如何融合VRTK进行开发呢? 先像一个正常PICO项目那样导入PICO的SDK到Unity。 VRTK 4的Package导入器中搜Pico,可以导入一个Pico的Integration,导入后Project面板的Packages文件夹下会出现Tilia SDK PicoIntegratio

    2024年01月16日
    浏览(60)
  • 【unity】Pico VR 开发笔记(视角移动)

    视角移动是简单的基础功能,这里区别于头显定位获得的小范围位移,是长距离不影响安全边界的位移方式。的 常见的位移方式有两种 ,其一是触发后 瞬间传送 到指定位置,其次是 摇杆控制视角实时移动 。XR Interaction Toolkit提供了两种位移方式的脚本,正确配置就可以实现

    2024年02月14日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包