Abril 04, 2019, 11:10:33 PM Ultima modificación: Abril 07, 2019, 08:16:58 PM por Fashion_Trozos
Hola buenas, llevo un buen rato dándole vueltas a como puedo hacer lo que pregunto en el título. Lo he intentdo con una variable del estilo "mostrar_inventario = false" y que al presionar la "i" fuera verdadero, pero no me sale. Entinedo que realmente al presionar la tecla estoy dandole una orden contradictoria supongo. Después lo he intentado así, pero vamos que creo que viene a ser lo mismo hehe. Como lo veis?

if keyboard_check_pressed(ord("I")) and instance_exists(ob_inventario) = false{
instance_create_depth(room_width/2,room_height/2,-1,ob_inventario)
}

if keyboard_check_pressed(ord("I")) and instance_exists(ob_inventario){
instance_destroy(ob_inventario)
}

Hola Fashion_Trozos

El problema es que se ejecutan ambos bloques de código al mismo tiempo, entonces creas y destruyes el inventario en el mismo step.
Te sugiero cambiar la estructura por un "if-else", de esta forma:
if keyboard_check_pressed(ord("I")) {
if instance_exists(ob_inventario) = false { instance_create_depth(room_width/2,room_height/2,-1,obj_inventario) }
else { with (obj_inventario) instance_destroy() }
}

Cita de: BssString en Abril 04, 2019, 11:16:50 PM
Hola Fashion_Trozos

El problema es que se ejecutan ambos bloques de código al mismo tiempo, entonces creas y destruyes el inventario en el mismo step.
Te sugiero cambiar la estructura por un "if-else", de esta forma:
if keyboard_check_pressed(ord("I")) {
if instance_exists(ob_inventario) = false { instance_create_depth(room_width/2,room_height/2,-1,obj_inventario) }
else { with (obj_inventario) instance_destroy() }
}


Buenas compañero! Haciendo eso lo que pasa es que cuando pulso "I" aparece por una décima de segundo el inventario y vuelve a desaparecer. Que puedo estar haciendo mal?

#3 Abril 05, 2019, 09:15:26 PM Ultima modificación: Abril 05, 2019, 09:17:59 PM por somnus
intent esto, veo errores en el codigo o al menos una sintaxis que en otros lenguajes no deberia ser:

yo lo haria de la siguiente manera:

if( keyboard_check_released( ord( "I" ) ) )
{
     if( !instance_exists( ob_inventario ) )
     {
             instance_create( room_width/2, room_height/2,-1 ,   obj_inventario ); 
     }
     else
     {
             with (obj_inventario)
                      {instance_destroy();}
     }
}
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

Cita de: somnus en Abril 05, 2019, 09:15:26 PM
intent esto, veo errores en el codigo o al menos una sintaxis que en otros lenguajes no deberia ser:

yo lo haria de la siguiente manera:

if( keyboard_check_released( ord( "I" ) ) )
{
     if( !instance_exists( ob_inventario ) )
     {
             instance_create( room_width/2, room_height/2,-1 ,   obj_inventario ); 
     }
     else
     {
             with (obj_inventario)
                      {instance_destroy();}
     }
}

Muy buena!! exactamente, así ha funcionado. Gracias!