_________________________________________________________________________________
Lo que hace este script es muy sencillo: crea una una barra con una raya roja en su interior que se desplaza a lo largo de la barra, dependiendo de tu posición en el mapa. Para que lo entiendas te doy un ejemplo: el típico juego de carreras en el que mientras que avanzas en el circuito el marcador de tu coche también avanza por el mini mapa que normalmente tienes en la esquina de la pantalla. Si aun no lo has entendido aquí tienes unas imágenes de muestra:
Como podemos ver al desplazarnos en el circuito la raya roja también se ha desplazado, mostrando nuestra posición en el circuito en referencia a la salida (start) y a la meta (End)
Bien pues este es el script:
// Guión de Will Goldstone en Unity3dstudent.com
// Traducido por Unity3D-ES.blogspot.com
- // Establece el ancho y alto de la barra
- var barWidth : float = 500; //Ancho
- var barHeight : float = 25; //Alto
- // Textura de la raya que se mueve a lo largo de la barra. Arrastrar en//el inspector.
- var progIcon : Texture;
- // posicion de la raya en cada momento
- private var barProgress : float;
- // Objetos vacíos que marquen la posición inicial y final del circuito.//Arrastrar en el inspector.
- var startPoint : Transform;
- var endPoint : Transform;
- // posición inicial del jugador
- var playerPos : Transform;
- function Update(){
- // La longitud del circuito es la posicion final - p. de inicio
- var totalDist : float = endPoint.position.x – startPoint.position.x;
- // Distancia entre la posicion de inicio y la p. inicial del jugador
- var playerDist : float = playerPos.position.x – startPoint.position.x;
- //el progreso del jugador = porcentaje del circuito recorrido//progreso = (Distancia entre jugador e inicio) / (longitud del circuito) * 100
- var playerProgress : float = playerDist / totalDist * 100;
- //Aplica el porcentaje recorrido del circuito a la barra.
- barProgress = playerProgress / 100 * barWidth;
- }
- function OnGUI() {
- //Se crea un grupo de GUI con el ancho de la barra y dos veces la//altura de la barra, para dejar espacio para los text de "Start"// y "End" debajo de la barra.
- GUI.BeginGroup (new Rect (10, 10, barWidth, barHeight*2));
- //Dibuja una GUI Box para hacer de barra, con el ancho y largo que tu//estableciste
- GUI.Box(Rect(0,0,barWidth,barHeight),"");
- // se crea una Label que dibuje el progreso del icono, se usa la variable// barProgress para establecer la posición en X y 0 como altura, porque//la barra solo se mueve horizontalmente
- GUI.Label (Rect (barProgress, 0, progIcon.width, progIcon.height),
- progIcon);
- // Se añade el inicio y el final de la Label
- GUI.Label(Rect(progIcon.width/2, 25, 50, barHeight),"Start");
- GUI.Label(Rect(barWidth-30, 25, 100, barHeight),"End");
- GUI.EndGroup();
- }
- // Guión de Will Goldstone en Unity3dstudent.com// Traducido y modificado por Unity3D-ES.blogspot.com
- // Establece el ancho y alto de la barra
- var barWidth : float = 500; //Ancho
- var barHeight : float = 25; //Alto
- // posicion de la raya en cada momento
- private var barProgress : float;
- // Objetos vacíos que marquen la posición inicial y final del circuito.//Arrastrar en el inspector.
- var startPoint : Transform;
- var endPoint : Transform;
- // posición inicial del jugador
- var playerPos : Transform;
//largo de la barra
var sign : GameObject; - function Update(){
- // La longitud del circuito es la posicion final - p. de inicio
- var totalDist : float = endPoint.position.x – startPoint.position.x;
- // Distancia entre la posicion de inicio y la p. inicial del jugador
- var playerDist : float = playerPos.position.x – startPoint.position.x;
- //el progreso del jugador = porcentaje del circuito recorrido//progreso = (Distancia entre jugador e inicio) / (longitud del circuito) * 100
- var playerProgress : float = playerDist / totalDist * 100;
- //Aplica el porcentaje recorrido del circuito a la barra.
- barProgress = playerProgress / 100 * barWidth;
// el jugador se mueve.
sign.transform.pixelInset = Rect(barProgress,0, 25, barHeight); - }
- function OnGUI()
- //Dibuja una GUI Box para hacer de barra, con el ancho y largo que tu//estableciste
- GUI.Box(Rect(0,0,barWidth,barHeight),"");
- }