问题标签 [unity3d-unet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1545 浏览

unity3d - 在 Unity3d 中通过 UNET 同步的问题

我正在尝试通过网络同步玩家的位置和旋转。我有部分工作。

我有 2 个玩家,一个主机和一个遥控器。查看主机屏幕时,我看到本地和网络播放器的正确位置。在远程时,我看到本地播放器的正确位置,但看不到联网播放器的正确位置。

这是我的同步脚本:

这个想法是我应该能够将这个脚本扔到任何带有 a 的对象上,Rigidbody并且它应该通过网络自动同步,本地播放器是源。

为什么它在远程连接上我没有在主机上看到同步对象我看到它们都正确?

0 投票
1 回答
110 浏览

c# - 在没有玩家输入的情况下重复发射/创建子弹 - UNET Unity

设置:创建我的第一个多人游戏并遇到一个奇怪的问题。这是一款坦克游戏,玩家可以射击子弹并互相残杀。

您可以为子弹充电以更快/更远地射击。

问题: 当客户端玩家完全充电并释放时,子弹会继续重复生成并且永不停止。如果客户端播放器未完全收费,则不会出现此问题。

我认为问题在于if (m_CurrentLaunchForce >= m_MaxLaunchForce && !m_Fired)

注意:主机播放器没有这个问题,因此它与网络有关。

0 投票
2 回答
2064 浏览

c# - 玩家移动时与子弹碰撞 - Unity UNET

设置:创建我的第一个多人游戏并遇到一个奇怪的问题。这是一款坦克游戏,玩家可以射击子弹并互相残杀

问题:当客户端在移动时射击时,子弹似乎会稍微延迟生成,这会导致玩家与子弹发生碰撞。

问题似乎是玩家本身是本地的,并且子弹正在网络上产生(这导致了延迟)

注意:主机播放器没有这个问题,因此它与网络有关。

如何将子弹与客户端播放器同步?

0 投票
1 回答
810 浏览

unity3d - UNet播放器控制器问题

我有一个可以在 UNET 上工作的播放器控制器。我一定不明白,因为任何远程玩家加入游戏都无法控制他们的角色。

托管本地玩家可以很好地控制他/她的角色。

基本上我认为这是可行的方式是在Update本地播放器中可以按键。这些按键Command向设置同步布尔值的服务器发出 s。

FixedUpdate服务器中,根据设置的布尔值移动刚体。在播放器对象上,我有一个 NetworkTransform,因此服务器所做的任何移动都应发送回客户端。

0 投票
1 回答
2710 浏览

networking - Unity3d 5 网络,UNET HLAPI 与 LLAPI

我曾经做过赛车游戏,但一年前我休息了一下(该项目是在 unity 4 上完成的),因为我重新启动了该项目,我必须重新实现网络,因为它不适用于 unity 4 网络。现在我看到了使用 UNET、HLAPI 和 LLAPI 实现它的 2 种方法,因为同步对我来说非常重要,LLAPI 应该更好更灵活,但我在这里问一些专家是否努力使用它是有道理的,或者 HLAPI 给出了足够好的结果。

0 投票
1 回答
57 浏览

unity3d - 为什么对象总是将自己定位在@ 0.0 而不是它最初产生的

使用此代码生成:

GameObject goX = Resources.Load ("Apple") as GameObject; GameObject goY = Resources.Load ("Orange") as GameObject; GameObject goZ = Resources.Load ("Banana") as GameObject;

Spawn1 - Spawn4 不是 0.0

生成对象时,它会在正确的位置生成,但随后立即移动到 0.0 位置。

这是我在对象上使用的同步脚本,我认为问题出在脚本中,因为当我使用 NetworkTransform 组件时它可以工作。但是,NetworkTransform 错过了一些动作,所以我想在脚本中同步:

0 投票
3 回答
34870 浏览

c# - 统一3D。试图在没有权限的情况下为对象发送命令

我有一个多人回合制策略游戏,需要一个游戏经理来控制当前的游戏状态(轮到谁等)。这个管理器应该对每个客户端都是通用的,它的状态应该在服务器上同步。

我是这样做的:游戏管理器对象是 NetworkBehaviour,它具有 NetworkIdentity,它既不是本地玩家权限也不是服务器权限。我制作了一个自定义 NetworkManager,它在客户端连接时生成游戏管理器,还测试它是否是服务器。这是一个代码:

当我在服务器上运行它时它工作正常,它在客户端上创建一个实例并将变量从服务器同步到客户端。但是当我尝试从客户端运行命令时,它会忽略它们,并抛出以下警告:

试图在没有权限的情况下为对象发送命令。UnityEngine.Networking.NetworkBehaviour:SendCommandInternal(NetworkWriter, Int32, String)

请注意,此游戏管理器在任何玩家之前生成,因为它必须负责生成玩家。我究竟做错了什么?

0 投票
1 回答
271 浏览

scripting - UNET 为客户端更改子对象的纹理

我尝试了多种技术,但仍然没有结果。这篇 文章看起来很有希望,但我仍然有同样的问题。主机可以更改颜色,但不能为客户端玩家更改颜色。代码看起来像这样。

任何的意见都将会有帮助。提前致谢。

0 投票
4 回答
8679 浏览

c# - 使用 Unet 在特定位置生成玩家

我正在尝试在2 个不同的位置生成2 个玩家(主机和客户端)

我不知道该怎么做,因为播放器是由网络管理员自动生成的。

我已经尝试了以下但可怕地失败了:(。

如何在特定位置生成 Player 对象?

0 投票
1 回答
525 浏览

unity3d - GameObject Rotation 不会在客户端发生

翻转一个 2d 游戏对象并将其放置在完全相同的位置上,这对双方都很好。旋转 2d 游戏对象在两边都很好用

但是,如果我通过执行 Cmd_DoTheSpawn 翻转游戏对象,则旋转不会反映在“其他”客户端上。

我需要帮助才能完成这项工作。

这是我使用的代码:

感谢@LumbusterTick,我确实让它工作了,这意味着轮换没问题。但是,我确实遇到了另一个我不完全理解的问题。

我添加了以下代码:

...我在生成之后但在销毁之前调用,请参阅上面的更新代码。

它确实将翻转的预制件正确旋转,但我确实收到以下消息:

oldGO NULL

也:

NullReferenceException:对象引用未设置为对象的实例

我非常清楚这意味着什么,但不知道为什么会发生,因为当我发送它们时 myGameObject 的所有值都为空。...我在销毁之前就这样做了。

我不明白为什么它为空但仍会影响新对象的旋转。