Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Fashion_Trozos en Abril 04, 2019, 11:10:33 PM

Título: Como crear una instancia con una tecla y destruirla con la misma? (SOLUCIONADO)
Publicado por: Fashion_Trozos en Abril 04, 2019, 11:10:33 PM
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)
}
Título: Re:Como crear una instancia con una tecla y destruirla con la misma?
Publicado por: 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() }
}
Título: Re:Como crear una instancia con una tecla y destruirla con la misma?
Publicado por: Fashion_Trozos en Abril 05, 2019, 07:42:39 PM
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?
Título: Re:Como crear una instancia con una tecla y destruirla con la misma?
Publicado por: 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();}
     }
}
Título: Re:Como crear una instancia con una tecla y destruirla con la misma?
Publicado por: Fashion_Trozos en Abril 05, 2019, 09:50:16 PM
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!