Prefabs not spawned in formation


I use the following code to spawn Players.

But when its called both master and client prefabs getting are spawned out of place.

Can someone help me?

[PunRPC]
	public void RPC_SpawnTargets()
	{
		int i = 1;		
        TargetFormation=GameObject.Find("Target Formation").GetComponent<Transform>();
		foreach (Transform child in TargetFormation ) 
		{
			GameObject target = PhotonNetwork.Instantiate(Path.Combine("Prefabs","Target"),child.transform.position,Quaternion.identity,0) as GameObject;
			target.name = "Target ("+i+")";			
			target.transform.parent = child;
			print("Target Function called "+i+" times");			
			i++;
		}
		i = 0;		
	}

	[PunRPC]
	public void RPC_SpawnPlayers()
	{
		int i = 1;		
		PlayerFormation=GameObject.Find("Player Formation").GetComponent<Transform>();
		foreach (Transform child in PlayerFormation ) 
		{
			GameObject player =PhotonNetwork.Instantiate(Path.Combine("Prefabs","Player"),child.transform.position,Quaternion.identity,0) as GameObject;
			player.name = "Player ("+i+")";			
			player.transform.parent = child;		
			i++;
		}
		i=0;
	}

These functions are called like this:

	if (PlayersInGame==PhotonNetwork.playerList.Length)
			{    				
				PhotonView.RPC("RPC_SpawnPlayerCamera",PhotonTargets.MasterClient);
			PhotonView.RPC("RPC_SpawnPlayers",PhotonTargets.MasterClient);			
			PhotonView.RPC("RPC_AssignPlayerButtons",PhotonTargets.MasterClient);				
			PhotonView.RPC("RPC_SpawnTargetCamera",PhotonTargets.Others);
			PhotonView.RPC("RPC_SpawnTargets",PhotonTargets.Others);					
			PhotonView.RPC("RPC_AssignTargetButtons",PhotonTargets.Others);			
			}

This is the complete script.

public class PlayerNetwork : Photon.MonoBehaviour {

	public static PlayerNetwork instance;
	public string PlayerName {get;private set ;}
	private PhotonView PhotonView;
	private int PlayersInGame=0;
	public GameObject Player,Target;	
	private Transform PlayerFormation,TargetFormation;
	private PlayerController a, b, c;
	private TargetController x,y,z;
	private Button a1,b1,c1,x2,y2,z2;

	void Awake ()
	 {		
		instance=this;
		PlayerName="Gamer#"+Random.Range(1000,9999);
		PhotonView=GetComponent<PhotonView>();		
		SceneManager.sceneLoaded+=OnSceneFinishedLoading;				
	}

	private void OnSceneFinishedLoading(Scene scene, LoadSceneMode mode)
	{
		if (scene.name=="test")
		{
			if (PhotonNetwork.isMasterClient)
				MasterLoadedGame();
			else
				NonMasterLoadedGame();			
		}
	}

	private void MasterLoadedGame()
	{
		PhotonView.RPC("RPC_LoadedGameScene",PhotonTargets.MasterClient);		
		PhotonView.RPC("RPC_LoadGameOthers",PhotonTargets.Others);					
	}

	private void NonMasterLoadedGame()
	{		
		PhotonView.RPC("RPC_LoadedGameScene",PhotonTargets.MasterClient);		
	}

	[PunRPC]
	private void RPC_LoadGameOthers()
	{
		PhotonNetwork.LoadLevel(1);
	}

	[PunRPC]
	private void RPC_LoadedGameScene()
	{
		PlayersInGame++;		
		if (PlayersInGame==PhotonNetwork.playerList.Length)
			{
				PhotonView.RPC("RPC_SpawnPlayerCamera",PhotonTargets.MasterClient);
				PhotonView.RPC("RPC_SpawnPlayers",PhotonTargets.MasterClient);			
				PhotonView.RPC("RPC_AssignPlayerButtons",PhotonTargets.MasterClient);				
				PhotonView.RPC("RPC_SpawnTargetCamera",PhotonTargets.Others);
				PhotonView.RPC("RPC_SpawnTargets",PhotonTargets.Others);					
				PhotonView.RPC("RPC_AssignTargetButtons",PhotonTargets.Others);				
			}	
	}	

	[PunRPC]
	private void RPC_SpawnPlayerCamera()
	{		
		Camera.main.transform.position=new Vector3(0f,2f,-7f);
		Camera.main.transform.rotation=Quaternion.Euler(15f,0f,0f);		
	}

	[PunRPC]
	private void RPC_SpawnTargetCamera()
	{	
		Camera.main.transform.position=new Vector3(0f,2f,7f);
		Camera.main.transform.rotation=Quaternion.Euler(15f,180f,0f);
	}

	[PunRPC]
	public void RPC_SpawnTargets()
	{
		int i = 1;		
        TargetFormation=GameObject.Find("Target Formation").GetComponent<Transform>();
		foreach (Transform child in TargetFormation ) 
		{
			GameObject target = PhotonNetwork.Instantiate(Path.Combine("Prefabs","Target"),child.transform.position,Quaternion.identity,0) as GameObject;
			target.name = "Target ("+i+")";			
			target.transform.parent = child;				
			i++;
		}
		i = 0;		
	}

	[PunRPC]
	public void RPC_SpawnPlayers()
	{
		int i = 1;		
		PlayerFormation=GameObject.Find("Player Formation").GetComponent<Transform>();
		foreach (Transform child in PlayerFormation ) 
		{
			GameObject player =PhotonNetwork.Instantiate(Path.Combine("Prefabs","Player"),child.transform.position,Quaternion.identity,0) as GameObject;
			player.name = "Player ("+i+")";			
			player.transform.parent = child;		
			i++;
		}
		i=0;
	}

	[PunRPC]
	private void RPC_AssignPlayerButtons()
	{
		a = GameObject.Find("Player (1)").GetComponent<PlayerController>();       
        b = GameObject.Find("Player (2)").GetComponent<PlayerController>();      
        c = GameObject.Find("Player (3)").GetComponent<PlayerController>();
		a1=GameObject.Find("P1 Jump").GetComponent<Button>();
        a1.onClick.AddListener(a.Jump);
        b1=GameObject.Find("P2 Jump").GetComponent<Button>(); 
        b1.onClick.AddListener(b.Jump);       
        c1=GameObject.Find("P3 Jump").GetComponent<Button>(); 
        c1.onClick.AddListener(c.Jump);		
	}

	[PunRPC]
	private void RPC_AssignTargetButtons()
	{
		x = GameObject.Find("Target (3)").GetComponent<TargetController>();       
        y = GameObject.Find("Target (2)").GetComponent<TargetController>();      
        z = GameObject.Find("Target (1)").GetComponent<TargetController>();
		x2=GameObject.Find("P1 Jump").GetComponent<Button>();
        x2.onClick.AddListener(x.Jump);
        y2=GameObject.Find("P2 Jump").GetComponent<Button>(); 
        y2.onClick.AddListener(y.Jump);       
        z2=GameObject.Find("P3 Jump").GetComponent<Button>(); 
        z2.onClick.AddListener(z.Jump);
	}
}

you need spawn players from master, and others from client.
why doubling it? :slight_smile:

@degeta You have to use Transform.SetParent

Not target.transform.parent = child;