在多人游戏中传输参数

时间:2019-02-07 01:24:24

标签: unity3d multiplayer

我正在开发Unity 2D fps多人游戏。每当玩家按下Space时,他们都会实例化子弹,并且当子弹击中任何玩家时,它必须自行消灭并将玩家推向子弹方向。我的代码如下:

void OnTriggerEnter2D(Collider2D col)
{
    if (isServer == false)
        return;
    if (col.gameObject.tag != "bullet")
        return;

    CmdTrigger(col.gameObject);
}

[Command]
void CmdTrigger(GameObject col)
{
    RpcTrigger(col);
}

[ClientRpc]
void RpcTrigger(GameObject col)
{
    Rigidbody2D rb;
    rb = col.GetComponent<Rigidbody2D>();

    if (rb.velocity.x > 0)
        RpcExplode(Mathf.Sign(1));
    else
        RpcExplode(Mathf.Sign(-1));

    //Network.Destroy(col); 
}

问题在于,当子弹与玩家碰撞时,我无法将GameObject很好地传递给其他玩家,因此每个玩家都可以在其客户端销毁子弹。当子弹击中播放器时,它不会自行销毁,它会经过并且控制台会向我显示以下错误:“ NullRefrenceException:对象引用未设置为对象的实例”,如果单击它,它将带给我到此行:

rb = col.GetComponent<Rigidbody2D>();

这是我的角色控制完整代码:https://pastebin.com/L1DEmQv1

有什么想法吗?对我来说,尽快修复它非常重要。谢谢。

0 个答案:

没有答案