COMO MATAR UN PROCESO DE FORMA INDIVIDUAL, SI FUE INVOCADO VARIAS VECES?

Started by Tayura_TT, October 09, 2017, 03:53:47 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Tayura_TT

Saludos nuevamente foro de BennuGD, mi duda es la siguiente...

En mi juego, el personaje principal puede disparar, pero las balas que este dispara logran atravezar las paredes y de mas obstaculos en el mapa, cosa que obviamente yo no quiero.

Es por ello que se me ocurrió hacer que cuando la posición de alguna de las balas, sean iguales al color de alguna pared (u objeto) del mapa de durezas, estas murieran. Usando el siguiente código...

(Esta parte del codigo esta dentro del proceso del disparo del personaje)

//COMPRUEBA SI HAY CONTACTO DE LA BALA CON ALGUNA PARED
IF(map_get_pixel(fichero_piso1,002,x,y)==color_obstaculo)
signal(TYPE disparo_personaje,s_kill);
end


De esta manera logre hacer que las balas murieran al hacer contacto con alguna pared reflejada en el mapa de durezas. Pero acá es donde entre el problema...

Cuando una de estas balas hace contacto con la pared, no solo mata a la bala que hiso contacto sino que también mata a todas las balas que haya disparado el personaje, sin importar que estas hayan tocado una pared o no.

Me gustaría saber como solucionar este problema, pues por mas vueltas que le doy no le hayo solución n.n'

De ante mano gracias..

(Porsi acaso, acá les dejo la parte del codigo en el proceso del personaje principal, donde este invoca al proceso de las balas...)


IF(key(_i) && gatillo==20)
disparo_personaje(006);
gatillo=0;
END
Trabajos Actuales: "Proyecto Chizuru" y "Hoppy Bat"

panreyes

Necesitaremos algo más de código para responderte correctamente, pero quizás la solución sea no utilizar un signal sino un simple return para que finalice la instancia del proceso disparo_personaje :)

De todas formas, otra forma que tienes de identificar a otro proceso colisionado es la siguiente:

id_colision=collision(type enemigo);
if(id_colision>0)
signal(id_colision,s_kill);
end


O abreviado:

if(id_colision=collision(type enemigo))
signal(id_colision,s_kill);
end

Tayura_TT

jaja man gracias por tu ayuda, ciertamente con el return 0 me ha funcionado, me rió porque es increíble que me fundí las neuronas pensando en como solucionar esto y la solución era algo tan sencillo xD bueno, en todo caso solo queda reírme y continuar con mi proyecto 7w7
Trabajos Actuales: "Proyecto Chizuru" y "Hoppy Bat"