I have a problem wherein this happens:
It's problematic because I'm unfamiliar how to set the same player value in the same transform over the network. Is there a way where if I get the list of transforms, it's in the same order in other clients?
My current setup is that each client creates his own My Player Prefab
with a Player Info
script that stores in the Photon's Player
. Spawn Manager
will be listening until both player prefabs have been created. From there, they'll do this code:
public void PlayerObjectReady(){
playerObjectReady++;
int totalPlayerCount = PhotonNetwork.PlayerList.Length;
// check if we've readied all player objects in all clients
if(playerObjectReady == totalPlayerCount){
photonView.RPC("SpawnPlayer",RpcTarget.AllBufferedViaServer);
}
}
[PunRPC]
void SpawnPlayer(){
// update local list for all clients
infos = FindObjectsOfType<PlayerInfo>(); // this line causes problems
// update player references so that each character is owned by their player
for (int i = 0; i < infos.Length; i++){
infos[i].Player = PhotonNetwork.PlayerList[i];
if(PhotonNetwork.IsMasterClient)
infos[i].transform.position = spawnPoints[i].position;
}
TurnManager.Instance.AddPlayers(infos);
// tell everyone i'm ready
photonView.RPC("ImReady",RpcTarget.AllBufferedViaServer,PhotonNetwork.NickName);
}
The main problem here is that the player prefabs are not always in the correct order that I wanted them to be. Plus, their positions often clash together whenever Photon Transform view is enabled. And yes, the players here are right beside each other when they're actually spread across a small map.
Let me know a possible solution because I intend to use Photon Transform view. For now, disabling Photon Transform view is my current band-aid solution which only works when spawning and not moving the players.