Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

* Sponsor

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: destruir instancias (solucionado)  (Leído 616 veces)

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

Desconectado Ikaro3d

en: Mayo 29, 2020, 12:51:53 am
Hola compañeros ,tengo un problema que no puedo resolver , tengo 3 objetos roca_arriba, roca_abajo , y un objeto láser 
el láser me genera en cada extremo una roca y el láser en medio hace de barrera ,cuando disparo a una roca cambia de color a rojo y si las dos están rojas el láser se desactiva , pero cuando genero mas de 1 láser se desactivan todos a la vez  como consigo que no suceda me comentaron que generase las rocas desde el laser u las guardase en una variable, para que a las demás no les afecte pero no me funciona
he guardado en dos variables roca1=obj_roca_arriba
 


depth = -449;
instance_create_layer(x + 0, y + 0, "Instances", roca1);
instance_create_layer(x + 0, y + 1150, "Instances", roca2);
hspeed = -1;
audio_play_sound(sonido_laser, 0, 0);
  Responder  37 min


image_xscale =random_range(1,1.3)
roca1red =false;
with(roca1){
other.roca1red=image_index==0;
}
roca2red=false;
with(roca2){
other.roca2red=image_index==0;
}
if(roca1red&&roca2red){
instance_destroy();
« Última modificación: Mayo 29, 2020, 04:39:34 pm por Ikaro3d »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Clamud

Respuesta #1 en: Mayo 29, 2020, 04:23:24 am
Lo siento, no entendí bien la explicación. ¿Podrías poner un dibujo de lo que quieres lograr?

 


Desconectado Ikaro3d

Respuesta #2 en: Mayo 29, 2020, 11:32:55 am
Si disparo al asteroide  cambia de color de amarillo a rojo , y el láser se desactiva ,pero lo que ocurre es que afecta a todos los instancias en vez de ser individual 



https://youtu.be/WBZI628k-aU                                             a qui se ve mejor


https://www.youtube.com/watch?v=qN9u5_lrHdA             StarCenter

https://youtu.be/ibvxrkm7P20                                                boss intermedio
« Última modificación: Mayo 29, 2020, 11:47:58 am por Ikaro3d »

 


Desconectado Clamud

Respuesta #3 en: Mayo 31, 2020, 05:09:10 pm
El problema es que al usar with el código se ejecuta en todas las instancias.
Guarda el id de las rocas para leer sus variables directamente
// guardar ids
r1 = instance_create_layer(x + 0, y + 0, "Instances", roca1);
r2 = instance_create_layer(x + 0, y + 1150, "Instances", roca2);

hspeed = -1;
audio_play_sound(sonido_laser, 0, 0);
image_xscale =random_range(1,1.3)

// step
if(r1.image_index == 0 and r2.image_index == 0) {
    instance_destroy();
}

 
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d


Desconectado Ikaro3d

Respuesta #4 en: Mayo 31, 2020, 10:36:35 pm
Gracias no me había dado cuenta de la respuesta ,muchas gracias me a quedado claro

Una pregunta mas other cuando se usa ?

 


Desconectado Clamud

Respuesta #5 en: Junio 01, 2020, 05:39:40 am
Que bueno que te ha servido.

other se utiliza dentro de un ciclo with para indicar la instancia que inició el ciclo.
// el objA tiene este código
foo = 0; // variable en instancia de objA

with (objB) // recorrer todas las instancias de objB
{
    foo = 123; // asignar variable a instancia de objB
    other.foo = 123; //asignar variable a instancia de objA
}

other también se utiliza en el evento colisión para obtener el id de la instancia con la que ocurrió la colisión.

 
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d