Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Como crear una instancia con una tecla y destruirla con la misma? (SOLUCIONADO)  (Leído 342 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
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?

Código: [Seleccionar]
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)
}
« última modificación: Abril 07, 2019, 08:16:58 pm por Fashion_Trozos »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Respuesta #1 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:
Código: [Seleccionar]
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() }
}

 
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
Respuesta #2 en: Abril 05, 2019, 07:42:39 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:
Código: [Seleccionar]
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?

 


Desconectado somnus

Respuesta #3 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();}
     }
}
« última modificación: Abril 05, 2019, 09:17:59 pm por somnus »

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
 
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
Respuesta #4 en: Abril 05, 2019, 09:50:16 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!