Hola, estoy haciendo un juego tipo Zelda Link to the Past en cuanto al combate y cómo acabo de empezar a usar game maker con códigos, estoy teniedo algún problema, pero el que no consigo solucionar es el de cuando el goblin enemigo ataca al personaje. No se porque solo quita una vez la vida hasta que el personaje se aleja del ratio y luego vuelve.
La idea es que el personaje siga perdiendo vida hasta que no salga del área de ataque con un retardo de unos 30 frames por segundo...
El área del código que interesa es este:
A parte de eso otro problema es que la vida que quite vaya en valores enteros, pero eso es secundario...
Muchas gracias de antemano por todo, espero haberme explicado bien
La idea es que el personaje siga perdiendo vida hasta que no salga del área de ataque con un retardo de unos 30 frames por segundo...
El área del código que interesa es este:
Código [Seleccionar]
//Si marca como objetivo al Héroe
if (distance_to_object(obj_hero)>3 and distance_to_object(obj_hero)-3<distance_to_object(obj_castillo) and not collision_point(x,y,obj_goblin1,1,1)){
mp_potential_step_object(obj_hero.x,obj_hero.y,3,obj_pared)
//Si esta más lejos en direccion X que en Y
if (distance_to_point (obj_hero.x,y)>(distance_to_point (x,obj_hero.y)) and obj_hero.x > self.x) {
sprite_index = spr_goblin1_l2;
image_xscale = -1;
//Si se encuentra muy cerca, Atacar
if (distance_to_object(obj_hero)<=6+5) {
if (collision_rectangle (self.x+5,self.y,self.x+32,self.y-32,obj_hero,0,1)){
image_speed = 0.2;
sprite_index = spr_goblin1_la;
image_xscale = -1;
global.vida -= random_range (1,3);
}
}
}
if (distance_to_point (obj_hero.x,y)>(distance_to_point (x,obj_hero.y)) and obj_hero.x < self.x) {
sprite_index = spr_goblin1_l2;
image_xscale = 1;
}
//Si esta más lejos en direccion Y que en X
if (distance_to_point (x,obj_hero.y)>(distance_to_point (obj_hero.x,y)) and obj_hero.y > self.y) {
sprite_index = spr_goblin1_d2;
image_xscale = 1;
//Si se encuentra muy cerca, Atacar
if (distance_to_object(obj_hero)<=6) {
if (collision_rectangle (self.x-15,self.y,self.x+16,self.y+32,obj_hero,0,1)){
image_speed = 0.2;
sprite_index = spr_goblin1_da;
image_xscale = 1;
global.vida -= random_range(1,3);
}
}
}
}
if (distance_to_point (x,obj_hero.y)>(distance_to_point (obj_hero.x,y)) and obj_hero.y < self.y) {
sprite_index = spr_goblin1_u2;
image_xscale = 1;
//Si se encuentra muy cerca, Atacar
if (distance_to_object(obj_hero)<=6) {
if (collision_rectangle (self.x-15,self.y+22,self.x+16,self.y+7+32,obj_hero,0,1)){
image_speed = 0.2
sprite_index = spr_goblin1_ua;
image_xscale = 1;
global.vida -= random_range(1,3);
}
}
}
A parte de eso otro problema es que la vida que quite vaya en valores enteros, pero eso es secundario...
Muchas gracias de antemano por todo, espero haberme explicado bien