Передача параметра в мультиплеере - PullRequest
0 голосов
/ 07 февраля 2019

Я работаю над многопользовательской игрой Unity 2D fps.Когда игрок нажимает «Пробел», он создает пулю, а когда пуля попадает в любого игрока, он должен уничтожить себя и толкнуть игрока в направлении пули.Мой код выглядит следующим образом:

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

Есть идеи?Для меня очень важно исправить это как можно скорее.Благодаря.

...