Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: chute666 en Mayo 28, 2014, 02:56:34 PM

Título: como hacer para que enemigo me ataque?
Publicado por: chute666 en Mayo 28, 2014, 02:56:34 PM
buenas chicos!!
os comento.. quiero que mi enemigo(obj_abeja)me ataque pero no seguidamnte y cada vez que realice un ataque se dibuje la animacion del ataque sobre mi... (nombre de la animacion del ataque"fisico22")
lo que tengo puesto es lo siguiente:

[obj_abeja]step:
if global.cooldown=0
{global.atacar=1 global.cooldown=10}
if global.cooldown!=0 gloval.cooldown-=1

colision contra mi player:
if global.atacar=1
{
global.vida-=1
}
Título: Re:como hacer para que enemigo me ataque?
Publicado por: chute666 en Mayo 28, 2014, 08:19:35 PM
hola d nuevo chicos ^^ e conseguido que el enemigo me ataque pero ahora solo me ataca si colisiono contra el y si sigo caminando contra el enemigo... si estoi quieto me sigue pero no me ataca... e puesto esto:
[obj_abeja](enemigo)
(create)
if global.cooldown=0
{global.atacar=1 global.atacar=60}
if global.cooldown!=0 global.cooldown-=1

if (distance_to_obj(obj_player) < 100) && (distance_to_object(obj_player) > 50)
{
if global.atacar=1
{global.vida-=1}
}
else
{
global.atacar=0
}
lo dicho... solo me ataca si colisiono con el y camino acia el chocando... y la vida se resta continuamnte... no se como acer para que el sprite (fisico22) se dibuje sobre mi
pj cada vez que la abeja realice un ataque...  y como acer para que me ataque sin tener que colisionar... osea un ataque decente jahahaha
Título: Re:como hacer para que enemigo me ataque?
Publicado por: penumbra en Mayo 28, 2014, 08:31:12 PM
La vida se resta continuamente porque la resta está en STEP y no hay ninguna condición que evite que sólo reste una vez, necesitas otra variable para evitar que se quite vida constantemente

if (atacar) and (daniar)
{
     restar 1
     daniar = false
     alarm[0] = room_speed * 2 //conceder dos segundos de invencibilidad al jugador
}

ALARM[0]
{
    daniar = 1
}   

No entiendo bién por qué usas esta condición
if (distance_to_obj(obj_player) < 100) && (distance_to_object(obj_player) > 50)

Yo la dejaría en
if (distance_to_obj(obj_player) < 100)

Para hacer que el ataque se dibuje debes usar
sprite_index = spr_ataque
pero necesitas ser cuidadoso con los estados o pasará lo mismo que con la resta de vida, se podría repetir más de una vez la animación.

Título: Re:como hacer para que enemigo me ataque?
Publicado por: chute666 en Mayo 29, 2014, 11:31:35 AM
me sucede un error!!!! ahora solo ataca a la primera abeja y luego no me deja atacar ami a ninguna abeja mas .... pero el tiempo de espera etc si que funciona... le tengo puesto esto...
estep1: (code)
///para que el enemigo nos siga

if(distance_to_object(obj_player)<100)// distancia a la que nos empezara a seguir.. y donde se parara
{
move_towards_point(obj_player.x,obj_player.y,2)//2 velocidad a la que nos sigue
}
else
{
speed=0
}

step2:(code)

///ataque hacia nuestro player
if global.cooldown=0
{global.atacar=0 global.cooldown=10}

if global.cooldown!=0 global.cooldown-=1


if (global.atacar) and (global.noatacar)
{

global.vida-=1
global.noatacar=false
alarm[0] = room_speed*2//conceder 2 segundos sin ser atacado al jugador (2) es el tiempo de cooldown
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha)
draw_sprite(fisico22,1,obj_player,obj_player)

}
{alarm[0]=global.noatacar = 1
}
Título: Re:como hacer para que enemigo me ataque?
Publicado por: chute666 en Mayo 30, 2014, 06:53:06 PM
buenas chicos... e cambiado un poquito las cosas os comento.... tengo esto:
[obj_abeja]step:

if global.cooldown=0                                       ////// e provado a quitar lo del cooldown
{global.atacar=0 global.cooldown=10}               //////y la verdad esque de esa manera me permite atacara todos los enemigos

if global.cooldown!=0 global.cooldown-=1           ////// y que todos me ataquen ami, pero si lo quito me resta vida continuamente y sin parar



if (global.atacar) and (global.noatacar)
{
global.vida-=1
global.noatacar = false
alarm[0] = room_speed*2//conceder 2 segundos sin ser atacado al jugador (2) es el tiempo de cooldown
}
{
alarm[0]=global.noatacar = true
}