En esta ocasión os traigo un ejemplo de como crear efectos de escalado en los botones de la GUI.
#pragma strict #pragma downcast import System; // EfectosEscalaGui.js var alfaGUI : float = 1; private var escala : float = 1; //_Efecto boton con escala over private var escalaOver : float = 0; var escalaOverBoton : float = 5f; var rectBoton : Rect = new Rect (20, 20, 80, 80); var textura_0 : Texture2D; //Efecto box con escala lateral arriba derecha, abajo izquierda var rectBox : Rect = new Rect (100, 20, 20, 20); var V2_0 : Vector2 = Vector2(80, 80); var velocidadEscalaV2_0 : float = 20f; //Efecto box con escala vertical arriba abajo var rectBox1 : Rect = new Rect (180, 20, 80, 20); var V2_1 : Vector2 = Vector2(80, 80); var velocidadEscalaV2_1 : float = 20f; //Efecto box con escala lateral derecha izquierda var rectBox2 : Rect = new Rect (260, 20, 20, 80); var V2_2 : Vector2 = Vector2(80, 80); var velocidadEscalaV2_2 : float = 20f; // Pantalla private var ancho : int = 0; private var alto : int = 0; var log : boolean = true; function OnGUI () { var e1 = Input.mousePosition; e1.y = Screen.height - e1.y; GUI.BeginGroup (new Rect (0, 0, Screen.width, Screen.height)); GUI.color.a = alfaGUI; //Inicio:: Efecto boton con escala over var r : Rect = Rect((rectBoton.x*escala)-escalaOver,(rectBoton.y*escala)-escalaOver, (rectBoton.width*escala)+escalaOver*2,(rectBoton.height*escala)+escalaOver*2); if (GUI.Button(r,textura_0)){ if(log){Debug.Log("Click Boton");} } if (r.Contains(e1)){ if(log){Debug.Log("Dentro del rectangulo del boton");} escalaOver = escalaOverBoton; }else{ escalaOver = 0; } //Fin :: Efecto boton con escala over //Inicio:: Efecto box con escala lateral arriba derecha, abajo izquierda var r2 : Rect = Rect(rectBox.x*escala,rectBox.y*escala, rectBox.width*escala,rectBox.height*escala); GUI.Box(r2,textura_0); if (rectBox.width*escala < V2_0.x*escala){ if(log){Debug.Log("Escalando ancho rectBox hasta V2_0.x");} rectBox.width += velocidadEscalaV2_0*Time.deltaTime; } if (rectBox.width > V2_0.x){ rectBox.width = V2_0.x; } if (rectBox.height*escala < V2_0.y*escala){ if(log){Debug.Log("Escalando alto rectBox hasta V2_0.y");} rectBox.height += velocidadEscalaV2_0*Time.deltaTime; } if (rectBox.height > V2_0.y){ rectBox.height = V2_0.y; } //Fin :: Efecto box con escala lateral arriba derecha, abajo izquierda //Inicio:: Efecto box con escala vertical arriba abajo var r3 : Rect = Rect(rectBox1.x*escala,rectBox1.y*escala, rectBox1.width*escala,rectBox1.height*escala); GUI.Box(r3,textura_0); if (rectBox1.width*escala < V2_1.x*escala){ if(log){Debug.Log("Escalando ancho rectBox1 hasta V2_1.x");} rectBox1.width += velocidadEscalaV2_1*Time.deltaTime; } if (rectBox1.width > V2_1.x){ rectBox1.width = V2_1.x; } if (rectBox1.height*escala < V2_1.y*escala){ if(log){Debug.Log("Escalando alto rectBox1 hasta V2_1.y");} rectBox1.height += velocidadEscalaV2_1*Time.deltaTime; } if (rectBox1.height > V2_1.y){ rectBox1.height = V2_1.y; } //Fin :: Efecto box con escala vertical arriba abajo //Inicio:: Efecto box con escala lateral derecha izquierda var r4 : Rect = Rect(rectBox2.x*escala,rectBox2.y*escala, rectBox2.width*escala,rectBox2.height*escala); GUI.Box(r4,textura_0); if (rectBox2.width*escala < V2_2.x*escala){ if(log){Debug.Log("Escalando ancho rectBox2 hasta V2_2.x");} rectBox2.width += velocidadEscalaV2_2*Time.deltaTime; } if (rectBox2.width > V2_2.x){ rectBox2.width = V2_2.x; } if (rectBox2.height*escala < V2_2.y*escala){ if(log){Debug.Log("Escalando alto rectBox2 hasta V2_2.y");} rectBox2.height += velocidadEscalaV2_2*Time.deltaTime; } if (rectBox2.height > V2_2.y){ rectBox2.height = V2_2.y; } //Fin :: Efecto box con escala lateral derecha izquierda GUI.EndGroup (); if (GUI.Button(Rect(Screen.width-80,10,80,20),"Reset")){ if(log){Debug.Log("Reset");} rectBox = new Rect (100, 20, 20, 20); rectBox1 = new Rect (180, 20, 80, 20); rectBox2 = new Rect (260, 20, 20, 80); } } function Start () { } function Update () { ancho = Screen.width; alto = Screen.height; EscalaGUI (); } function EscalaGUI () { var n : float = ancho; var n1 : float = 0; n1 = Math.Round(n, 5.0f); escala = n1 / 1000.0f; //if(log){Debug.Log("Escala = " + escala.ToString());} }
No hay comentarios:
Publicar un comentario