Octubre 08, 2019, 11:21:55 PM Ultima modificación: Mayo 19, 2020, 06:43:13 AM por T789
hola busco como hacer un efecto de ser golpeado o atacado, porque ya me canse de usar el jump to start

busco hacer algo parecido al daño de sonic (ya tengo la animacion)

Podrias cambiar a otro objeto que tenga solo tenga ese comportamiento y cuando termine volver a cambiar al objeto principal. O hacer una maquina de estados.

Cambiar a otro objeto suena facil pero buscaba un ejemplo de como hacer ese comportamiento ya que existen varias formas y buscaba una efectiva

#3 Octubre 10, 2019, 07:17:38 AM Ultima modificación: Octubre 10, 2019, 08:26:07 AM por cristopher2545
este codigo es algo largo pero funciona como la ceda puedes ser golpeado se muestra el sprite de dañado por unos segundos y despues entras en modo invulnerable donde nada puede hacerte daño, puedes aumentar o diminuir las variables de daño a tu gusto y cuanto dura la invulnerabilidad. si quieres añadir knockback puedes hacerlo añadiendo 2 variables nuevas

[gml]push1=false
push2=false[/gml]

y en el evento step

[gml]if hurt= true && image_xscale=-1
{
push1=true
push2=false
}

if hurt= true && image_xscale=1
{
push1=false
push2=true
}

if push1=true
{
vsp=-4
hsp=-2
}
else if push2=true
{
vsp=-4
hsp=2
}[/gml]

dependiendo de los numeros almacenados en el push es la fuerza con la que tu personaje sera lanzado en el aire

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Codigo de daño

Create event

[gml]hurt=false
timer=0
timer2=0
invulnerable=false
lock=false

[/gml]

Step event
[gml]

if hurt=true
{
sprite_index=sprite14
timer+=1
lock=true
hsp=0
}

if timer>30
{
hurt=false
timer=0
invulnerable=true
alarm[0]=1
lock=true
push1=false
push2=false
}

if invulnerable=true
{
timer2+=1
}

if timer2>80
{
invulnerable=false
timer2=0
visible=true
}
[/gml]

Alarm[0]
[gml]
if invulnerable=true
{
visible=true
alarm[1]=3
}
[/gml]

Alarm 1

[gml]
if invulnerable=true
{
visible=false
alarm[0]=3
}
[/gml]

recuerda que debes bloquear las animaciones para que el sprite de dañado se muestre puedes hacerlo poniendo antes del codigo esto

[gml]
if  hurt=false
{
// tus animaciones
}

y bloquear el movimiento

if lock=false
{
movimiento izquierda derecha
}
[/gml]


ahora para activarlo basta con poner en el evento colision con lo que sea esto

[gml]
if hurt=false && invulnerable=false
{
hurt=true
hsp=0
}
[/gml]
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!

el codigo va bien, otro metodo que emplea las variables