在带有MRTK的封闭式VR中玩游戏时如何调整角色高度?

时间:2019-11-29 14:07:24

标签: unity3d virtual-reality mrtk

我正在使用mrtk 2.1创建一个VR应用程序,并希望用户在坐着或站立时都处于相同的高度。 当坐在座位上时,相机太低。

我可以调整包含MainCamera的MixedRealityPlayspace的高度,但是在使用传送功能后会重置。 此外,从Github Post中了解到,无法通过mrtk访问MainCamera和MixedRealityPlayspace夹心之间的偏移,因此很难计算正确的高度。 这似乎不是正确的方法。

即使在坐着游戏时,我如何确保用户在游戏中始终保持正确的头部高度?

2 个答案:

答案 0 :(得分:0)

我已经继续提出以下功能请求: https://github.com/microsoft/MixedRealityToolkit-Unity/issues/6786

以下未测试的解决方法:

  1. 创建在运行时实例化新GameObject的逻辑。
  2. 将新GameObject的父级设置为MixedRealityPlayspace。
  3. 将新的GameObject设置为主相机的父代
  4. 将所需的偏移量用作对此新GameObject的转换。

与不同的MRTK贡献者进行了交谈,觉得您可能需要在运行时进行此转换配置。尝试在编辑器/场景层次结构中执行此操作可能会遇到问题,因为人们不确定主摄像头的父级是否设置为MixedRealityPlayspace,而不管主摄像头是否是MixedRealityPlayspace的孙代。

答案 1 :(得分:0)

好的,我找到了适合我的解决方案。 我使用以下代码来向上或向下移动MixedRealityPlayspace以达到所需的玩家高度。(如果要使用此代码,请确保将您的mixedRealityPlayspace GameObject标记为“ Player”)

var mixedRealityPlayspace = GameObject.FindGameObjectsWithTag("Player")[0].transform;
var camHeight = mainCamera.transform.position.y;
var adjustement =wantedPlayerHeight-camHeight ;
mixedRealityPlayspace.position= new Vector3(mixedRealityPlayspace.position.x,mixedRealityPlayspace.position.y+adjustement, mixedRealityPlayspace.position.z);

我在场景开始时以及在MRTK Teleport system

的本文档中描述的OnTeleportCompleted事件中将其调用