Я работаю над многопользовательской игрой 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
Есть идеи?Для меня очень важно исправить это как можно скорее.Благодаря.