首页 > 解决方案 > 使用 PUN2 和 Unity3D 更新 VR 场景中可抓取游戏对象位置的问题

问题描述

我正在尝试将 PUN2 支持添加到一个简单的 Oculus 入门场景(桌子上的立方体)。我能够在基本的 Photon2 设置之上运行官方Avatar 同步。

这是当前的序列:

如果 P1 只是水平拖动立方体,P2 会看到立方体正常移动,但如果他试图将它从桌子上抬起,从 P2 的角度来看,立方体看起来很疯狂。

看起来立方体与重力作斗争,但我不完全确定发生了什么。您可以在此视频中看到一个示例,其中水平拖动和从桌子上抬起之间存在交替:https ://gofile.io/?c=A9PN41

如果我在立方体上禁用重力,它似乎工作正常(尽管与 P1 移动对象的方式相比,插值有点慢):https ://gofile.io/?c=jM4qEE

关键是我不能让立方体在场景中飞来飞去:)

使用 Unity 2019.1 / PUN2 / Oculus Quest

标签: unity3dvirtual-realityoculusphotonoculusquest

解决方案


对于记录,我发现了问题所在,但仍在研究完整的解决方案。当P1操作一个对象(使用 保持客户端之间的同步Photon Transform View)时,P2看到立方体在与重力作斗争时试图同步其位置/旋转(产生奇怪的跳跃行为)。

经过广泛的研究,我发现了一种可以解决问题的可能方法:

  • 添加一个Photon Rigid Body View(同步速度和角速度)
  • 添加一个RPC(在操作期间激活),它:
    • 禁用重力
    • 启用isKinematic
    • 将所有权转移给正在操作该对象的玩家。

这需要在两个客户端(Master/Normal)上进行全面测试,但到目前为止,结果似乎很有希望。


推荐阅读