Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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 destruir una sola instancia de un objeto.  (Leído 305 veces)

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

Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
en: Marzo 19, 2019, 01:53:21 pm
Buenas! creo que es muy simple pero no consigo dar con la solución.


CREATE
Código: [Seleccionar]
if distance_to_object(obj_comida) < 3 and keyboard_check_pressed(vk_space)
{instance_destroy(obj_comida)
if vida >= 0 {vida +=10}
if vida > 100 {vida = 100}
}

Tengo puesto esto en el create, cuando me acerco al cuadradito que representa la comida y pulso espacio desaparecen todos los cuadraditos verdes de la pantalla. Entiendo que estoy destruyendo todas las instancias del obj_comida pero lo que quiero conseguir es que solo se destruya la que esta a menos de 3 pixels cuando pulso espacio. Que estoy haciendo mal?

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Black_Cat

Respuesta #1 en: Marzo 19, 2019, 07:33:06 pm
Bueno, lo que estás haciendo mal es que, al usar el nombre del recurso "obj_comida" estás diciendo que borre todas las instancias de ese objeto.
En cualquier caso deberías obtener el ID de la instancia a destruir y se destruiría solo esa instancia y no todas.

Yo te recomendaria usar instance_nearest(...):
https://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/instance%20functions/instance_nearest.html

Para obtener la instancia mas cercana,  y destruirla:

if distance_to_object(obj_comida) < 3 and keyboard_check_pressed(vk_space)
var comida_cercana = instance_nearest(x,y, obj_comida);
if (comida_cercana != noone)
{instance_destroy(comida_cercana )
    if vida >= 0 {vida +=10}
    if vida > 100 {vida = 100}
    }


 
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
Respuesta #2 en: Marzo 19, 2019, 10:50:52 pm
Muchas gracias funciona perfecto!