Hola, estoy intentando hacer un juego online en el que son 2 jugadores el Host (Jugador tambien) y el cliente.
El caso es que ambos jugadores se mueven por si mismos y tienen sus respectivas camaras todo esto gestionado con
if (!isLocalPlayer) {
return;
}
Esto lo que me dice es que en los otros scripts si tienen autoridad cada uno de los personajes sin embargo en este no la tiene y nose por que.
Al lio: Hay una mochila con un sphere collider la cual al pasar al lado suya cambia en el script del jugador la variable de objetocercano y despues el mismo jugador en el input manda por Command la variable.
//Codigo que esta dentro del jugador
public GameObject ultimoobjetocerca;
public GameObject offlineultimoobjetocerca;
void Update () {
if (!isLocalPlayer){
return;
}
Cmd_objetocercano ();
if (Input.GetKeyDown(KeyCode.F)){
Cmd_Destruir ();
}
}
[Command]
public void Cmd_objetocercano(){
Debug.LogError (this.GetComponent<NetworkIdentity>().netId);
ultimoobjetocerca = offlineultimoobjetocerca;
}
//Codigo de la mochila
void OnTriggerStay(Collider colstar){
if (colstar.tag == "Player") {
if (!colstar.GetComponent<NetworkIdentity> ().isLocalPlayer) {
return;
}
colstar.GetComponent<cogeritem> ().offlineultimoobjetocerca = this.gameObject;
}
}
Datos adicionales:
La mochila posee un network identity con autoridad local
En el Host si que tiene autoridad y funciona perfectamente.
Solucionado.
void OnTriggerStay(Collider colstar){
if (colstar.tag == "Player") {
//Aquí estaba el error
if (!colstar.GetComponent<NetworkIdentity> ().localPlayerAuthority) {
return;
}
colstar.GetComponent<detectarobjetos> ().offlineultimoobjetocerca = this.gameObject;
}
}