Player stutter fix
This commit is contained in:
@@ -57,7 +57,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6443714940181712877}
|
||||
m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0.024}
|
||||
m_LocalPosition: {x: 0, y: -0.132, z: 0.024}
|
||||
m_LocalScale: {x: 0.24999988, y: 0.24999988, z: 0.25}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4093383343133656141}
|
||||
|
||||
@@ -665,7 +665,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1934992308}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1.806, z: 0.036}
|
||||
m_LocalPosition: {x: 0, y: 1.7, z: 0.036}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1789911868}
|
||||
@@ -779,7 +779,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7035241573763573916}
|
||||
m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0.024}
|
||||
m_LocalPosition: {x: 0, y: -0.08, z: 0.024}
|
||||
m_LocalScale: {x: 0.24999988, y: 0.24999988, z: 0.25}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1789911868}
|
||||
|
||||
@@ -133,19 +133,20 @@ public class Client
|
||||
//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]);
|
||||
string x = position.x.ToString("n4");
|
||||
string y = position.y.ToString("n4");
|
||||
string z = position.z.ToString("n4");
|
||||
|
||||
Send(new byte[] { 7, xV, xN, yV, yN, zV, zN });
|
||||
string sendPosition = x + " " + y + " " + z;
|
||||
byte[] sendPositionASCII = Encoding.ASCII.GetBytes(sendPosition);
|
||||
byte[] send = new byte[sendPositionASCII.Length + 1];
|
||||
send[0] = 7;
|
||||
for (int i = 1; i < send.Length; i++)
|
||||
{
|
||||
send[i] = sendPositionASCII[i - 1];
|
||||
}
|
||||
|
||||
Send(send);
|
||||
}
|
||||
|
||||
private void Receive()
|
||||
@@ -171,16 +172,19 @@ public class Client
|
||||
|
||||
if (data[0] == 7)
|
||||
{
|
||||
string xS = data[1] + "," + data[2];
|
||||
string yS = data[3] + "," + data[4];
|
||||
string zS = data[5] + "," + data[6];
|
||||
byte[] positionASCII = new byte[data.Length - 2];
|
||||
for (int i = 0; i < data.Length - 2; i++)
|
||||
{
|
||||
positionASCII[i] = data[i + 2];
|
||||
}
|
||||
|
||||
float x = float.Parse(xS);
|
||||
float y = float.Parse(yS);
|
||||
float z = float.Parse(zS);
|
||||
|
||||
byte id = data[7];
|
||||
byte id = data[1];
|
||||
|
||||
string[] positionString = Encoding.ASCII.GetString(positionASCII).Split(' ');
|
||||
float x = float.Parse(positionString[0]);
|
||||
float y = float.Parse(positionString[1]);
|
||||
float z = float.Parse(positionString[2]);
|
||||
|
||||
world.UpdatePlayerPosition(new Vector3(x, y, z), id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,5 +232,17 @@ public class Player : MonoBehaviour
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerUpdateData
|
||||
{
|
||||
public PlayerUpdateData(byte id, Vector3 position)
|
||||
{
|
||||
this.id = id;
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
public byte id;
|
||||
public Vector3 position;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ public class World : MonoBehaviour
|
||||
private string name;
|
||||
private Dictionary<byte, GameObject> otherPlayers = new Dictionary<byte, GameObject>();
|
||||
private Queue<byte> playersToCreate = new Queue<byte>();
|
||||
private Queue<Player.PlayerUpdateData> playersToUpdate = new Queue<Player.PlayerUpdateData>();
|
||||
|
||||
//chunks
|
||||
private Chunk[,] chunks;
|
||||
@@ -50,15 +51,18 @@ public class World : MonoBehaviour
|
||||
player.transform.SetParent(gameObject.transform);
|
||||
otherPlayers.Add(id, player);
|
||||
}
|
||||
|
||||
if (playersToUpdate.Count > 0)
|
||||
{
|
||||
Player.PlayerUpdateData data = playersToUpdate.Dequeue();
|
||||
otherPlayers.TryGetValue(data.id, out GameObject g);
|
||||
g.transform.position = data.position;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdatePlayerPosition(Vector3 position, byte id)
|
||||
{
|
||||
otherPlayers.TryGetValue(id, out GameObject g);
|
||||
if(g != null)
|
||||
{
|
||||
g.transform.position = position;
|
||||
}
|
||||
playersToUpdate.Enqueue(new Player.PlayerUpdateData(id, position));
|
||||
}
|
||||
|
||||
public void AddPlayer(byte id)
|
||||
|
||||
Reference in New Issue
Block a user