美文网首页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 利用手柄姿态进行穿越飞行

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