Agosto 08, 2017, 04:43:59 PM Ultima modificación: Agosto 09, 2017, 05:17:25 AM por Yuzo
Saludos;

Estoy con el menu del juego y no logro hacerlo funcionar correctamente, esta es la estructura que he hecho:

CREATE:

[gml]
///VARIABLES DE CONTROL DE DESPLAZAMIENTO EN LA INTERFAZ
cursor_x            = -700 // inicialmente fuera de la pantalla
cursor_y            = -700 // inicialmente fuera de la pantalla
cursor_horizontal   = 0
cursor_vertical     = 4
menu_exit           = false
menu_tuto           = false[/gml]

STEP:

[gml]
///PROPIEDADES

// SI NO ESTAN LAS OPCIONES DE "EXIT-YES Y EXIT-NO"
if menu_exit == false and menu_tuto == false{

// VARIABLES DE DESPLAZAMIENTO
cursor_x                =                   view_xview+700   // esta fijo en sentido horizontal
if cursor_vertical      ==   4 { cursor_y = view_yview+250 } // exit
if cursor_vertical      ==   3 { cursor_y = view_yview+325 } // trophies
if cursor_vertical      ==   2 { cursor_y = view_yview+400 } // tutorial
if cursor_vertical      ==   1 { cursor_y = view_yview+475 } // start

// VARIABLES DE POSICION
x = cursor_x
y = cursor_y

// LIMITES DE DESPLAZAMIENTOS
if cursor_vertical      > 4 { cursor_vertical = 4 }
if cursor_vertical      < 1 { cursor_vertical = 1 }

// USA EL SPRITE GRANDE
sprite_index = spr_menu_button_on


// SI ESTAN LAS OPCIONES "TUTO-YES Y TUTO-NO"
}else if menu_tuto == true{

// VARIABLES DE DESPLAZAMIENTO
cursor_y                =                   view_yview+400   // esta fijo en sentido vertical
if cursor_horizontal    ==   2 { cursor_x = view_xview+845 } // no
if cursor_horizontal    ==   1 { cursor_x = view_xview+555 } // yes

// VARIABLES DE POSICION
x = cursor_x
y = cursor_y

// USA EL SPRITE PEQUEÑO
sprite_index = spr_menu_button_on_small


// SI ESTAN LAS OPCIONES DE "EXIT-YES Y EXIT-NO"
}else if menu_exit == true{

// VARIABLES DE DESPLAZAMIENTO
cursor_y                =                   view_yview+475   // esta fijo en sentido vertical
if cursor_horizontal    ==   2 { cursor_x = view_xview+845 } // no
if cursor_horizontal    ==   1 { cursor_x = view_xview+555 } // yes

// VARIABLES DE POSICION
x = cursor_x
y = cursor_y

// USA EL SPRITE PEQUEÑO
sprite_index = spr_menu_button_on_small

}[/gml]

press ENTER:

[gml]
///PROPIEDADES

// START
if cursor_vertical == 4 {
    sound_stop_all() audio_stop_all()
    if !instance_exists(ob_transicion){sound_play(snd_scouter_5)}
    instance_create(x,y,ob_transicion)
}

// TROPHIES
if cursor_vertical == 3 {
    sound_play(snd_scouter_5)
}

// TUTORIAL
if cursor_vertical == 2 and cursor_horizontal == 0{ // abre opciones SI O NO
    sound_play(snd_scouter_5)
    cursor_horizontal = 2
    instance_create(view_xview+845,view_yview+400,ob_menu_main_button_tuto_no)
    instance_create(view_xview+555,view_yview+400,ob_menu_main_button_tuto_yes)
    menu_tuto = true
}else if cursor_horizontal == 2{                     // si le das a NO
    menu_tuto = false
    sound_play(snd_scouter_6)
    cursor_horizontal = 0   
    if instance_exists(ob_menu_main_button_exit_no){with(ob_menu_main_button_exit_no)instance_destroy()}
    if instance_exists(ob_menu_main_button_exit_yes){with(ob_menu_main_button_exit_yes)instance_destroy()}
}else if cursor_horizontal == 1{                     // si le das a YES
    sound_stop_all() audio_stop_all()
    sound_play(snd_scouter_5)
    instance_create(x,y,ob_transicion)
}

// EXIT GAME
if cursor_vertical == 1 and cursor_horizontal == 0{ // abre opciones SI O NO
    sound_play(snd_scouter_5)
    cursor_horizontal = 2
    instance_create(view_xview+845,view_yview+475,ob_menu_main_button_exit_no)
    instance_create(view_xview+555,view_yview+475,ob_menu_main_button_exit_yes)
    menu_exit = true
}else if cursor_horizontal == 2{                     // si le das a NO
    menu_exit = false
    sound_play(snd_scouter_6)
    cursor_horizontal = 0   
    if instance_exists(ob_menu_main_button_exit_no){with(ob_menu_main_button_exit_no)instance_destroy()}
    if instance_exists(ob_menu_main_button_exit_yes){with(ob_menu_main_button_exit_yes)instance_destroy()}
}else if cursor_horizontal == 1{                     // si le das a YES
    sound_stop_all() audio_stop_all()
    sound_play(snd_scouter_5)
    game_end()
}[/gml]

DRAW:

[gml]
/// ESCRIBE EL TEXTO EN EL BOTON

if cursor_vertical == 4 {
draw_self()
draw_set_halign(fa_center)
draw_set_alpha(1)
draw_text(view_xview+700,view_yview+230,"START")
}

if cursor_vertical == 3 {
draw_self()
draw_set_halign(fa_center)
draw_set_alpha(1)
draw_text(view_xview+700,view_yview+305,"TROPHIES")
}

if cursor_vertical == 2{
draw_self()
draw_set_halign(fa_center)
draw_set_alpha(1)
draw_text(view_xview+700,view_yview+380,"TUTORIAL")
}

if cursor_vertical == 1{
draw_self()
draw_set_halign(fa_center)
draw_set_alpha(1)
draw_text(view_xview+700,view_yview+455,"EXIT")
}

if cursor_horizontal == 1{
draw_self()
draw_set_halign(fa_center)
draw_set_alpha(1)
draw_text(view_xview+555,view_yview+455,"YES")
}

if cursor_horizontal == 2{
draw_self()
draw_set_halign(fa_center)
draw_set_alpha(1)
draw_text(view_xview+845,view_yview+455,"NO")
}

// DEJA LOS VALORES PREMEDITADOS
draw_set_halign(fa_left)
draw_set_alpha(1)
[/gml]

Todo funciona perfectamente, menos el boton de tutorial, debería salir dos botones a cada lado del mismo y poner YES en uno y NO en otro, y de hecho sale, pero el cursor no se pone donde debería, la variable cursor_horizontal no cambia al valor 2, no se por que, alguien ve el fallo ?, por que no lo entiendo.

Gracias,

Un Saludo.

Podrias subir uel archivo, hay mucho codigo que ver.

Gracias 3dgeminis, al final lo resolví 😉