Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Tayura_TT on October 09, 2017, 03:53:47 PM

Title: COMO MATAR UN PROCESO DE FORMA INDIVIDUAL, SI FUE INVOCADO VARIAS VECES?
Post by: Tayura_TT on October 09, 2017, 03:53:47 PM
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
Title: Re:COMO MATAR UN PROCESO DE FORMA INDIVIDUAL, SI FUE INVOCADO VARIAS VECES?
Post by: panreyes on October 09, 2017, 08:33:11 PM
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
Title: Re:COMO MATAR UN PROCESO DE FORMA INDIVIDUAL, SI FUE INVOCADO VARIAS VECES?
Post by: Tayura_TT on October 09, 2017, 09:16:04 PM
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