unity3d VR___________通过移动和旋转父物体,来使子物体始终在指定的位置上并且保持指定的角度

开发过VR的朋友想必都遇到过(尤其是Htc-Vive),明明自己在VR游戏内将玩家控制器放到了一个默认的特定视角,但真正运行游戏的时候,位置总是跑偏。尤其是环境周围有其他物体或墙壁的话,甚至有可能把玩家视角一运行就卡在里面。造成这个现象的原因和简单,是因为玩家带着头盔会在现实空间中乱跑乱转向,导致出现的位置偏差。

开发VR软件时,SDK会自带有一个预制体,这个预制体有一个根节点父物体,下面有相机子物体。相机子物体是被硬件传感器控制的,用代码是不可能修改其位置和旋转的。所以一般设置默认视角,都是把父物体拖到特定位置的。而这个父物体是和VR定位空间的中心点对应的;子物体相机相对于父物体的偏移,对应的是你现实空间中VR头盔和定位空间中心点的偏移。只有保证头盔始终在定位空间中心点并且正前方朝向一致时,才能在每一次启动游戏时达到你在游戏中给设置的默认视角。

但现在问题来了,你在现实中启动游戏时,不可能让玩家郑重其事的找到中心点来启动。所以我们必须解决这个问题。思路就是,通过对根节点父物体的旋转、位移,来让VR相机那个子物体可以无视现实空间偏移量,总是保持默认视角。

表达能力不行,下面直接上代码吧。我想真的有人碰到过这个问题的话,应该能领会到我想表达的意思。

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


public class CalculateMatrix : MonoBehaviour 
{
    /// <summary>
    /// 目标位置的Transform组件
    /// </summary>
    public Transform dest;
    /// <summary>
    /// 当前
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值