Hola tengo un objeto "Jugador" y un objeto "Enemigo" al colisionar se setea la variable global.battle a 2 haciendo que el jugador realize animaciones de batalla al igual que el enemigo, el enemigo tiene una accion "set variable life = 50" en el evento create, mi pregunta es como hacer que el enemigo pierda vida cada x tiempo por que si pongo algo como life -=13 muere en 0.000003 segundos y no es la idea, sesupone que hay que definir una "velocidad de ataque" como ago para que alla un retardo entre cada life -= ???

#1 Febrero 11, 2014, 10:03:11 PM Ultima modificación: Febrero 11, 2014, 10:35:32 PM por penumbra
CREATE
restar_vida = 1

STEP
if (restar_vida)
{
     life -= 13
     restar_vida = 0                // impedir hacer más daño...
     alarm[0] = room_speed * 2     //... durante los dos próximos segundos
}

ALARM[0]
restar_vida = 1                         // Es posible hacer daño nuevamente

En realidad lo mejor es ejecutar la alarma bajo una condición:


if (alarm[0] < 0) {
    alarm[0] = romm_speed * 2
}


De esta forma nos aseguramos que siempre se ejecute la alarma, de lo contrario, si la alarma ya tiene algún valor no se va a volver a ejecutar.

#3 Febrero 11, 2014, 10:33:05 PM Ultima modificación: Febrero 11, 2014, 10:34:58 PM por penumbra
No siempre se requiere que la alarma se ejecute recursivamente. En el caso de atacar con un arma, la alarma reacciona al ataque, Si se vuelve a atacar. la alarma se ejecuta, si no se  ataca de nuevo, no tendría caso que la alarma siguiera corriendo una y otra vez.

Por supuesto que hay casos en los que sí se necesita que la alarma se ejecute una y otra vez

Cita de: Iros en Febrero 11, 2014, 10:16:08 PM

if (alarm[0] < 0) {
    alarm[0] = romm_speed * 2
}


Se puede hacer lo mismo ahorrándose el if, ajustando la alarma en su propio evento ALARM
alarm[0] = room_speed * 2


Que tiene el mismo efecto, re-activar la alarma

jeje gracias a los 2 hay veo como adaptar eso a mi codigo son geniales muchas gracias :D