Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Jose134 en Mayo 17, 2015, 10:21:42 PM

Título: NameTag que mire a los otros jugadores Photon
Publicado por: Jose134 en Mayo 17, 2015, 10:21:42 PM
Hola, estoy trasteando con photon y me he encontrado con un problemilla, estoy intentando hacer un name tag que mire a los otros jugadores (como en minecraft y muchos otros juegos) el problema viene a asignarle hacia que objeto rotar, necesito que rote hacia el resto de jugadores,  y obviamente va a necesitar una rotacion distinta para cada jugador. Alguna idea de como empezar???
Título: NameTag que mire a los otros jugadores Photon
Publicado por: en Mayo 19, 2015, 03:15:00 AM
Hola, no entiendo bien el problema que planteas intenta explicarlo mejor para ver si puedo ayudarte, por que no se si lo que quieres es que por ejemplo un creeper mire al jugador cuando se acerque a x distancia, por que si ese fuese el caso es sensillo de xplicar.
Título: NameTag que mire a los otros jugadores Photon
Publicado por: Jose134 en Mayo 19, 2015, 03:10:41 PM
El problema que tengo es para hacer que encima de cada jugador salga su nombre, por ahora estoy usando un 3D Text (ahora estoy con el movil luego os paso el codigo), pero no funciona bien del todo y ademas tengo dudas a la hora de asignar al jugador al que mirar, ya que en cada cliente los NameTag deberan tener un target distinto
 
EDIT:
 
Parte del NetworkPlayer.cs

if(!photonView.isMine){
transform.parent.Find("NameTag").gameObject.GetComponent<NameTagLooker>().target = PhotonView.Find(PhotonNetwork.player.ID).gameObject.transform;
}

Eso esta dentro del Update, al principio lo tenia en el Start pero ya que me daba NullReferenceException en uno de los dos probe a cambiarlo, uno de los dos (no me ascuerdo si el primero que se conecta o el segundo) funcionaba pero luego al cambiar a la otra ventana dejaron de funcionar los dos. He comprobado y el Run in Background esta activado asi que no se me ocurre nada
Título: NameTag que mire a los otros jugadores Photon
Publicado por: en Mayo 20, 2015, 04:09:35 AM
xD no se como explicartelo bien pues te hice un demo: http://www.mediafire.com/download/s81ta5qs41bcacc/MostrarNombres.unitypackage
 
Saludos y espero te sirva.
Título: NameTag que mire a los otros jugadores Photon
Publicado por: en Mayo 20, 2015, 05:56:51 AM
Me puse a investigar sobre como puedo mejorarlo y lo logre n.n aqui tienes.
 
colocar este en la algun Objeto este detecta los jugadores y escribe el nombre:

public var Jugadores:GameObject[]; // Almasena los Objetos de nombre.
public var Tag:String[]; // Los tags que se tomaran en cuanta para colocar los nombres.
private var P:Vector2;
function Update(){
}
function OnGUI () {
for(var x=0;x<Tag.Length;x++){
   Jugadores = GameObject.FindGameObjectsWithTag(Tag
  • );
   for(var x1=0;x1<Jugadores.Length;x1++){
      var Script:Jugador = Jugadores[x1].gameObject.GetComponent("Jugador");
      P = Camera.main.WorldToViewportPoint(Script.PNombre.position);// Busca la posicion dada en la Pantalla de la camara marcada.
      P.y += -1;P.y = -P.y;// Es para invertir los numeros ya que la mantalla superior inicia desde 0 y no la de abajo.
      // Cambias jugador por el Script donde contiene el nombre del jugador y el TextMesh o usas los mismos Scripts.
      GUI.Box(Rect(Screen.width*P.x-50/*se resta la mitad del Ancho de la GUI "50"*/,Screen.height*P.y,100,20),Script.Nombre);
   }
}
}

este es obcional este lo ise para identificar el nombre del jugador:

public var Nombre:String;
public var PNombre:Transform;

para utilizar tu script solo tienes que cambiar la variable de tipo Script.Jugador por el del script donde contengas el nombre del jugador,
y cambiar la Script.Nombre por la variable que contenga el nombre y Script.PNombre por la variable que contenga el transform con la posicion donde va el nombre.
 
aqui la demo actualizada http://www.mediafire.com/download/s81ta5qs41bcacc/MostrarNombres.unitypackage
 
Espero y te sirva n.n
 
 
EDITO:
 
  Con este script no nesesitaras rotar los Nombres ya que crea una GUI con el nombre.
Título: NameTag que mire a los otros jugadores Photon
Publicado por: Jose134 en Mayo 20, 2015, 05:12:02 PM
Muchas gracias me ha sido de ayuda
Título: NameTag que mire a los otros jugadores Photon
Publicado por: Jose134 en Mayo 21, 2015, 12:43:41 PM
Hola de nuevo, me he encontrado con un problemilla...
 
el caso es que el NameTag tambien se muestra si miras hacia la direccion contraria, no tengo ni idea de por que
 
os dejo una screenshot (se ve "rara" porque salen los dos monitores) y el script que hice a partir del que mackshoon me dio
 
 (//<fileStore.core_Attachment>/monthly_05_2015/post-22886-0-67710600-1432204975.png)
 
como se puede ver, en unity sale el NameTag de Player2 pero en la otra ventana se ve que Player2 esta detras del Player1
 
NameTagLooker.cs

using UnityEngine;
using System.Collections;
public class NameTagLooker : Photon.MonoBehaviour {
public Vector3 offset = new Vector3(0,2,0);
[RPC]
void OnGUI () {
   if(!photonView.isMine){
      Vector3 textPos = Camera.main.WorldToScreenPoint(transform.position + offset);
      textPos.y = Screen.height - textPos.y;
      GUI.Box(new Rect(textPos.x - 50,textPos.y,100,20), "" + photonView.owner.name);
   
   }
}
}
Título: NameTag que mire a los otros jugadores Photon
Publicado por: en Mayo 23, 2015, 02:58:00 PM
Lol no sabia que pasa eso ya lo probe y me pasa igual, perdona la tardanza es que no estaba en casa xD.
 
Lo que tienes que hacer para corregir el error es usar OnBecameVisible() para activar el script cuando se puede ver y OnBecameInvisible() para desactivarlo cuando no se ve en la camara, lo malo y bueno desde cada punto de vista xD es que al bloquearse con un objeto se oculta la etiqueta.
Título: NameTag que mire a los otros jugadores Photon
Publicado por: en Mayo 23, 2015, 03:14:43 PM
O simplemente usas un Raycast para confirmar que este frente a la camara... espero y mi respuesta no aya llegado tarde xD.
 
no edite la anterior por que no se quiso editar D:! y no se la razon...
Título: NameTag que mire a los otros jugadores Photon
Publicado por: Jose134 en Mayo 23, 2015, 04:34:10 PM
muchas gracias me pondre con ello. No conocia el OnBecameVisible() en fin todos los dias se aprende algo nuevo (incluso los findes xD)