Saludos amigos.
Continuamos con la tercera parte del vídeo de como crear un menú deslizable con unos planos, en este caso, para un menú de armas pero aplicable a cualquier tipo de menú.
En este tercer vídeo, veremos como esta creada la GUI y añadiremos un marco para resaltar el arma seleccionable.
Veremos como incluir un script en cada uno de los planos y como pasar parámetros a ese script.
#pragma strict
//ArmasCNT.js
var texturasArmas : Texture2D [];
var nombreArmas : String [];
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"
}
#pragma strict
//SliderCNT.js
var prefabPlanoSlider : GameObject;
var CNTslider :GameObject;
var marco :GameObject;
var PosSlider : Vector3;
var CNTarmas :GameObject;
var offsetSlider : float;
private var menuArmas : boolean = false;
private var numTexturas : int;
var texturasArmas : Texture2D [];
var nombreArmas : String [];
var ratioMenu : float = 0.5;
private var nextRatioMenu : float = 0.0;
function Update () {
if(Input.GetKeyDown (KeyCode.M)){
SwitchMenuArmas ();
}
if(Input.GetButton ("Fire1") && Time.time > nextRatioMenu && menuArmas){
nextRatioMenu = Time.time + ratioMenu;
RestaPosSlider ();
}
if(Input.GetButton ("Fire2") && Time.time > nextRatioMenu && menuArmas){
nextRatioMenu = Time.time + ratioMenu;
SumaPosSlider ();
}
if(Input.GetButton ("Fire3") && Time.time > nextRatioMenu && menuArmas){
nextRatioMenu = Time.time + ratioMenu;
SeleccionaArma ();
}
if(menuArmas){
marco.renderer.enabled = true;
}else{
marco.renderer.enabled = false;
}
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),"-")){
RestaPosSlider ();
}
if (GUI.Button(Rect(55,20,55,20),"+")){
SumaPosSlider ();
}
if (GUI.Button(Rect(0,40,55,20),"<<")){
InicialPosSlider ();
}
if (GUI.Button(Rect(55,40,55,20),">>")){
FinalPosSlider ();
}
if (GUI.Button(Rect(0,60,110,20),"Seleccionar")){
SeleccionaArma ();
}
GUI.Box (new Rect (0,0,110,20)," " + nombreArmas[numTexturas]);
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;
nombreArmas = armas.nombreArmas;
}
}
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;
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;
}
}
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;
objSlidersTexturas[i].renderer.material.color.a = 1;
}else{
objSlidersTexturas[i].renderer.material.color = colorOriginal;
objSlidersTexturas[i].renderer.material.color.a = 0.2;
}
}
}
}
function RestaPosSlider () {
numTexturas--;
if(numTexturas >= 0){
CNTslider.transform.position.x += offsetSlider;
}
}
function SumaPosSlider () {
numTexturas++;
if(numTexturas <= texturasArmas.Length-1){
CNTslider.transform.position.x -= offsetSlider;
}
}
function InicialPosSlider () {
numTexturas = 0;
CNTslider.transform.position.x = 0;
}
function FinalPosSlider () {
numTexturas = texturasArmas.Length-1;
CNTslider.transform.position.x = 0;
CNTslider.transform.position.x -= (texturasArmas.Length-1)*offsetSlider;
}
function SeleccionaArma () {
ArmasCNT.armaActiva = numTexturas;
}
No hay comentarios:
Publicar un comentario