Barra de progreso en un circuito

Este script es original de www.unity3dstudent.com
_________________________________________________________________________________

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


  1. // Establece el ancho y alto de la barra
  2. var barWidth : float = 500;  //Ancho
  3. var barHeight : float = 25;  //Alto
  4. // Textura de la raya que se mueve a lo largo de la barra. Arrastrar en 
    //el inspector.
  5. var progIcon : Texture;
  6. // posicion de la raya en cada momento
  7. private var barProgress : float;
  8. // Objetos vacíos que marquen la posición inicial y final del circuito.
    //Arrastrar en el inspector.
  9. var startPoint : Transform;
  10. var endPoint : Transform;
  11. // posición inicial del jugador
  12. var playerPos : Transform;
  13. function Update(){
  14.  // La longitud del circuito es la posicion final - p. de inicio
  15.  var totalDist : float = endPoint.position.x – startPoint.position.x;
  16.  // Distancia entre la posicion de inicio y la p. inicial del jugador
  17.  var playerDist : float = playerPos.position.x – startPoint.position.x;
  18.  //el progreso del jugador = porcentaje del circuito recorrido
     //progreso = (Distancia entre jugador e inicio) / (longitud del circuito) * 100
  19.  var playerProgress : float = playerDist / totalDist * 100;
  20.  //Aplica el porcentaje recorrido del circuito a la barra.
  21.  barProgress = playerProgress / 100 * barWidth;
  22. }
  23. function OnGUI() {
  24.  //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.
  25.  GUI.BeginGroup (new Rect (1010, barWidth, barHeight*2));
  26.   //Dibuja una GUI Box para hacer de barra, con el ancho y largo que tu
      //estableciste
  27.   GUI.Box(Rect(0,0,barWidth,barHeight),"");
  28.   // 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
  29.   GUI.Label (Rect (barProgress, 0, progIcon.width, progIcon.height),
  30.         progIcon);
  31.   // Se añade el inicio y el final de la Label
  32.   GUI.Label(Rect(progIcon.width/22550, barHeight),"Start");
  33.   GUI.Label(Rect(barWidth-3025100, barHeight),"End");
  34.  GUI.EndGroup();
  35. }



Y este es el mismo script modificado por mí de manera que creo que es más fácil de entender, solo que no te pone Start y End en los extremos de la barra:


  1. // Guión de Will Goldstone en Unity3dstudent.com
    // Traducido y modificado por Unity3D-ES.blogspot.com

    1. // Establece el ancho y alto de la barra
    2. var barWidth : float = 500;  //Ancho
    3. var barHeight : float = 25;  //Alto

    4. // posicion de la raya en cada momento
    5. private var barProgress : float;

    6. // Objetos vacíos que marquen la posición inicial y final del circuito.
      //Arrastrar en el inspector.
    7. var startPoint : Transform;
    8. var endPoint : Transform;

    9. // posición inicial del jugador
    10. var playerPos : Transform;

      //Este es un GUI Texture con la textura del icono que se desplaza a lo
      //largo de la barra
      var sign : GameObject;

    11. function Update(){

    12.  // La longitud del circuito es la posicion final - p. de inicio
    13.  var totalDist : float = endPoint.position.x – startPoint.position.x;

    14.  // Distancia entre la posicion de inicio y la p. inicial del jugador
    15.  var playerDist : float = playerPos.position.x – startPoint.position.x;

    16.  //el progreso del jugador = porcentaje del circuito recorrido
       //progreso = (Distancia entre jugador e inicio) / (longitud del circuito) * 100
    17.  var playerProgress : float = playerDist / totalDist * 100;

    18.  //Aplica el porcentaje recorrido del circuito a la barra.
    19.  barProgress = playerProgress / 100 * barWidth;

       //Se posiciona la raya en la barra y hace que su posición varíe cuando
       // el jugador se mueve.
       sign.transform.pixelInset = Rect(barProgress,0, 25, barHeight);
    20. }
    21. function OnGUI()
    22.   //Dibuja una GUI Box para hacer de barra, con el ancho y largo que tu
        //estableciste
    23.   GUI.Box(Rect(0,0,barWidth,barHeight),"");
    24. }

Penulis : Oscar ~ Sebuah blog yang menyediakan berbagai macam informasi

Artikel Barra de progreso en un circuito ini dipublish oleh Oscar pada hari . Semoga artikel ini dapat bermanfaat.Terimakasih atas kunjungan Anda silahkan tinggalkan komentar.sudah ada 0 komentar: di postingan Barra de progreso en un circuito