Когда смотрю от сцены сервера, то всё верно создаётся и каждый персонаж бегает с оружием, но от лица игроков каждый новый игрок не видит оружие прошлых. Оно есть на сцене, но
висит просто в воздухе на нулевых координатах. Перепробовал множество способов
Вот код класса, в котором происходит создание оружия
Синтаксис:
Используется csharp
public class PlayerShooter : NetworkBehaviour
{
[SerializeField] private GameObject _weaponPrefab;
[SerializeField] private Transform _place;
private Weapon weapon;
[Command(requiresAuthority = false)]
public void Init()
{
CmdCreateWeapon();
}
[Server]
private void CmdCreateWeapon()
{
GameObject weaponObject = Instantiate(_weaponPrefab);
NetworkServer.Spawn(weaponObject);
SetWeaponAtPosition(weaponObject);
RpcCreateWeapon(weaponObject);
}
[ClientRpc]
private void RpcCreateWeapon(GameObject weaponObject)
{
SetWeaponAtPosition(weaponObject);
weapon = weaponObject.GetComponent<Weapon>();
}
private void SetWeaponAtPosition(GameObject weaponObject)
{
weaponObject.transform.parent = _place.transform;
weaponObject.transform.position = _place.transform.position;
weaponObject.transform.rotation = _place.transform.rotation;
}
private void Update()
{
if (isLocalPlayer == false)
return;
if (Input.GetMouseButtonDown(0))
{
weapon.Shoot();
}
}
{
[SerializeField] private GameObject _weaponPrefab;
[SerializeField] private Transform _place;
private Weapon weapon;
[Command(requiresAuthority = false)]
public void Init()
{
CmdCreateWeapon();
}
[Server]
private void CmdCreateWeapon()
{
GameObject weaponObject = Instantiate(_weaponPrefab);
NetworkServer.Spawn(weaponObject);
SetWeaponAtPosition(weaponObject);
RpcCreateWeapon(weaponObject);
}
[ClientRpc]
private void RpcCreateWeapon(GameObject weaponObject)
{
SetWeaponAtPosition(weaponObject);
weapon = weaponObject.GetComponent<Weapon>();
}
private void SetWeaponAtPosition(GameObject weaponObject)
{
weaponObject.transform.parent = _place.transform;
weaponObject.transform.position = _place.transform.position;
weaponObject.transform.rotation = _place.transform.rotation;
}
private void Update()
{
if (isLocalPlayer == false)
return;
if (Input.GetMouseButtonDown(0))
{
weapon.Shoot();
}
}