gpt4 book ai didi

c# - Unity [UNET] 同步非玩家对象转换不工作

转载 作者:可可西里 更新时间:2023-11-01 08:27:49 25 4
gpt4 key购买 nike

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

我遵循了教程 https://unity3d.com/learn/tutorials/topics/multiplayer-networking/handling-non-player-objects?playlist=29690并且可以让播放器 + 子弹示例运行良好。然后我创建了一个新对象,添加了具有本地玩家权限的网络身份和网络转换(更新 1 秒),创建了一个预制件并将其作为“Registered 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 教程,将我的对象设置得与敌人的情况完全一样,但它也无法在客户端和服务器中保持转换同步。

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

最佳答案

2018 年重要..

我们决定

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

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

关于c# - Unity [UNET] 同步非玩家对象转换不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48950199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com