Problem z Unet

Programowanie gier multiplayer, chat, bazy danych i inne.

Problem z Unet

Postprzez Anonimowy_koles » 26 Lis 2017, 13:54

Witam. Posiadam taki oto skrypt:

Kod: Zaznacz wszystko
using UnityEngine;
using UnityEngine.Networking;


public class moveing : NetworkBehaviour{

    [SyncVar] public float posX;
    [SyncVar] public float posY;
    [SyncVar] public float posZ;

    public float speed = 5;

    void Awake ()
    {
       
   }
   
   
   void Update ()
    {
        if (isLocalPlayer)
        {   
            if (Input.GetKey(KeyCode.D))
            {
                posX += 1f * speed * Time.deltaTime;
            }

            if (Input.GetKey(KeyCode.A))
            {
                posX -= 1f * speed * Time.deltaTime;
            }
        }
        SyncState();
       
    }

    void SyncState()
    {
        transform.position = new Vector3(posX, posY, posZ);
    }
}


Powinno to działać tak, że kostki u hosta i klienta powinny się poruszać w kierunku X. i wszystko działa lecz tylko mogę poruszać kostką jako host. Czyli ruch jest widoczny z poziomu klienta lecz gdy próbuję ruszyć kostką jako klient nie jest to widoczne u hosta. Wie ktoś jak to naprawić?

PS. jestem zielony jeśli chodzi o Unet więc proszę o zrozumienie :)
Anonimowy_koles
 
Posty: 4
Rejestracja: 25 Sty 2017, 19:18
Has thanked: 0 time
Been thanked: 0 time

Re: Problem z Unet

Postprzez Hostur » 14 Gru 2017, 08:56

SyncVar jest synchronizowany od servera do clientów. Jeśli chcesz z clienta poprzez server synchronizować jakąś zmienną na unecie to musisz to zrobić mniej więcej tak:

Kod: Zaznacz wszystko
[SyncVar(hook = "OnSomeValueChanged")]
private int _someValue

private void OnSomeValueChanged(int value)
{
  Debug.Log(value);
}

private void Update()
{
    if(Input.GetKeyDown(KeyCode.P))
    {
      if(IsLocalClient)
        ChangeValueFromClient(++_someValue);
    }
}

private void ChangeValueFromClient(int value)
{
  if(IsLocalClient)
  {
    CmdSetValue(value)
  }
}

[Command]
private void CmdSetValue(int value)
{
  _someValue = value;
}
Hostur
 
Posty: 648
Rejestracja: 05 Sie 2015, 07:36
Has thanked: 0 time
Been thanked: 0 time


Wróć do Multiplayer i Sieć

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość