Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

(Solucionado)Problema con la cámara [NETWORK]

Iniciado por eldi, Abril 29, 2016, 02:49:14 PM

Tema anterior - Siguiente tema
Abril 29, 2016, 02:49:14 PM Ultima modificación: Abril 29, 2016, 07:07:09 PM por eldi
Hola, vereis con los componentes que proporciona unity (Network Manager y Network Manager Hud) el caso es que he conseguido que los players conectados se muevan independientemente de quien sea quien pero el problema viene por que las cámaras estan juntadas con el muñeco por lo que cada vez que spawnea el prefab se repiten las camaras y a todos los players se les asigna como cámara la del último player que se ha conectado.He mirado networkview.ismine o algo así pero según unity ya no se usa así que no me vale. Tengo unity 5.1.1.1.Muchas gracias

Simplemente debes de desactivar la cámara en el Prefab del player, y luego desde tu script que controle el "PlayerController" la activas.

[quote author=francoe1" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35768" data-ipsquote-contentcommentid="130394">
Solucionado. Dejo la solución por si acaso alguien lo necesita.
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class cambiodecamaras : NetworkBehaviour {
public GameObject camara1;
public GameObject camara2;
public GameObject jugador;
void Start () {
}

// Update is called once per frame
void Update () {
   if (jugador.GetComponent<NetworkIdentity> ().isLocalPlayer) {
      if (camara1.activeSelf == false && camara2.activeSelf == false) {
         camara1.SetActive (true);
      }
      if (Input.GetKeyUp (KeyCode.C)) {
         if (camara1.activeSelf == true) {
      
            camara1.SetActive (false);
            camara2.SetActive (true);
      
         } else {
            camara1.SetActive (true);
            camara2.SetActive (false);
         }
      }
   }
}
}
Gracias!

Lo que acabas de hacer es lo que te comente, pero realmente es una locura utilizar un GetComponent en la función Update, si decir que tal variable utilizada "isLocalPlayer" pertenece a NetworkBehaviour, eso quiere decir que lo podes utilizar por herencia.El problema radica en que el Jugador Posee varias cámaras, entonces lo que realmente tendrías que hacer es que en el Spawn de los jugadores no locales se destruya el componente Camera.Si bien lo que acabas de hacer funciona no es una solución, estas recién encontrando una posible solución, pero te comento que para programar un juego en Networking primero tienes que saber programar, diseñar y por sobre todo LEER para lograr que algo "FUnCIONE", pero no te desanimes, es simplemente una pequeña recomendación. 

Es un tema que a mi me a crispado bastante ya que en versiones anteriores de unity funcionaba de otro modo y lo tenia todo funcionando correctamente..

ahora con el nuevo network desde unity4 ha cambiado tanto la network como los usos para personajes y la camara.
 
En mi caso tras varios dias de busquedas y pruebas, se puede hacer solo con una camara.



En los controles del pj para que solo puedas mover el tuyo añades 

f (!isLocalPlayer) //para la network

        {

            return ;

        }


en la funcion Update, asi simplemente si no eres el jugador local no podras mover otros personajes, pero tienes que añadir al prefab el componente network identity y el network transform.



Para la cámara justo después de eso haces el getcomponent y le pasas el target.

Etiquetas: