【问题标题】:Unity [UNET] Sync non-player object transform not workingUnity [UNET] 同步非玩家对象变换不起作用
【发布时间】:2018-08-03 15:33:43
【问题描述】:

我正在尝试使用 UNET 在 Unity 中同步一个非玩家游戏对象的转换。基本上我有一个玩家可以对抗该对象并移动它,我希望该对象的变换在服务器和客户端中以相同的方式发生变化。

我按照教程https://unity3d.com/learn/tutorials/topics/multiplayer-networking/handling-non-player-objects?playlist=29690 操作,可以让播放器+子弹示例运行良好。然后我创建了一个新对象,添加了具有本地玩家权限和网络转换(更新 1 秒)的网络身份,创建了一个预制件并将其作为“已注册的可生成预制件”添加到网络管理器中。

认为这已经足够了,但它不起作用,因为对象转换在服务器和客户端中没有以相同的方式更新。在服务器中,碰撞非常奇怪(例如,对对象的直线运动有时会使其向后跳)但可以将对象移动到某个位置并停留在那里。在客户端,当玩家触摸对象时,碰撞非常平滑,然后对象具有某种磁效应,总是将其带回服务器端对象的变换。

我检查了这些其他问题:1) Unity [UNET] Sync non-player object transform 2) How do I sync non-player GameObject properties in UNet/Unity5? 和 3) UNET - Sync. script for color on non-player object,但我无法理解 1) 中的解决方案以及如何使用 SyncVar 进行同步转换(如果那样的话实际上是最好的解决方案)

我还尝试了上面的 Unity 教程,将我的对象设置为与敌人的情况完全一样,但它也无法保持客户端和服务器中的转换同步。

我确信我在做一些非常愚蠢的事情,所以非常欢迎任何提示!

【问题讨论】:

    标签: c# unity3d unity3d-unet


    【解决方案1】:

    2018 年的重要 .. ..

    我们确定

    如果您在开发过程中使用 localhost,NetworkTransform 会出现一些问题,尤其是在 Mac 上。

    这是一个真正的 PITA。一定要在普通局域网上用几台机器进行测试。

    【讨论】:

      【解决方案2】:

      找到了解决办法。不知何故,对象中的网络变换组件被设置为“同步 3D 刚体”,而不是参数“变换同步模式”中的“同步变换”。改为同步变换反而解决了问题,不再出现“磁性”或“弹性”效应。

      【讨论】:

        猜你喜欢
        • 2016-12-21
        • 2017-02-13
        • 2016-02-01
        • 2018-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-19
        相关资源
        最近更新 更多