Unity Network обновляет игруобъект трансформации
Эй, я новичок в сети Unity3D!
Когда я порождаю свое оружие (prefab), я хотел бы уведомить всех клиентов о его настройке трансформации (позиция, вращение, родитель и т. Д.), Чтобы оно прикреплялось к игроку с правильными значениями.
Проблема в том, что только хост знает обо всех изменениях, а для других клиентов обновляется только локальный игрок (himslef).
Я не уверен, правильно ли я использую атрибуты Command и ClientRpc ^^'вот код:
void Start()
{
if (isLocalPlayer)
CmdSpawnGun();
}
[Command]
void CmdSpawnGun()
{
GameObject gunPref = Resources.Load("Prefabs/GunPrefab") as GameObject;
if (gunPref == null)
Debug.Log("Failed to load Gun Prefab.");
GameObject gun = Instantiate(gunPref, _weaponSlot);
gun.GetComponent<Weapon>().Equip(this);
NetworkServer.Spawn(gun);
RpcNotifyTransform(gun, gameObject);
}
[ClientRpc]
void RpcNotifyTransform(GameObject block, GameObject rootIdentity)
{
Transform slot = rootIdentity.GetComponent<Character>()._weaponSlot;
if (slot == null)
Debug.Log("Weapon slot not found.");
block.transform.parent = slot;
block.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
block.transform.localRotation = new Quaternion(0.0f, 0.0f, 0.0f, 0.0f);
block.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
}