Hola, me voy a volver loco con este código! >:(
No entiendo porque la mitad del código lo interpreta bien y la otra mitad no siendo lo mismo.
Ese código pertenece a un objeto (obj_bala), que lo que hace es, cuando colisiona con el malo (obj_malo_dificil_der/izq), este crea otra instancia (obj_malo_dificil_der_2/izq_2), y al colisionar la bala con la segunda instancia, este muere. El codigo esta separado en dos partes, los que vienen por la derecha y los de la izquierda.
El problema es que a lo de la izquierda si que funciona a la perfección el código, pero a lo de la derecha cuando la bala colisiona con el primer objeto, este me crea el segundo, pero no se destruye en cuando si que lo debería de hacer.
Aquí os dejo el código:
//____________________________DIFÍCIL____________________________________
if (global.dificultad = "dificil"){
//Colisión disparo con malo dificil 1 izquierdo
if (position_meeting(x + 1, y, obj_malo_dificil_izq)){
col_izq= instance_place(x ,y ,obj_malo_dificil_izq);
with (col_izq){
instance_change(obj_malo_dificil_izq_2, false);
}
instance_destroy();
}
//Colisión disparo con malo dificil 2 izquierdo
if (position_meeting(x + 1, y, obj_malo_dificil_izq_2)){
col_izq= instance_place(x ,y ,obj_malo_dificil_izq_2);
with (col_izq){
instance_destroy ();
}
instance_destroy();
}
//Colisión disparo con malo dificil 1 derecho
if (position_meeting(x - 1, y, obj_malo_dificil_der)){
col_der= instance_place(x ,y ,obj_malo_facil_der);
with (col_der){
instance_change(obj_malo_dificil_der_2, false);
}
instance_destroy();
}
//Colisión disparo con malo dificil 2 derecho
if (position_meeting(x - 1, y, obj_malo_dificil_der_2)){
col_der= instance_place(x ,y ,obj_malo_dificil_der_2);
with (col_der){
instance_destroy ();
}
instance_destroy();
}
}
Muchas gracias!
No logré encontrar el problema, tal vez es el origen de la máscara de colisión, o es porque estas combinando la detección de colisión con "place" y "position".
Amm creo que te la estas complicando mucho, hay otras maneras mas faciles pero ese no es el caso, creo que lo que pasa es en (baja donde diga "AQUI"):
//____________________________DIFÍCIL____________________________________
if (global.dificultad = "dificil"){
//Colisión disparo con malo dificil 1 izquierdo
if (position_meeting(x + 1, y, obj_malo_dificil_izq)){
col_izq= instance_place(x ,y ,obj_malo_dificil_izq);
with (col_izq){
instance_change(obj_malo_dificil_izq_2, false);
}
instance_destroy();
}
//Colisión disparo con malo dificil 2 izquierdo
if (position_meeting(x + 1, y, obj_malo_dificil_izq_2)){
col_izq= instance_place(x ,y ,obj_malo_dificil_izq_2);
with (col_izq){
instance_destroy ();
}
instance_destroy();
}
//Colisión disparo con malo dificil 1 derecho
if (position_meeting(x - 1, y, obj_malo_dificil_der)){
col_der= instance_place(x ,y ,obj_malo_facil_der);///AQUI obj_malo_facil_der "no sera" obj_malo_dificil_der
with (col_der){
instance_change(obj_malo_dificil_der_2, false);
}
instance_destroy();
}
//Colisión disparo con malo dificil 2 derecho
if (position_meeting(x - 1, y, obj_malo_dificil_der_2)){
col_der= instance_place(x ,y ,obj_malo_dificil_der_2);
with (col_der){
instance_destroy ();
}
instance_destroy();
}
}