Unet возрождаемый объект отложен на стороне клиента - PullRequest
0 голосов
/ 26 октября 2018

Я делаю 2D нисходящий шутер в сети. Я порождаю оружие на позиции игроков. Моя проблема в том, что когда Клиент порождает свой пистолет, у него какая-то задержка. Когда клиент движется, пистолет плохо следит за ним, он появляется в течение 1/4 сек. Он просто «прыгает» к игроку. Проблема только на стороне клиента, с хостом все в порядке.

Оружие находится в порождаемых компонентах, имеет сетевой идентификатор и полномочия, а также имеет сетевое преобразование. Плеер имеет те же компоненты.

Вот мой код:

public class Player : NetworkBehaviour 
{

    [SerializeField] float speed = 10f;
    [HideInInspector] public GameObject playerGun;
    public GameObject gunPrefab;

    void Update() 
    {
            Movement();
            if (Input.GetKeyDown(KeyCode.I))
            {
                CmdGetGun();
            }
    }

    private void Movement()
    {
        Vector3 position = new Vector3(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")).normalized * Time.deltaTime * speed;
        transform.position += position;
        MouseMovement();
    }

    private void MouseMovement()
    {
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        mousePosition.Normalize();
        float rotation_z = Mathf.Atan2(mousePosition.y, mousePosition.x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.Euler(0f, 0f, rotation_z);
    }

    [Command]
    public void CmdGetGun()
    {
        Debug.Log("SPAWNING A GUN");
        GameObject playerGun = (GameObject)Instantiate(gunPrefab, GetComponentInChildren<HandHolder>().transform.position, GetComponentInChildren<HandHolder>().transform.rotation, GetComponentInChildren<HandHolder>().transform);
        NetworkServer.Spawn(playerGun);
        RpcSetGunOnClients(playerGun);
    }

    [ClientRpc]
    private void RpcSetGunOnClients(GameObject playerGun)
    {
        this.playerGun = playerGun;
    }

Вот компоненты Player и Gun:

Player prefab

Gun Prefab

Я пытаюсь найти решение в течение нескольких дней.

Я пытался даже без использования NetworkTransform на пистолете, но потом у меня возникла проблема с присоединением новых игроков к серверу. Они не могли видеть обновленную позицию уже порожденных орудий.

Надеюсь, кто-нибудь сможет мне помочь.

...