Quantcast
Channel: Questions in topic: "see"
Viewing all articles
Browse latest Browse all 35

Cant see Player moving Multiplayer

$
0
0
Hi guys i've been following this great tutorial on youtube but now i cant seem to get the same result as him.I followed him twice but same error.I cant see my player moving in the other game.Here's my script but i tried looking through it a few times but i cant see any errors. NetworkScript using UnityEngine; using System.Collections; using System.Collections.Generic; public class NetworkManager : MonoBehaviour { public string PlayerName; public string MatchName; public static NetworkManager Instance; public ListPlayerList = new List(); public Player MyPlayer; public GameObject SpawnPlayer; public bool MatchStarted; //public List SpawnPoints = new List(); public GameObject[] SpawnPoints; //public bool MatchLoaded; // Use this for initialization void Start () { Instance = this; DontDestroyOnLoad(gameObject); } // Update is called once per frame void Update () { PlayerName = PlayerPrefs.GetString("PlayerName"); } public void StartServer(string ServerName, int MaxPlayers) { Network.InitializeSecurity(); Network.InitializeServer (MaxPlayers, 25565, true); MasterServer.RegisterHost("Tut", ServerName, ""); Debug.Log("Started Server"); } void OnPlayerConnected(NetworkPlayer id) { //networkView.RPC ("Server_PlayerJoined", RPCMode.Server, PlayerName, id); //foreach (Player pl in PlayerList) //{ networkView.RPC("Client_PlayerJoined",id,MyPlayer.PlayerName, MyPlayer.OnlinePlayer); //} } void OnServerInitialized() { Server_PlayerJoined (PlayerName, Network.player); } void OnConnectedToServer() { networkView.RPC ("Server_PlayerJoined", RPCMode.Server, PlayerName, Network.player); } void OnPlayerDisconnected(NetworkPlayer id) { networkView.RPC ("RemovePlayer", RPCMode.All, id); Network.Destroy (GetPlayer (id).Manager.gameObject); Network.RemoveRPCs(id); } void OnDisconnectedFromServer(NetworkDisconnection info) { PlayerList.Clear (); Application.LoadLevel (0); } [RPC] public void Server_PlayerJoined(string Username,NetworkPlayer id) { networkView.RPC("Client_PlayerJoined", RPCMode.All,PlayerName, id); } [RPC] public void Client_PlayerJoined(string Username,NetworkPlayer id) { Player temp = new Player(); temp.PlayerName = Username; temp.OnlinePlayer = id; PlayerList.Add(temp); if (Network.player == id) { MyPlayer = temp; GameObject LastPlayer = Network.Instantiate(SpawnPlayer,Vector3.zero,Quaternion.identity,0) as GameObject; temp.Manager = LastPlayer.GetComponent(); } } [RPC] public void RemovePlayer(NetworkPlayer id) { Player temp = new Player (); foreach(Player pl in PlayerList) { if(pl.OnlinePlayer == id) { temp = pl; } } if(temp !=null) { PlayerList.Remove (temp); } } [RPC] public void LoadLevel() { MatchStarted = true; Application.LoadLevel (1); } /*void OnLevelWasLoaded(int level) { if (MatchStarted == true) //SpawnPoints = LevelManager.Ins.SpawnPoints; } */ public static Player GetPlayer(NetworkPlayer id){ foreach (Player pl in Instance.PlayerList) { if(pl.OnlinePlayer == id) return pl; } return null; } void OnGUI() { if (MatchStarted == true && !MyPlayer.IsAlive) { if(GUI.Button(new Rect(0,0,50,20),"Spawn")) { //MyPlayer.Manager.networkView.RPC("Spawn",RPCMode.All); int SpawnIndex = Random.Range(0, LevelManager.Ins.SpawnPoints.Length - 1); MyPlayer.Manager.FirstPerson.localPosition = LevelManager.Ins.SpawnPoints[SpawnIndex].transform.position; MyPlayer.Manager.FirstPerson.localRotation = LevelManager.Ins.SpawnPoints[SpawnIndex].transform.rotation; MyPlayer.Manager.networkView.RPC("Spawn",RPCMode.All); } } } [System.Serializable] public class Player{ public string PlayerName; public NetworkPlayer OnlinePlayer; public float Health = 100; public Character Manager; public bool IsAlive; } } CharacterScript: using UnityEngine; using System.Collections; public class Character : MonoBehaviour { public Transform FirstPerson; public Transform ThirdPerson; public NetworkManager.Player MyPlayer; public Vector3 CurPos; public Quaternion CurRot; // Use this for initialization void Start () { MyPlayer.Manager = this; MyPlayer = NetworkManager.Instance.MyPlayer; FirstPerson.gameObject.SetActive (false); ThirdPerson.gameObject.SetActive (false); DontDestroyOnLoad (gameObject); } // Update is called once per frame void Update () { } [RPC] void Server_TakeDamage (float Damage) { networkView.RPC ("Client_TakeDamage", RPCMode.Server, Damage); } [RPC] void Client_TakeDamage (float Damage) { MyPlayer.Health -= Damage; Debug.Log (MyPlayer.Health); if (MyPlayer.Health <= 0) { networkView.RPC("Die",RPCMode.All); MyPlayer.IsAlive = false; MyPlayer.Health = 0; } } [RPC] void Spawn() { MyPlayer.Health = 100; MyPlayer.IsAlive = true; if (networkView.isMine) { FirstPerson.gameObject.SetActive (true); ThirdPerson.gameObject.SetActive (false); } else { FirstPerson.gameObject.SetActive (false); ThirdPerson.gameObject.SetActive (true); } } [RPC] void Die() { MyPlayer.IsAlive = false; FirstPerson.gameObject.SetActive (false); ThirdPerson.gameObject.SetActive (false); } void OnSerializedNetworkView(BitStream stream, NetworkMessageInfo info) { if (stream.isWriting) { CurPos = FirstPerson.position; CurRot = FirstPerson.rotation; stream.Serialize(ref CurPos); stream.Serialize(ref CurRot); } else { stream.Serialize(ref CurPos); stream.Serialize(ref CurRot); ThirdPerson.position = CurPos; ThirdPerson.rotation = CurRot; } } } I hope you guys cant help me as i've been stuck with this problem for a few days but cant find a fix.

Viewing all articles
Browse latest Browse all 35

Trending Articles