【Unity3D自学记录】开发PicoVR之获取手柄的方法

这篇具有很好参考价值的文章主要介绍了【Unity3D自学记录】开发PicoVR之获取手柄的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

获取手柄有两种方法,一种是XR的方法,一种是PicoSDK中的方法。
第一种,XR方法

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;

public class PicoVRCS : MonoBehaviour
{
    List<InputDevice> foundControllers = new List<InputDevice>();
    // Start is called before the first frame update
    void Start()
    {
        InputDeviceCharacteristics leftTrackedControllerFilter = InputDeviceCharacteristics.Controller | InputDeviceCharacteristics.TrackedDevice | InputDeviceCharacteristics.Left;   
        InputDevices.GetDevicesWithCharacteristics(leftTrackedControllerFilter, foundControllers);
    }

    void Update()
    {
        foundControllers[0].TryGetFeatureValue(CommonUsages.primaryButton, out bool isPress);
        if (isPress)
        {
            
        }
    }
}

第二种是PicoSDK中的方法文章来源地址https://www.toymoban.com/news/detail-581621.html

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;
using UnityEngine.XR;

public class PicoVRControl : MonoBehaviour
{
    private static PicoVRControl ins;
    
    public static PicoVRControl Instance { get { return ins; } }


    public XRController LeftControl;
    public XRController RightControl;

    private bool isWait = false;
    // Start is called before the first frame update
    void Awake()
    {
        if (!ins) ins= this;

    }

    void Update()
    {
        Vector2 result;
        bool success = LeftControl.inputDevice.TryGetFeatureValue(CommonUsages.primary2DAxis, out result);
        bool success1 = RightControl.inputDevice.TryGetFeatureValue(CommonUsages.primary2DAxis, out result);
        if (success || success1)
        {
            Vector3 pos = CenterObj.position;
            float value = 2.5f;
            CenterObj.position = new Vector3(pos.x, pos.y + value * result.y, pos.z);
        }

        LeftControl.inputDevice.TryGetFeatureValue(CommonUsages.primaryButton, out bool isPressed);
        RightControl.inputDevice.TryGetFeatureValue(CommonUsages.primaryButton, out bool isPressed1);
        if ((isPressed || isPressed1) && !isWait)
        {

        }
    }
}

到了这里,关于【Unity3D自学记录】开发PicoVR之获取手柄的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Unity3D日常开发】Unity3D中协程的使用

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 最近有小伙伴问协程怎么用、怎么写,我也是会用会写,但是原理不是很明白。 学习了一下,总结出

    2024年02月12日
    浏览(59)
  • Unity3D学习记录02——PloyBrush场景搭建

    首先在Window-Package Manager里面搜索Poly Brush,下载后将URP的Shader样例导入  导入后Asset文件夹下会有Sample的文件夹,在菜单栏 Tools-PolyBrush-PolyBrush Window 打开窗口 这个窗口最上面的五个,第一个是用来调整地形高低的,第二个是进行柔化场景的,第三个是调整颜色的, 第四个可以

    2024年02月08日
    浏览(59)
  • Unity3d 开发Pico4应用打开工程卡在Importing(iteration xxx) busy for xx:xx)...问题记录

    大致问题如题: 步骤是参照了PICO官方给出的快速开始的步骤进行的,而这个我问题的出现是在导入 PICO Unity Integration SDK 前往 SDK 下载中心,下载最新版本的 SDK。 1.解压所下载的 SDK 压缩包。 2.你将会得到一个包含 package.json 文件的文件夹。 3.返回 Unity 编辑器页面。 4.在上方

    2024年02月15日
    浏览(63)
  • 【Unity3D日常开发】Unity3D中实现单例模式详解

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 首先,说一下,什么是 单例模式(Singleton) 。 单例模式是设计模式中常见的一种设计模式,目的是为了

    2024年02月02日
    浏览(65)
  • Unity3D 获取子孙物体并修改材质球属性

    如图要获取划线物体并修改其材质球: private Transform[] FindChild; public Material ChangeMat;//变换后的材质球 private Material mat; void Start() {         FindChild = this.gameObject.GetComponentsInChildrenTransform(true);//true表示包括隐藏物体的查找         foreach (Transform child in FindChild)         {  

    2024年02月15日
    浏览(67)
  • 【Unity3D编辑器开发】Unity3D中实现查看键盘对应KeyCode值面板【方便开发】

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 在开发中,会遇到要使用监控键盘输入的KeyCode值来执行代码的情况。 比如说: 但是,如果是一些不常

    2024年02月08日
    浏览(79)
  • 【Unity3D日常开发】Unity3D中实现不同脚本之间的执行顺序控制

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 首先,来了解一下事件函数的执行顺序,下图是官方给的脚本中事件函数的执行顺序: 众所周知,U

    2024年02月02日
    浏览(58)
  • Unity3D学习记录03——Navigation智能导航地图烘焙

    首先还是在Package Manager中安装AI Navigation 接着选择我们场景的地面,右键,找到AI的NavMesh Surface,它会为我们的Ground添加一个叫NavMesh Surface的子物体 在Inspector窗口中可以看到它的详细的参数: 图中的R,H为你人物的参数,45°为你的人物可以爬行的最大角度 Agent Type里面可以改

    2024年02月08日
    浏览(55)
  • 【Unity3D编辑器开发】Unity3D中实现Transform快速复制粘贴【非常实用】

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 在开发中,常常会遇到频繁复制粘贴物体的坐标、旋转、缩放的操作。 使用Unity自带的组件复制粘贴比

    2024年02月07日
    浏览(69)
  • Unity3D学习记录01:URP渲染管线以及3D游戏场景设置

    以下内容所使用的版本均为Unity2022.3 先在 Window-Package Manager-Unity Registry 里面搜索添加Universal RP   Unity中,创建渲染管线的方式为Asset文件夹下右键 Create-Readering-URP Asset(with Universal Asset) 会创建以下两个Pipeline:  接着在图中的设置里添加这两个渲染管线(Project Setting在Edit窗口下

    2024年02月08日
    浏览(63)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包