Префабы не синхронизируются для разных игроков - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть пуля с Сетевым преобразованием и Сетевым удостоверением .

Сценарий игрока для пули возрождения:

using UnityEngine;

public class Weapon : MonoBehaviour {

    bool ready = true;
    public Transform firePoint;
    public bool shot;
    public GameObject bulletPrefab;

    void FixedUpdate () {
        if ((Input.GetKey(KeyCode.Space)) || shot)
        {
            if (ready)
            {
                Shoot();
            }
            else
            {
                // click sound
            }
        }
    }

    void Shoot()
    {
        ready = false;
        var bulletGo = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
        LeanTween.delayedCall(6f, () => { ready = true; });
    }
}

Но когда я стреляю, мой враг не видит эту пулю.Почему это не синхронизируется?Мой плеер также имеет сетевое преобразование и сетевое удостоверение , и все в порядке.

1 Ответ

1 голос
/ 09 апреля 2019

Для запуска сетевого объекта Unity предоставляет специальную функцию NetworkServer.Spawn (https://docs.unity3d.com/ScriptReference/Networking.NetworkServer.Spawn.html)

Эта функция должна вызываться после создания объекта, чтобы все клиенты вызывали его в своей сцене.

В вашем случае после создания экземпляра объекта bulletGo вы должны вызвать:

NetworkServer.Spawn(bulletGo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...