2016-05-03 1 views
1

Je suis coincé lors du codage d'un jeu multijoueur utilisant unity 5 UNET. travaille actuellement avec unity 5.1 et je veux synchroniser une transformation enfant de l'objet de jeu sur le réseau.Bloqué dans Unity 5 UNET Code Multijoueur

le problème est que tous les clients envoient une requête pour synchroniser leur transformation enfant vers le serveur. mais le serveur n'envahit pas son enfant à se transformer avec d'autres clients.

j'ai entendu qu'il y a un composant est l'unité 5.2 pour ce travail mais comme je vous l'ai dit je travaille dans l'unité 5.1 donc je veux la solution pour 5.1.

Voici mon morceau de code.

avec impatience pour la réponse

using UnityEngine; 
using UnityEngine.Networking; 
using System.Collections; 

public class Sync_Position : NetworkBehaviour 
{ 
    [SyncVar] 
    Vector3 []sync_pos; 

    [SerializeField] Transform []obj; 
    [SerializeField] int lerp_rate; 

    Vector3 []last_pos; 
    float threshold=5; 

    void Start() 
    { 
     sync_pos= new Vector3[obj.Length]; 
     last_pos= new Vector3[obj.Length]; 
    } 

    // Update is called once per frame 
    void FixedUpdate() 
    { 
     transform_pos(); 
     lerp_pos(); 
    } 

    void lerp_pos() 
    { 
     if(!isLocalPlayer) 
     { 
      for(int i=0;i<obj.Length;i++) 
      { 
       if(Vector3.Distance(obj[i].localPosition,sync_pos[i]) > 1) 
       { 
        obj[i].localPosition=sync_pos[i]; 
       } 
      } 
     } 
    } 

    [Command] 
    void Cmd_for_pos(Vector3 p, int index) 
    { 
     sync_pos[index]=p; 
    } 

    [ClientCallback] 
    void transform_pos() 
    { 
     if(isLocalPlayer) 
     { 
      for(int i=0;i<obj.Length;i++) 
      { 
       if(Vector3.Distance(obj[i].localPosition,last_pos[i]) > threshold) 
       { 
        Cmd_for_pos(obj[i].localPosition,i); 
        last_pos[i]=obj[i].localPosition; 
       } 
      } 
     } 
    } 
} 

Répondre

0

Vous pouvez créer des objets « d'ombre » pour chaque client connecté/lecteur sur le serveur, puis déplacer ces objets represening la position de antoehr objet distant.

Je ne peux que recommander ce tutoriel car c'est ce que j'ai utilisé moi-même pour entrer dans UNET.

https://www.youtube.com/watch?v=NLnzlwCRjgc