HTC物体怎么随着手柄移动塑壳断路器旋转手柄

没有更多推荐了,
不良信息举报
举报内容:
[HTC Vive + Unity开发]——VRTK的研究——用手柄旋转物体(使用VRTK_Knob脚本)
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Unity中 如何把HTC手柄替换成游戏物体?_百度知道
Unity中 如何把HTC手柄替换成游戏物体?
我有更好的答案
把游戏对象拖到手柄上,然后隐藏手柄
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。如何解决htc vive游戏中的角色移动问题? - 知乎14被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答12 条评论分享收藏感谢收起02 条评论分享收藏感谢收起写回答htc vive手柄不跟随是怎么回事_百度知道
htc vive手柄不跟随是怎么回事
我有更好的答案
  HTC Vive手柄识别问题解决方法:  1、首先要注意,手柄是需要充电的,如果启动手柄后指示灯是红色的,就表示你需要给手柄充电了;  2、手柄也是有固件版本的,不妨用数据线将手柄和电脑连接,点击固件更新,将手柄的固件更新到最新版本即可;  3、但是注意,因为手柄有两个,有时候只是其中一个手柄需要进行固件更新,但是系统无法告诉你具体是哪一个,这个时候我们就只能使用数据线,依次将两个手柄连接电脑来尝试了。
采纳率:88%
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请选择检举理由
不当或违法内容
恶意或违法行为
商业广告与废文
還可輸入 200 個字元
评分这篇文章
浏览 : 6349
[教程资源]
如何在HTC Vive中实现瞬移 -- 一个示例
利用HTC Vive的定位系统,玩家可以自由的在虚拟场景中行走。可如果你的场景比一个房间大,就该考虑引进瞬移机制了。当玩家走到房间的边缘,已经不能再往前走时,用瞬移可以大幅度改变玩家所在位置——甚至朝向,让游戏得以继续。
========================================================
什么是瞬移 ========================================================
瞬移(teleport)是对玩家在短时间内做远距离移动的行为。
最简单的瞬移机制就是记录手柄指向的位置,然后当trigger键按下时,将玩家移动到这个位置。本文将介绍一个不同的方案,不但能实现位置的变化,还能改变朝向。
========================================================
举个例子 ========================================================
像图一展示的一样: 游戏中手柄会射出一道激光,激光指向的地方有一个标记物体。有一个半透明的幻影一直在向标记物体跑去,标记位置变了,他就会转身朝新的位置跑去。任何时候,按下手柄的trigger键会使玩家的位置和朝向=幻影的位置和朝向。 换句话说,如果你想去某个位置,就引导幻影跑过去,然后按下trigger即可。同理,如果你想要切换成某个视角,引导幻影的跑动和朝向,调好方向后按下trigger。
做成这种方式的理由是: 1.& & & & 减少瞬移的频率,玩家需要先引导幻影移动到想要的位置 2.& & & & 可以控制朝向 3.& & & & 通过引导幻影,玩家可以瞬移到一些激光指不到的死角
例程的代码放在: https://github.com/JamesBear/vive_teleport_test
========================================================
技术难点 ========================================================
想要移动玩家的位置,就需要改变游戏中camera物体的位置。而这个位置是受定位系统控制的。每帧SteamVR_TrackedObject(一个贴在camera和controller上的组件)都会获取新的玩家所戴的HMD在房间中的位置和朝向,然后将camera与之同步。所以仅仅设置camera.transform.position是不可以的——下一帧它就会被设置回去。
那如何做到移动玩家位置,并且不打断定位系统对camera的同步?答案是CameraRig。(图二)
图中的camera (head)就是位置会和HMD同步的camera,它的代表了玩家在游戏中的位置。注意,他的父物体是CameraRig,通常情况下它的位置和朝向都是归零的,这种情况下camera (head)的位置=HMD的位置;而如果改变它的位置,玩家的位置就会在camera (head)的本地位置(local position)没有变,可绝对位置会受影响。比如把cameraRig的y设置为2,玩家就会感觉在空中两米的位置飘浮着。所以想要瞬移,只要改变CameraRig的位置和朝向即可。
========================================================
如何实现 ========================================================
一般的瞬移程序: 玩家定位的位置是camera.localPosition,现在想要移动到targetPositon,在不考虑转向的情况下只要这么做:
& &&&CameraRig.position = targetPosition - camera.localP
原因是 camera的本地位置+父物体(CameraRig)的位置 = camera的绝对位置。所以要让camera的绝对位置=targetPosition,就需要能满足等式camera.localPosition + CameraRig.position = targetPosition。这个等式通过移项可以获得上面那行代码。
考虑旋转的瞬移: 有些程序像本文提到的例程一样,需要考虑旋转。也就是说camera在游戏中的朝向未必和HMD定位的朝向保持一致。那需要对上面代码做如下改变: 1.& & & & 对父物体CameraRig的旋转也做出类似改变 2.& & & & 设置旋转后再设置位置 3.& & & & 改变相对位置到绝对位置的转换式
最终的代码是: &&cameraRig.rotation = targetRotation * Quaternion .Inverse(camera.localRotation);
&&var relativePos = cameraRig.TransformPoint(camera.localPosition) - cameraRig. &&cameraRig.position = targetPos - relativeP
总结 最简单的实现瞬移的方式是,改变camera父物体的位置和朝向。另外为了减少眩晕感,可以加上镜头的淡入淡出。

我要回帖

更多关于 旋转轮胎用什么手柄 的文章

 

随机推荐