I am building a Runnig Race Multiplayer Game in Unity3D using UNET. I have 2 Player running in a game. I want to update position of the player while running who is first and who is second and vice versa, Please help me what i am doing wrong.
Here is my code:
public class Player : NetworkBehaviour
{
[SyncVar(hook = "OnPositionChanged")] public Vector3 playerPos;
static List<Player> players = new List<Player>();
[ServerCallback]
void OnEnable()
{
if (!players.Contains(this))
players.Add(this);
}
[ServerCallback]
void OnDisable()
{
if (players.Contains(this))
players.Remove(this);
}
private void Update()
{
if (!isLocalPlayer)
return;
PlayerPositionCalls();
}
}
void OnPositionChanged(Vector3 value)
{
playerPos = value;
}
[Client]
void PlayerPositionCalls()
{
CmdServerPosition();
}
[Command]
public void CmdServerPosition()
{
Position();
}
[Server]
public void Position()
{
playerPos = transform.position;
for (int i = 0; i < players.Count; i++)
players*.RpcPosition(netId, playerPos);*
}
[ClientRpc]
void RpcPosition(NetworkInstanceId networkID, Vector3 pos)
{
-
playerPos = pos;*
if (isLocalPlayer)
{
if (netId == networkID && transform.position.z > pos.z)
PlayerCanvas.canvas.WritePositionText(“1”);
else
PlayerCanvas.canvas.WritePositionText(“2”);
}
}
}