Hola CGM ;)
Tengo un Obj que usare para controlar el menu, que lleva como sprite el del menu empezando en start, el menu lleva 4 variables en el event create
startt = 1;
options = 0;
exxtra = 0;
exxit = 0;
(llevan doble T y doble X)
y en el event step hice:
Citarif (keyboard_check_pressed(vk_up)) && startt = 1 exit;
if (keyboard_check_pressed(vk_down)) && startt = 1
{
startt = 0;;
options = 1
sprite_index = menu_opt;
}
if (keyboard_check_pressed(vk_up)) && options = 1
{
options = 0;
startt = 1;
sprite_index = menu_start
}
if (keyboard_check_pressed(vk_down)) && options = 1
{
options = 0;
exxtra = 1;
sprite_index = menu_extra
}
if (keyboard_check_pressed(vk_up)) && exxtra = 1
{
options = 1;
exxtra = 0;
sprite_index = menu_opt
}
if (keyboard_check_pressed(vk_down)) && exxtra = 1
{
exxtra = 0;
exxit = 1;
sprite_index = menu_exit
}
if (keyboard_check_pressed(vk_up)) && exxit = 1
{
exxtra = 1;
exxit = 0;
sprite_index = menu_extra
}
if (keyboard_check_pressed(vk_down)) && exxit = 1 exit;
if (keyboard_check_pressed(vk_enter)) && startt = 1 room_goto(level1);
if (keyboard_check_pressed(vk_enter)) && exxit = 1 game_end();
peeeeeeeeerooo no funciona como quiero, solo funciona bien cuando muevo el menu hacia arriba(apretando vk_up) pero cada vez que le doy hacia debajo se va siempre a exxit :s
Estás ejecutando todos los if que tienen en su condición que keyboard_check_pressed(vk_down) sea true. Para evitarlo, coloca un exit antes de cerrar la llave de cada if.
Me parece una manera un tanto ineficiente de crear un menú. Te sugiero que pruebes a utilizar una sola variable como índice de la alternativa resaltada en el menú en vez de tener una distinta para cada una de las 4 y que uses el evento keyboard press (any key) en vez de step. Por ejemplo, usando arrays:
Evento create:
//sprite de cada alternativa:
menu[0]=menu_start;
menu[1]=menu_opt;
menu[2]=menu_extra;
menu[3]=menu_exit;
op=0;//índice de la opción resaltada (start al principio)
Evento keyboard press (any key)
if keyboard_check_pressed(vk_up)
op=max(0,op-1);//mueve el índice hacia arriba
if keyboard_check_pressed(vk_down)
op=min(3,op+1);//mueve el índice hacia abajo
sprite_index=menu[op];
if keyboard_check_pressed(vk_enter)
{
if op=0
room_goto(level1);
else if op=3
game_end();
}
Era eso gracias ;D a mi se me hace mas facil ya que no se usar arrays y estoy aprendiendo gml