Hololens 与 Unet 共享示例:客户端 Hololens 旋转和距离我 运行 应用程序在 x 或 z 轴上的位置

Hololens Sharing with Unet example: Client Hololens rotation and distance off by where I run the application in x or z axis

编辑

所以我注意到它没有绑定到 90 度。它基本上是我启动应用程序的任何地方。如果我在对面的墙上启动应用程序,它会偏离 180 度。我还注意到,即使我从同一堵墙开始,如果我从房间的另一侧开始,它们也会偏离那个距离。


我正在使用与 Unet 共享的示例,我对它进行了一些修改,使其类似于子弹一样通过网络生成一个胶囊。但是,我在 HoloLens 上发生了一件在编辑器中没有发生的奇怪事情。客户端 HoloLens 视图在 x 轴或 z 轴上偏离 90 度,我真的无法分辨是哪个。但是 y 轴仍然同步。

所以我有 2 个 HoloLens 和一台通过网络管理器 HUD 连接的计算机。我加入 session 或任何东西都没有问题,但由于某种原因,第二个(客户端)HoloLens 的旋转已关闭。在计算机上查看场景视图时,主机和计算机客户端是同步的。但是,当我使用 Holo 客户端移动胶囊时,场景视图显示它正在朝不同的方向看,并且胶囊位于 Holo 客户端的左侧。

有没有其他人对此有任何好运?任何对此的见解将不胜感激。

通过在对象控制器中添加一个命令来解决此问题,该命令在某人获得对象权限时根据共享世界锚点的逆变换点设置其位置。看起来像这样:

private void Update()
{
    if (receivedAuthority)
    {
        Vector3 objDir = transform.forward;
        Vector3 objPos = transform.position + objDir * .01f;

        localPosition = sharedAnchorTrans.InverseTransformPoint(objPos);

            CmdTransform(localPosition);           
    }

   else if(!receivedAuthority)
    {

         transform.localPosition = localPosition;

    }
}

[Command]
public void CmdTransform(Vector3 position)
{
    if (!isLocalPlayer)
    {
      localPosition = position;
    }
}