Hola gente, soy nuevo en el foro ^^ y estoy haciendo un juego RPG 2D grid based-on.
Tengo una duda que me está molestando bastante. En el siguiente código, la instancia IF se repite hasta que al pollo le queda 1 golpe restante de vida:
if((obj_pj.sprite_index == spr_pjFrente) && (obj_pj.x==obj_pollo.x && obj_pj.y+200==obj_pollo.y))/*Si el sprite está mirando hacia el pollo y las posiciones de los objetos son correctas*/
{
global.instanciaAtacada = instance_nearest (obj_pj.x,obj_pj.y-200,obj_pollo);//Detecta la ID de la instancia pollo atacada
for(i=0;i<instance_number(obj_pollo);i++)
{
if(global.pollo[i,0]==global.instanciaAtacada)
{
global.pollo[i,2] -= global.basicHitPj;/*donde global.pollo[i,2] es la vida del mismo (20 de vida, al acertar el 4to golpe, muere.*/
if(global.pollo[i,2]>0)//si sigue vivo
{
instance_create(global.instanciaAtacada.x,global.instanciaAtacada.y,obj_danioPollo)//dibuja el daño infligido
}
else
{
with(global.instanciaAtacada)//si esta muerto
{
xPollo = global.instanciaAtacada.x;
yPollo = global.instanciaAtacada.y;
instance_destroy();
}
instance_create(xPollo,yPollo,obj_dropPollo);//lo destruye y crea un drop en su posición
}
}
break;//TERMINA EL FOR
}
}
les cuento más:
Este código se encuentra en un evento KEYPRESS (space), osea que las acciones deberían repetirse UNA sóla y única vez, a menos que presione space de nuevo.
En el juego, me acerco al npc pollo y al apretar space 2 veces, muere, mientras que debería morir al cuarto golpe(Vida del pollo=20, hit del pj=5).
coloqué algunos show_message a lo largo del código para ver qué pasaba, y el if principal, el que engloba todo, se repite hasta que al pollo le queda 1 golpe de vida. Se entiende mi problema? quise ser lo más específico posible, desde ya gracias por darme un lugar para publicar mis dudas ^^
Saludos y espero una ayuda :-\
amigo pon esto
create
dano=true;//es daño pero como no se puede usar la ñ entonces dano XD
tu codigo remplaza el primer if por este
if((obj_pj.sprite_index == spr_pjFrente) && (obj_pj.x==obj_pollo.x && obj_pj.y+200==obj_pollo.y) && dano=true)/*Si el sprite está mirando hacia el pollo y las posiciones de los objetos son correctas*/
{
dano=false;
alarm[0]=1*room_speed//aqui pones los segundos que quieras
en el evento alarm0
dano=true;
Para qué el alarm? osea, es solo para cambiar a dano=true?
si amigo exacto!!! sino lo haces asi el if se te va a repetir y repetir y repetir