Я работаю над небольшой 3D-игрой для 2 игроков в Unity. Концепция игры представляет собой космическую гонку, в которой вам предстоит пролетать сквозь кольца. В качестве дополнительной функции я хочу дать игроку возможность толкать другого игрока. Поэтому, когда они нажимают определенную кнопку, их космический корабль должен посылать «ударную волну», которая ударяет другого игрока и отбрасывает его немного назад. Я хотел реализовать это с помощью функций Physics.OverlapSphere и AddExplosionForce. Я проверил это в локальной дополнительной сцене без сетевой функции, и это сработало очень хорошо.
Поскольку я хотел импортировать функцию в настоящую игру, у меня возникла проблема, что эффект затрагивал только локального игрока, а не другого. Другой просто странно лагает и не меняет свою позицию (в другом экземпляре игры тоже нет. Как будто клиент не получил сдачу).
Должен сказать, что я уже использую Network Manager, и нормальное движение с помощью «wasd» работает у обоих игроков.
Следуя коду, который я использую (это просто стандартный пример):
Vector3 explosionPos = transform.position;
Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);
foreach (Collider hit in colliders)
{
Rigidbody rb = hit.GetComponent<Rigidbody>();
if (rb != null)
rb.AddExplosionForce(power, explosionPos, radius, 3.0F);
}
Кто-нибудь знает, есть ли что-то, что я должен добавить для сети?