Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Yuzo en Agosto 08, 2017, 04:43:59 PM

Título: Desplazamiento por el menu del juego [SOLUCIONADO]
Publicado por: Yuzo en Agosto 08, 2017, 04:43:59 PM
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.
Título: Re:Desplazamiento por el menu del juego
Publicado por: 3dgeminis en Agosto 09, 2017, 02:49:24 AM
Podrias subir uel archivo, hay mucho codigo que ver.
Título: Re:Desplazamiento por el menu del juego
Publicado por: Yuzo en Agosto 09, 2017, 05:16:47 AM
Gracias 3dgeminis, al final lo resolví 😉