我正在尝试使用UNET同步Unity中一个非玩家游戏对象的转换。基本上我有一个可以反对该对象并移动它的玩家,我希望该对象的转换在服务器和客户端中以相同的方式改变。
我遵循了教程https://unity3d.com/learn/tutorials/topics/multiplayer-networking/handling-non-player-objects?playlist=29690,可以让玩家+子弹示例运作良好。然后我创建了一个新对象,添加了具有本地播放器权限的网络标识和网络转换(更新1秒),创建了一个预制件,并将其作为"注册的Spawnable Prefab"添加到网络管理器中。
认为这样就足够了,但它并不起作用,因为对象转换在服务器和客户端中都没有以相同的方式更新。在服务器中,碰撞是非常奇怪的(例如,对物体的直线运动使其有时会跳回)但是物体可以移动到某个位置并保持在那里。在客户端,当玩家触摸对象时,碰撞非常平滑,然后对象具有某种磁效应,总是将其带回到服务器端对象的变换。
我检查了其他一些问题: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教程,就像敌人的情况一样设置我的对象,但它也不能保持转换在客户端和服务器中同步。
我确信我做的事非常愚蠢,所以非常欢迎任何提示!
答案 0 :(得分:4)
2018年重要..
我们确定
这是真正的PITA。一定要在几台计算机上的普通LAN上进行测试。