Mayo 29, 2020, 12:51:53 AM Ultima modificación: Mayo 29, 2020, 04:39:34 PM por Ikaro3d
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
[gml]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();[/gml]

Lo siento, no entendí bien la explicación. ¿Podrías poner un dibujo de lo que quieres lograr?

#2 Mayo 29, 2020, 11:32:55 AM Ultima modificación: Mayo 29, 2020, 11:47:58 AM por Ikaro3d
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 



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


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

[user]https://youtu.be/ibvxrkm7P20[/user]                                                boss intermedio

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
[gml]
// 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();
}
[/gml]

Gracias no me había dado cuenta de la respuesta ,muchas gracias me a quedado claro

Una pregunta mas other cuando se usa ?

Que bueno que te ha servido.

other se utiliza dentro de un ciclo with para indicar la instancia que inició el ciclo.
[gml]
// 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
}
[/gml]

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