Noticias

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

Minimapa Posicion relativa GUI de un GameObject(SOLVENTADO)

Iniciado por Midgard, Diciembre 16, 2015, 04:36:33 PM

Tema anterior - Siguiente tema
Diciembre 16, 2015, 04:36:33 PM Ultima modificación: Diciembre 17, 2015, 02:38:28 AM por Midgard
Hola gente.
Llevo rondando esto durante varios días.Tengo una línea indicadora donde quiero que salga un iconito con la posición relativa de mi personaje en la escena, un minimapa horizontal de izquierda a derecha.

Debido a que estamos en un escenario tridimensional, marco el punto 0,0,0 con un objeto, y el punto 100,0,0 con otro, para poder referenciar en este espacio infinito.
Mi Screen mide 1280 de ancho. Entonces quiero que salgan representados en la linea indicadora, en el GUI, con unos márgenes de 20 pixeles a sus lados, para que no quede justo en los límites de la pantalla.

Quiero que cuando el GameObject "Personaje", el cual se mueve de izquierda a derecha, se mueva, el iconito rosa en mi imagen, se mueva respectivamente por la línea indicadora en la posicion relativa que le corresponde.

El código que estoy utilizando de momento. Pero no lo consigo.
      Vector3 p1 = Camera.main.WorldToScreenPoint(punto0.transform.position) ; //Calculo el punto 0,0,0
   Vector3 p2 = Camera.main.WorldToScreenPoint(pj.transform.position) ; // calculo la posicion del personaje
   var distance = Vector3.Distance(p1, p2);  //calculo la distancia entre el punto 0 y el personaje
   
   GUI.Box(new Rect( distance    , Screen.height - 270, 60, 60) , " --cursor "   ); // este es el iconito del personaje en el minimapa
Llevo tiempo con esto y no lo consigo porque no me coinciden las distancias.

¿Conocéis alguna forma de hacer esto?
¿Debería utilizar UI en vez de GUI?...
¿Algún ejemplo?

Gracias.
 

Diciembre 16, 2015, 10:31:53 PM #1 Ultima modificación: Diciembre 17, 2015, 12:58:04 AM por Midgard

He posteado algo parecido pero más simple para que no cree confusión.

Diciembre 16, 2015, 11:31:04 PM #2 Ultima modificación: Diciembre 16, 2015, 11:34:53 PM por Antonio
Sería una regla de 3.

Longitud total de la línea    -> punto destino
X                                        ->  Posición actual del jugador

X = (Longitud total de la línea * Posición actual del jugador) / punto destino.

De modo que, si tu línea, mide 1280, el punto destino es 100 y

- ¿tu jugador está en el punto 68?.
X =  (68 * 1280) / 100 = 870.4
- ¿tu jugador está en el punto 50?.
X =  (50 * 1280) / 100 = 640
- ¿tu jugador está en el punto 100?.
X =  (100 * 1280) / 100 = 1280
 ¿Que la línea no es 1280 porque tiene márgenes de 20 píxeles a cada lado?, entonces la línea es de 1240.
X = (posición actual del jugador * 1240) / 100
Como ves, en X es el punto donde tendrías que poner el gráfico rosa del jugador en la línea de trayectoria.

Correcto y bien explicado, funciona perfectamente.
Mil gracias Adngel ! 

Etiquetas: