您当前的位置: 首页 >  vr

每日出拳老爷子

暂无认证

  • 9浏览

    0关注

    135博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【unity】【vr】如何让VR Body正确感应到手柄和头盔的位置

每日出拳老爷子 发布时间:2022-07-06 22:37:27 ,浏览量:9

【背景】

上一篇帖子我们成功实现了让Body整体自动补正和Head之间的位置,不至于出现长脖子的状况。 但是到此为止,还没有实现我们最终的VR身体。 要实现VR身体,需要将我们之前写的两只手和头部的Target与手柄和头盔的位置同步。 下面就介绍解决这个问题的具体方法。

【代码】

先在Hierarchy中导入Oculus的OVR插件。 在这里插入图片描述

在原来VR Rig脚本的基础上增加一个结构Map。 利用这个Map作为可以套用的一般方法。 来同步控制器头盔和游戏中两手以及头部的位置。

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

[System.Serializable]

public class VRMap
{
    public Transform vrTarget;
    public Transform rigTarget;
    public Vector3 trackingPositionOffset;
    public Vector3 trackingRotationOffset;

    public void Map()
    {
        rigTarget.position = vrTarget.TransformPoint(trackingPositionOffset);
        rigTarget.rotation = vrTarget.rotation*Quaternion.Euler(trackingRotationOffset);
    }
}

public class VRRig : MonoBehaviour
{
    public VRMap head;
    public VRMap leftHand;
    public VRMap rightHand;

    public Transform headConstraint;
    public Vector3 headBodyOffset;
    // Start is called before the first frame update
    void Start()
    {
        headBodyOffset = transform.position - headConstraint.position;
    }

    // Update is called once per frame
    void LateUpdate()
    {
        transform.position = headConstraint.position + headBodyOffset;
        transform.forward = Vector3.ProjectOnPlane(headConstraint.up, Vector3.up).normalized;

        head.Map();
        leftHand.Map();
        rightHand.Map();
    }
}

编译脚本后在Inspector中进行变量的关联配置。 在这里插入图片描述

【测试】

VR Body初具雏形,只是头和手的位置方向有点问题。 下一篇介绍如何补正角度来解决这个问题。 在这里插入图片描述

关注
打赏
1657016083
查看更多评论
立即登录/注册

微信扫码登录

0.0401s