【问题标题】:Synchronization in Multiplayer in Unity3DUnity3D多人游戏中的同步
【发布时间】:2014-07-05 05:01:40
【问题描述】:

我正在开发一个 Unity Network 游戏,其中我有两个玩家,他们有一些基本动作。一个玩家由服务器控制,另一个玩家由客户端控制。

为此,我建立了一个客户端/服务器连接。建立连接后,我可以在屏幕两侧看到两个玩家。我用的是RPC方法。

现在,如果我在服务器上移动,我可以看到服务器玩家也在客户端移动。这意味着它们是同步的。但是当我在客户端移动时,只有客户端玩家移动。我看不到服务器端的移动。为什么这不起作用?

我已经用 UnityScript 编写了代码。

#pragma strict
var farword:boolean=false;
var backword:boolean=false;

var FirstPlayer:GameObject;
var SecondPlayer:GameObject;

var isFarword=false;
var isBackword=false;
function Update () {

    if(isFarword)
    { 
        networkView.RPC("ChangePos",RPCMode.All);
        isFarword=false;
    }
}

@RPC
function ChangePos()
{
    if(isFarword)
    {
        if(Network.isServer)
        {
            FirstPlayer.transform.Translate(0,0,1);
            isFarword=false;
        }
        if(Network.isClient)
        {
            SecondPlayer.transform.Translate(0,0,1);
            isFarword=false;
        }
    }
    else if(isBackword)
    {
        if(Network.isServer)
        {
            FirstPlayer.transform.Translate(0,0,-1);
            isBackword=false;
        }
        if(Network.isClient)
        {
            SecondPlayer.transform.Translate(0,0,-1);
            isBackword=false;
        }
    }
}

function OnGUI()
{
    if(GUI.RepeatButton(new Rect(1000,100,80,70),"Farword"))
    {
        isFarword=true;
    }
    if(GUI.RepeatButton(new Rect(850,100,80,70),"second"))
    {
        isBackword=true;
    }
}

【问题讨论】:

  • 我不认为这段代码是出错的部分。
  • 你在哪里创建角色?你使用实例化吗?或者只是在编辑器中拖放。如果实例化使用 networkinstantiate 而不是普通的实例化。示例用法(在 c# 中,但不难翻译)pastebin.com/3kVAygHs

标签: network-programming unity3d unityscript


【解决方案1】:

问题可能出在你实例化玩家的地方..

使用网络事件来创建玩家,例如..

Network.OnPlayerConnected 是您应该 Network.Instantiate 客户端播放器的位置,Network.OnServerInitialized 是您应该 Network.Instantiate 服务器播放器的位置。这将导致他们每个人都成为所有者。

另外,网络游戏有一些心理逻辑需要思考,尽量总是使用 NetworkView.isMine 来确定谁是对象的所有者,谁不是。请记住,只有所有者才能移动对象,其他玩家正在监听坐标。

祝你好运!

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多