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);
}

0 ответов

Другие вопросы по тегам