player sync
This commit is contained in:
@@ -130,6 +130,24 @@ public class Client
|
||||
Send(new byte[]{6});
|
||||
}
|
||||
|
||||
//1.12 == [1] = 1, [2] = 12
|
||||
public void SendPositionUpdate(Vector3 position)
|
||||
{
|
||||
string x = position.x.ToString("F");
|
||||
string y = position.y.ToString("F");
|
||||
string z = position.z.ToString("F");
|
||||
byte xV = byte.Parse(x.Split(',')[0]);
|
||||
byte xN = byte.Parse(x.Split(',')[1]);
|
||||
|
||||
byte yV = byte.Parse(y.Split(',')[0]);
|
||||
byte yN = byte.Parse(y.Split(',')[1]);
|
||||
|
||||
byte zV = byte.Parse(z.Split(',')[0]);
|
||||
byte zN = byte.Parse(z.Split(',')[1]);
|
||||
|
||||
Send(new byte[] { 7, xV, xN, yV, yN, zV, zN });
|
||||
}
|
||||
|
||||
private void Receive()
|
||||
{
|
||||
while(true)
|
||||
@@ -150,6 +168,21 @@ public class Client
|
||||
{
|
||||
world.AddPlayer(data[1]);
|
||||
}
|
||||
|
||||
if (data[0] == 7)
|
||||
{
|
||||
string xS = data[1] + "," + data[2];
|
||||
string yS = data[3] + "," + data[4];
|
||||
string zS = data[5] + "," + data[6];
|
||||
|
||||
float x = float.Parse(xS);
|
||||
float y = float.Parse(yS);
|
||||
float z = float.Parse(zS);
|
||||
|
||||
byte id = data[7];
|
||||
|
||||
world.UpdatePlayerPosition(new Vector3(x, y, z), id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ public class Player : MonoBehaviour
|
||||
[SerializeField] private World world;
|
||||
private Camera camera = null;
|
||||
private Rigidbody rigidbody;
|
||||
private Vector3 lastPosition = new Vector3();
|
||||
|
||||
//network
|
||||
private Client client = null;
|
||||
@@ -30,6 +31,15 @@ public class Player : MonoBehaviour
|
||||
{
|
||||
transform.Translate(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.fixedDeltaTime, 0,
|
||||
Input.GetAxisRaw("Vertical") * moveSpeed * Time.fixedDeltaTime);
|
||||
|
||||
Vector3 position = transform.position;
|
||||
|
||||
if (lastPosition.x != position.x || lastPosition.y != position.y || lastPosition.z != position.z)
|
||||
{
|
||||
client.SendPositionUpdate(transform.position);
|
||||
}
|
||||
|
||||
lastPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
|
||||
@@ -52,6 +52,15 @@ public class World : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdatePlayerPosition(Vector3 position, byte id)
|
||||
{
|
||||
otherPlayers.TryGetValue(id, out GameObject g);
|
||||
if(g != null)
|
||||
{
|
||||
g.transform.position = position;
|
||||
}
|
||||
}
|
||||
|
||||
public void AddPlayer(byte id)
|
||||
{
|
||||
playersToCreate.Enqueue(id);
|
||||
|
||||
Reference in New Issue
Block a user