Unity 5 - UNET - 将拖动的游戏对象同步为客户端(HL2 重力枪风格)
Posted
技术标签:
【中文标题】Unity 5 - UNET - 将拖动的游戏对象同步为客户端(HL2 重力枪风格)【英文标题】:Unity 5 - UNET - Syncing a dragged GameObject as a client (HL2 Gravity Gun style) 【发布时间】:2015-11-26 01:44:18 【问题描述】:我正在制作一款 2D 合作游戏,其中包含涉及移动物理对象的谜题。
我正在使用 Unity 5 引擎和 UNET 工具
玩家拥有的武器之一是模仿半条命2重力枪行为的武器;
-
你在某个方向右击
它在那个方向进行光线投射,距离有限
如果它找到一个带有碰撞器和特定标签的游戏对象,它会将其存储为“grabbedObject”
它设置了grabbedObject的位置,使它漂浮在玩家面前
您再次右键单击并放下它。
这在服务器端完美运行,在客户端你可以看到它在运行。 但是当您尝试作为客户端进行操作时,它不会更改服务器上的抓取对象位置,并且一旦放下它就会恢复到原始位置
【问题讨论】:
嗨@NeoHL,您似乎正在构建一个问题但没有提出问题。如果您提出问题和一些代码,这真的很有帮助。 请添加代码,是的,很多人在整个 *** 上都有相同的 unet 问题,有时客户端不工作,有时是服务器,我发现使用 isServer bool 更改内容可以解决很多问题 【参考方案1】:我想发表评论,因为我不确定这是一个正确的答案 - 但我距离能够这样做只差 5 分。但我在尝试同步游戏中的对象颜色变化时遇到了类似的问题。
这是我的问题和我的答案(因为我在网上找到答案时遇到了很多麻烦),我认为它可以帮助您找到解决方案:
How do I sync non-player GameObject properties in UNet/Unity5?
【讨论】:
所以解决方案真的是向服务器发送位置更改命令的垃圾邮件,让服务器将更改传播给其他客户端? 基本上......这个想法是服务器是传播给所有玩家的主要控制。至少在几年前是这样,我不确定这是否仍然是要遵循的模式。您可以进行一些优化,例如:您不需要发送所有数据 - 只发送计算客户端所需的其余数据;您可以限制更新的频率并让客户端在更新之间进行插值;可能还有很多我还没有想到的优化以上是关于Unity 5 - UNET - 将拖动的游戏对象同步为客户端(HL2 重力枪风格)的主要内容,如果未能解决你的问题,请参考以下文章
Unity Networking-UNet 中的附加场景加载
UNET - 让任何玩家向同一个 NetworkIdentity 发送命令