vrtk 使用教程(一)

.steamvr作为一个非常好用的vr插件,美中不足的需要自己实现各种交互,还是比较麻烦。这里推荐大家一个插件vrtk,对steamvr的封装,严格说不只是steamvr,是对vr插件的封装,不多说,使用教程如下,还是很简单的

 

一,下载,

 assetstore搜索vrtk下载最新版本,但是最新版本和最新的steamvr好像兼容有些问题,这里采用的是老版本,steamvr也是老版本。想要的可以去这里下载https://download.csdn.net/download/nt_xs_j/10981584

二,使用

  新建空物体,取名VRTK,添加组件VRTK_SDKManager,新建空物体作为它的子物体,取名Setup,挂载VRTK_SDK Setup组件,quickselect 选择steamvr ,将steamVR的相机预设[[CameraRig]设置成它的子物体,最终如下图所示:

 

 

关联steamvr组件成功后,点击VRTK_SDKManage的Auto Populate,将setup关联,最终如下

 

在vrtk下新建两个空物体,作为左右手柄的控制器,不要在steam的左右手柄控制器上使用。在空物体上添加如下组件,vrtk_Straight Pointer Render 托给vrtk_pointer的pointer render属性

 

1,实现瞬移功能

在vrtk上挂载 vrtk_Height Adjust Teleport组件,将对应手柄的监测层级更改即可实现瞬移。将地面层级设置为road,监测的层级去除road即可。

2,交互ui

将要与ui交互的手柄添加vrtk_UIPointer组件,将2D画布改为woldSpace,调整大小,添加vrtk_UICanvas组件。如下图

activetionmode改为AlwaysOn,此时射线会想鼠标触发一样触发按钮高亮。

如果要隐藏画布操作,在打开时会无法响应事件,所以有此操作的要将eventsystem放到外部,不要放到canvas下

 

3,设置完手柄控制器,要讲这两个物体赋值给VRTK_SDKManage组件,如下图

4,手柄各种事件的绑定,这里实现的了一部分事件,是对事件的统一管理类,可以根据情况使用。

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using VRTK;

//委托
public delegate void OnClicked();//按键
public delegate void OnPressed();//按下

/// <summary>
/// 手柄的事件
/// </summary>
public class HandlerEvent : MonoBehaviour
{
    [SerializeField ]
    private  VRTK_ControllerEvents leftHander, rightHander;//左右手柄

    public static bool leftEnable, rightEnable;//手柄是否可以使用

    public static OnClicked Left_Trigger;//左手扳机键
    public static OnClicked Right_Trigger;//右手扳机键
    public static OnPressed Left_Touchpad_Pressed;//左手圆盘按下
    public static OnPressed Right_Touchpad_Pressed;//右手圆盘按下

    // Use this for initialization
    void Start ()
    {
        leftEnable = rightEnable = true;
        //左手事件注册
        leftHander.TriggerClicked += LeftHander_TriggerClicked;
        leftHander.TouchpadPressed += LeftHander_TouchpadPressed;

        //右手事件注册
        rightHander.TriggerClicked += RightHander_TriggerClicked;
        rightHander.TouchpadPressed += RightHander_TouchpadPressed;
    }
    //右手扳机按下
    private void RightHander_TriggerClicked(object sender, ControllerInteractionEventArgs e)
    {
        if (!rightEnable) return;
        if (Right_Trigger !=null)
        {
            Right_Trigger.Invoke();
        }
    }
    //右手圆盘按下
    private void RightHander_TouchpadPressed(object sender, ControllerInteractionEventArgs e)
    {
        if (!rightEnable) return;
        if (Right_Touchpad_Pressed != null)
        {
            Right_Touchpad_Pressed.Invoke();
        }
    }

    //左手柄按下
    private void LeftHander_TriggerClicked(object sender, ControllerInteractionEventArgs e)
    {
        if (!leftEnable ) return;
        Debug.Log("左手柄按下");
        if(Left_Trigger !=null)
        {
            Left_Trigger.Invoke();
        }
    }
    //左手圆盘按下
    private void LeftHander_TouchpadPressed(object sender, ControllerInteractionEventArgs e)
    {
        if (!leftEnable) return;
        Debug.Log("圆盘按下");
        if (Left_Touchpad_Pressed !=null)
        {
            Left_Touchpad_Pressed.Invoke();
        }
    }
}

 

  • 11
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Unity 引擎中使用 Pico VR 开发时,可以通过监听 Pico 手柄的输入按钮事件来触发天空盒的切换。下面是一个简单的示例代码: 1. 首先,确保你已经导入了 Pico SDK,并按照官方文档的指示进行了设置。 2. 创建一个脚本并将其添加到一个适当的游戏对象上。 3. 在脚本中,你可以使用 `Update()` 方法来监听手柄的输入按钮事件。可以通过 `Pvr_ControllerManager` 类来获取手柄输入事件。 ```csharp using Pvr_UnitySDKAPI; using UnityEngine; public class SkyboxController : MonoBehaviour { public Material skyboxMaterial1; public Material skyboxMaterial2; void Update() { if (Pvr_ControllerManager.Instance.Length > 0) { // 获取手柄输入事件 if (Pvr_ControllerManager.Instance.GetControllerButtonUp(0, Pvr_Button.APP)) { // 切换天空盒贴图的逻辑 SwitchSkybox(); } } } void SwitchSkybox() { // 根据当前贴图切换到另一个贴图 if (RenderSettings.skybox == skyboxMaterial1) { RenderSettings.skybox = skyboxMaterial2; } else { RenderSettings.skybox = skyboxMaterial1; } } } ``` 4. 将天空盒材质赋值给 `skyboxMaterial1` 和 `skyboxMaterial2`。这两个材质将在切换时进行交替使用。 5. 将脚本组件添加到天空盒对象上或者任何你希望进行天空盒切换的对象上。 通过以上步骤,你可以在 Pico VR 中监听手柄的特定按钮事件,并在用户按下按钮时触发天空盒的切换。根据你的具体需求,你可以扩展脚本的功能,例如切换更多的天空盒材质、实现过渡效果等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值