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?
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.