jueves, 23 de mayo de 2013

Como crear un menú de armas deslizable con planos en Unity GameEngine - Parte 2




Saludos amigos.

Continuamos con la segunda parte del videotutorial de como crear un menú deslizable con unos plano, en este caso, para un menú de armas pero aplicable a cualquier tipo de menú.

En este segundo vídeo, veremos como funcionan internamente los scripts.

Parte 1:







#pragma strict

//SliderCNT.js

var prefabPlanoSlider : GameObject;
var CNTslider :GameObject;
var PosSlider : Vector3;
var CNTarmas :GameObject;
var offsetSlider : float;
private var menuArmas : boolean = false;
private var numTexturas : int;
var texturasArmas : Texture2D [];

var ratioMenu : float = 0.5;
private var nextRatioMenu : float = 0.0;

function Update () {
 
 if(Input.GetKeyDown (KeyCode.M) && Time.time > nextRatioMenu){
  nextRatioMenu = Time.time + ratioMenu;
  SwitchMenuArmas ();
 }
 CNT ();
 Limites ();
 RecargaMenuArmas ();
 IluminaPlano ();
 
}

function OnGUI () {
 
 if(menuArmas){
     GUI.BeginGroup (new Rect (Screen.width / 2 - 55,Screen.height - 190,110,80));
   GUI.Box (new Rect (0,0,110,60),"");
         if (GUI.Button(Rect(0,20,55,20),"-")){
          numTexturas--;
          if(numTexturas >= 0){
           CNTslider.transform.position.x += offsetSlider;
          }
         }
         if (GUI.Button(Rect(55,20,55,20),"+")){
          numTexturas++;
          if(numTexturas <= texturasArmas.Length-1){
           CNTslider.transform.position.x -= offsetSlider;
          }
         }
    if (GUI.Button(Rect(0,40,55,20),"<<")){
          numTexturas = 0;
          CNTslider.transform.position.x = 0;
         }
         if (GUI.Button(Rect(55,40,55,20),">>")){
          numTexturas = texturasArmas.Length-1;
          CNTslider.transform.position.x = 0;
          CNTslider.transform.position.x -= (texturasArmas.Length-1)*offsetSlider;
         }
    if (GUI.Button(Rect(0,60,110,20),"Seleccionar")){
          ArmasCNT.armaActiva = numTexturas;
         }
    GUI.Box (new Rect (0,0,110,20),"Textura " + (numTexturas+1));
  GUI.EndGroup ();
    }

}

function SwitchMenuArmas () {
 
 if(menuArmas){
  menuArmas = false;
  CierraMenuArmas ();
 }else{
  menuArmas = true;
  CreaSliderMenuArmas ();
 }
}

function CNT () {
 
 if(CNTarmas != null){
  var armas : ArmasCNT = CNTarmas.GetComponent("ArmasCNT");
  texturasArmas = armas.texturasArmas;
 }
 
}

private var objSlidersTexturas : GameObject[];

function CreaSliderMenuArmas () {
 
 objSlidersTexturas = new GameObject[texturasArmas.Length];
 if(menuArmas){
  CNTslider.transform.position.x = 0;
  for(var i : int =0;i < texturasArmas.Length;i++){
   var clon : GameObject = Instantiate (prefabPlanoSlider, 
    Vector3(PosSlider.x+(offsetSlider*i),PosSlider.y,PosSlider.z), 
    Quaternion.Euler (90, 180, 0));
   clon.renderer.material.mainTexture = texturasArmas[i];
   clon.transform.parent = CNTslider.transform;
   //clon.AddComponent("PlanoSlider");
   //DaId (clon, i);
   objSlidersTexturas[i] = clon;
   clon.name = "Textura"+i;
  }
 }
 
}

function CierraMenuArmas () {
 
 for(var i : int = 0;i < objSlidersTexturas.Length;i++){
  Destroy (objSlidersTexturas[i]);
 }
 CNTslider.transform.position.x = 0;
 
}

function RecargaMenuArmas () {
 
 if(menuArmas && texturasArmas.Length != objSlidersTexturas.Length){
  CierraMenuArmas ();
  CreaSliderMenuArmas ();
 }
 
}

function Limites () {
  
 if (numTexturas < 0){
  numTexturas = 0;
 }
 if (numTexturas > texturasArmas.Length-1){
  numTexturas = texturasArmas.Length-1;
 }
 
}

function DaId (clon : GameObject, num : int) {
  
 var script : PlanoSlider = clon.GetComponent("PlanoSlider");
 script.idArma = num;
 
}

var colorOriginal : Color = Color.white;
var colorOver : Color = Color.green;

function IluminaPlano () {
 
 if(menuArmas){
  for(var i : int = 0;i < objSlidersTexturas.Length;i++){
   if(objSlidersTexturas[i] == objSlidersTexturas[numTexturas]){
    objSlidersTexturas[i].renderer.material.color = colorOver;
   }else{
    objSlidersTexturas[i].renderer.material.color = colorOriginal;
   }
  }
 }
 
}





#pragma strict

//ArmasCNT.js

var texturasArmas : Texture2D [];
static var armaActiva : int;
var espejoArmaActiva : int; // Variable para ver en el inspector "BORRAR"

function Update () {
 
 espejoArmaActiva = armaActiva; // Variable para ver en el inspector "BORRAR"
 
}





No hay comentarios:

Publicar un comentario