- Home /
This post has been wikified, any user with enough reputation can edit it.
isLocalPlayer is ReadOnly I can not set an object as a local player?(NetworkManager)
I was splitting two teams over network red ,and blue teams but when setting the player prefab in the inspector of the network manager I choose wether auto create the player prefab by round robin or random so when it is spawned it is spawned automatically ,so I went to check if the player that i have spawned isLocalPlayer to move it use it but it keeps on false ,any help would be appreciated.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking;
public class PlayerController : NetworkBehaviour {
public GameObject bulletPrefab;
public Transform bulletSpawn;
void Start(){
if (!isLocalPlayer)
Debug.Log ("This is not local Player");
else
Debug.Log ("This is the local Player");
}
// Update is called once per frame
void Update () {
if (!isLocalPlayer) {
return;
} else if (isLocalPlayer) {
/*Remember that it is not auto created SO IT IS NOT LOCAL PLAYER (SEARCH)IMPORTANT
how to set an object as a local player*/
float x = Input.GetAxis ("Horizontal") * Time.deltaTime * 150.0f;
float z = Input.GetAxis ("Vertical") * Time.deltaTime * 3.0f;
transform.Rotate (0, x, 0);
transform.Translate (0, 0, z);
if (Input.GetButton("Fire1")) {
CmdFire ();
}
}
}
[Command]
void CmdFire(){
//Instantiate bullet from prefab
GameObject bullet = (GameObject)Instantiate (bulletPrefab, bulletSpawn.position, bulletSpawn.rotation);
//Add velocity to the bullet
bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * 20.0f;
//Spawn the bullet on the clients
NetworkServer.Spawn(bullet);
//Destroy the bullet after 2 seconds
Destroy(bullet,2);
}
} //this is the Player Spawner Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class WorldScript : NetworkBehaviour {
public Transform[] RedSpawnPoints;
public Transform[] BlueSpawnPoints;
public GameObject playerPrefab;
public override void OnStartServer(){
Vector3 spawnPosition = Vector3.zero;
if (playerPrefab.tag == "Red Team") {
spawnPosition = RedSpawnPoints [Random.Range (0, RedSpawnPoints.Length)].transform.position;
Debug.Log ("You are in the Red Team");
} else if (playerPrefab.tag == "Blue Team") {
spawnPosition = BlueSpawnPoints [Random.Range (0, BlueSpawnPoints.Length)].transform.position;
Debug.Log ("You are in the Blue Team");
} else
return;
Quaternion spawnRotation = Quaternion.Euler (0.0f, Random.Range (0.0f, 360.0f), 0.0f);
GameObject player = (GameObject)Instantiate (playerPrefab, spawnPosition, spawnRotation);
NetworkServer.Spawn (player);
}
}
Comment