美文网首页AR/VR/MRunity
VRTK4.0 利用手柄姿态进行穿越飞行

VRTK4.0 利用手柄姿态进行穿越飞行

作者: 雨落随风 | 来源:发表于2022-05-09 02:11 被阅读0次

在本文,笔者将教大家如何在 VRTK 4.0 中实现利用手柄姿态进行穿越飞行的功能。
穿越飞行:VR 视野沿着手柄指向的方向运动,有在VR 世界中体验穿越机的感觉。

前言:

可以预见,凡是看过的人必然会大呼:“标题党,这他喵跟 VRTK 4.0 有毛关系,这不有手就会啊!”
诚然,看过都说会,没看过的都在百度。
往往越奶妈级的插件,越是容易造成思维定势:总在插件给定的范围中找方案,难以思想出圈。闲话少述,下面直接开干。

解决方案:

跳出 VRTK 提供的各种 Axes 驱动器,自己写自己的,再回过头来一瞅,就问你简不简单就是了!

代码

using UnityEngine;
using Zinnia.Action;

public class ControllerDirectionMover : MonoBehaviour
{
    [SerializeField] Transform target,controllerAlias; //驱动的目标、手柄
    [SerializeField] BooleanAction triggerAction;
    [SerializeField] float minSpeed=5,maxSpeed=20,duration=5f; //最小速度、最大速度、加速时长
    float accelerate_time,current_speed,scale; //已加速时长,当前速度、当前配置下的增量速率
    bool canmove = false;

    void Start()
    {
        triggerAction.Activated.AddListener(OnTriggerActived);
        triggerAction.Deactivated.AddListener(v => canmove = false);
    }
    private void OnTriggerActived(bool arg0)
    {
        canmove = true;
        accelerate_time = 0;
        current_speed = minSpeed;
        scale = (maxSpeed - minSpeed) / duration;
    }

    void Update()
    {
        if (canmove)
        {
            if (accelerate_time<duration)
            {
                accelerate_time += Time.deltaTime;
                current_speed = minSpeed + scale * accelerate_time;
            }
            target.Translate(controllerAlias.forward*current_speed*Time.deltaTime, Space.Self);
        }
    }
}

实现功能:

  1. 按下手柄 Trigger 进入穿越模式
  2. 可配置速度、加速

配置:

  1. 大前提, VRTK4.0 的环境得自主搭建OK.
  2. 场景中应该存在 CameraRigs.TrackedAliasCameraRigs.UnityXRInput.UnityInputManager.OpenVR.LeftController(本例使用左手柄)
  3. 任意空游戏对象挂载上述脚本。
  4. 按图示指定驱动的对象以及用以控制方向的手柄:


    ControllerDirectionMover

动画演示:

fly.gif

写到最后:

实现较为简易,未加入防止模型穿透的功能,有需要请自行添加:可以加上一个 Trackers.PseudoBody 看有没有合适的事件能够翻转 move 状态哈。

版权所有,转载请注明出处

相关文章

  • VRTK4.0 利用手柄姿态进行穿越飞行

    在本文,笔者将教大家如何在 VRTK 4.0 中实现利用手柄姿态进行穿越飞行的功能。穿越飞行:VR 视野沿着手柄指...

  • 看图作诗/珍藏的记忆

    穿越无数时空 途径内蒙坝上 潜心向前奔跑 是去往陌生的远方 或抵达不久的将来 这一段幻想中的旅程 以飞行的姿态进行...

  • 关于朱雀飞控系统升级

    minivet朱雀今日更新飞控固件升级软件,官网可下载 亲爱的用户,本次更新对飞行体验以及飞行姿态进行优化,合入最...

  • VR X-Racer - 精彩 刺激到爆的急速飞行

    游戏很简单,操作飞行器在一堆“不明建筑物”中间急速飞行。无需任何外接手柄,通过“头控”来完成左右移动,躲避障碍物。...

  • 【摄影】飞翔(3)

    拍摄飞行中的鸟,除了主体鸟儿有一个清晰的影像外,那就是鸟儿的飞行姿态和背景了。姿态不像人像拍摄可以摆拍,它自由的飞...

  • 手柄握住阀门旋转

    HTC vive设备结合unity开发手柄转动阀门功能 现在需求是:使用手柄握住一个阀门,进行旋转。 如下图: 所...

  • unity nintendo switch(NS)手柄按键映射

    近来发现 unity3d 也可以使用 switch 的手柄来进行游戏操作。 电脑用的 mac,按住手柄滑道中间小圆...

  • 蒲公英

    草原的上空 飘着氢气球 飞行的姿态 很像童年吹起的蒲公英

  • HTC手柄介绍及按键获取

    HTC Vive可以在游戏或者视频的时候帮助用户进行辅助操作,不过手柄的使用比较繁琐,比如指示灯的含义,还有手柄灵...

  • 利用二维图像进行头部姿态估计

    3D头部姿态估计(ubuntu操作系统,基于opencv3.2+Dlib19.4+python2.7)打开摄像头,...

网友评论

    本文标题:VRTK4.0 利用手柄姿态进行穿越飞行

    本文链接:https://www.haomeiwen.com/subject/mmbcurtx.html