Unity-Networking: префабы не видны за пределами клиента на сервере

Я пытаюсь заставить игроков создавать сюрикены, однако они появляются только на клиенте, которым они были сделаны. Я добавил сетевой идентификатор в префаб shuriken и добавил префаб shuriken к зарегистрированным порождаемым префабам в сетевом менеджере. Ниже приведена следующая команда в скрипте проигрывателя для создания префабов сюрикена:

    void CmdThrowShuriken(){
    //creates knife
    shurikenCount -= 1;
    myAnimator.SetTrigger("throw");
    if (shurikenCount != 0) {
        if (facingRight) {
            GameObject tmp = (GameObject)Instantiate (knifePrefab, transform.position, Quaternion.identity);
            NetworkServer.Spawn(tmp);
            tmp.GetComponent<Shuriken> ().Initialize (Vector2.left);
        } else {
            GameObject tmp = (GameObject)Instantiate (knifePrefab, transform.position, Quaternion.identity);
            NetworkServer.Spawn(tmp);
            tmp.GetComponent<Shuriken> ().Initialize (Vector2.right);
        }
    }
}

И сценарий сюрикена:

    using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class Shuriken_net : NetworkBehaviour {

// Use this for initialization
private float speed = 10;

private Rigidbody2D myRigidbody;

private Vector2 direction;

void Start () {
    myRigidbody = GetComponent<Rigidbody2D> ();
}

// Update is called once per frame
void FixedUpdate(){

}
void RotateRight () {
    transform.Rotate (Vector3.forward * 45);
}
public void Initialize(Vector2 direction){
    this.direction = direction;
}
[ServerCallback]
void Update () {
    myRigidbody.velocity = direction * speed;
    RotateRight ();
}
void OnCollisionEneter(Collision other){
    if (PlayerNet.Instance.health != 0) {
        PlayerNet.Instance.health -= 5;
    }
    if (!isServer) {
        return;
    }
    if (other.gameObject.tag != "Ninja") {
        return;
    }
    if (PlayerNet.Instance.health != null) {
        PlayerNet.Instance.TakeDamage(5);
    }
}
void OnBecameInvisible(){
    NetworkServer.Destroy (gameObject);
}

}

0 ответов

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