【问题标题】:Unity [UNET] Sync non-player object transformUnity [UNET] 同步非玩家对象变换
【发布时间】:2016-12-21 23:09:45
【问题描述】:

我有一个关于 UNET 系统的问题。

场景中有一些物体可以被拾取。我想在玩家拿起它时同步变换该对象。

该对象有一个NetworkIdentity 组件并选中了LocalPlayerAuthority。它也有一个NetworkTransform 脚本,但转换仅从主机同步到客户端,而不是相反。因此,如果我在主机端移动对象,所有客户端都会看到更改,但如果客户端移动它,则只有特定客户端会看到更改。我需要做什么才能使其在双方同步?

【问题讨论】:

    标签: unity3d unity-networking unity3d-unet


    【解决方案1】:

    没关系,我已经解决了这个问题。

    我要做的是通过使用玩家对象来AssignLocalAuthority非玩家对象。

    【讨论】:

    • 您也愿意分享答案中的代码 sn-p 吗?我遇到了同样的问题,但不知道如何设置。谢谢
    • 在播放器对象上,使用非播放器对象的netId参数在命令函数中调用AssignLocalAuthority(在主机端调用它)。您可以从 NetworkIdentity 组件中获取 netId。我在这样的非玩家对象上分配权限。希望对您有所帮助:NetworkManagerVR.Instance.localNetworkPlayer.CmdAssignObjectAuthority(GetComponent<NetworkIdentity>().netId);
    • 谢谢,但您应该在答案中添加它,以供将来的用户使用。
    • 我检查了非玩家对象权限自动分配给主机。它是否正确?因为如果我做了主机,那么我可以直接与非玩家对象交互,并且它们的位置/旋转在网络上顺利同步。而对于客户来说,情况并非如此
    猜你喜欢
    • 2018-08-03
    • 2017-02-13
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2016-06-24
    • 2015-11-20
    相关资源
    最近更新 更多