Estoy intentando hacer la animacion de los enemigos desde una vista RPG, quiero hacer que se muevan aleatoriamente y dependiendo de hacia donde vayan usen una animacion u otra. Mire en la seccion de descargas y el ejemplo mas parecido era este:
En create
Citarimage_single=0;

En Step
Citar
if keyboard_check(vk_down){ sprite_index=spritedown image_speed=0.2}
if keyboard_check(vk_up){y+=-2 sprite_index=spriteup image_speed=0.2}
if keyboard_check(vk_left){x+=-2 sprite_index=spriteleft image_speed=0.2}
if keyboard_check(vk_right){x+=2 sprite_index=spriteright image_speed=0.2}

if keyboard_check(vk_down) && keyboard_check(vk_left)
{sprite_index=spritedig3 image_speed=0.2}
if keyboard_check(vk_down) && keyboard_check(vk_right)
{sprite_index=spritedig4 image_speed=0.2}
if keyboard_check(vk_up) && keyboard_check(vk_left)
{sprite_index=spritedig2 image_speed=0.2}
if keyboard_check(vk_up) && keyboard_check(vk_right)
{sprite_index=spritedig1 image_speed=0.2}

EndStep
Citarif keyboard_check_released(vk_anykey){image_single=0}

He probado jugando con Vspeed (borre el EndStep porque el NPC nunca estará quieto) poniendo cosas tal que asi:
Citarif (vspeed=2){ sprite_index=spritedown image_speed=0.2}
//El npc se mueve a una velocidad de 2
Pero tampoco funciona... no encuentro la manera :/

#1 Diciembre 24, 2012, 04:54:34 PM Ultima modificación: Diciembre 26, 2012, 02:45:12 AM por Crode
Vale, yo mismo lo he solucionado. Borre el end step y cambie el step a:
Citar
//direction es la direccion a la que va el sprite en grados
if (direction=180){ sprite_index=spritedown image_speed=0.2}
if (direction=0){y+=-2 sprite_index=spriteup image_speed=0.2}
if (direction=270){x+=-2 sprite_index=spriteleft image_speed=0.2}
if (direction=90){x+=2 sprite_index=spriteright image_speed=0.2}

if (direction=225){sprite_index=spritedig3 image_speed=0.2}
if (direction=135){sprite_index=spritedig4 image_speed=0.2}
if (direction=315){sprite_index=spritedig2 image_speed=0.2}
if (direction=45){sprite_index=spritedig1 image_speed=0.2}

Espero que le sirva de ayuda a alguien si lo necesita

Edito: No funciona completamente bien... alguien tiene una idea de como mejorarlo para que no falle? :/

exactamente en que falla?
CREADOR DE JUEGOS GM.


- Como hacer preguntas inteligentes
- Reglamento General

HOLA COMUNIDAD,HOLA A TODOS




uso game maker 8 pro 8) y game maker studio Master Collection

#3 Diciembre 26, 2012, 03:23:26 PM Ultima modificación: Diciembre 26, 2012, 03:40:25 PM por Crode
Se vuelve loco y cuando quiere el sprite sube y cuando quiere baja xD
Encontre este metodo:
Citar
if (direction => 45 && direction < 135)
{
//face up sprite
}
else if (direction => 135 && direction < 225)
{
//face left sprite
}
else if (direction => 225 && direction < 315)
{
//face down sprite
}
else
{
//face right sprite
}
Lo he probado y me funcionaba, ahora lo voy a cambiar para que vaya en 8 direcciones a ver si me funciona mejor (Me pillas escribiendolo xD) Cuando lo acabe edito el mensaje y comento D:

Edito:
Pues me funciona ahora para las 8 direcciones, el código que puse en step es:
Citarif (direction >= 22.5 && direction < 67.5)
{
sprite_index=frikidig1; //Sprite diagonal arriba-derecha
}
else if (direction >= 67.5 && direction < 112.5)
{
sprite_index=frikiup; //Sprite arriba
}
else if (direction >= 112.5 && direction < 157.5)
{
sprite_index=frikidig2; //Sprite diagonal arriba-izq
}
else if (direction >= 157.5 && direction < 202.5)
{
sprite_index=frikileft; //Sprite izq
}
else if (direction >= 202.5 && direction < 247.5)
{
sprite_index=frikidig3; //Sprite diagonal abajo-izq
}
else if (direction >= 247.5 && direction < 292.5)
{
sprite_index=frikidown; //Sprite abajo
}
else if (direction >= 292.5 && direction < 337.5)
{
sprite_index=frikidig4; //Sprite diagonal abajo-derecha
}
else{
sprite_index=frikiright; //Sprite derecha
}

En create solo puse la velocidad de la animacion
Citarimage_speed=0.2

Cita de: Crode en Diciembre 26, 2012, 03:23:26 PM
Se vuelve loco y cuando quiere el sprite sube y cuando quiere baja xD
Encontre este metodo:
Citar
if (direction => 45 && direction < 135)
{
//face up sprite
}
else if (direction => 135 && direction < 225)
{
//face left sprite
}
else if (direction => 225 && direction < 315)
{
//face down sprite
}
else
{
//face right sprite
}
Lo he probado y me funcionaba, ahora lo voy a cambiar para que vaya en 8 direcciones a ver si me funciona mejor (Me pillas escribiendolo xD) Cuando lo acabe edito el mensaje y comento D:

Edito:
Pues me funciona ahora para las 8 direcciones, el código que puse en step es:
Citarif (direction >= 22.5 && direction < 67.5)
{
sprite_index=frikidig1; //Sprite diagonal arriba-derecha
}
else if (direction >= 67.5 && direction < 112.5)
{
sprite_index=frikiup; //Sprite arriba
}
else if (direction >= 112.5 && direction < 157.5)
{
sprite_index=frikidig2; //Sprite diagonal arriba-izq
}
else if (direction >= 157.5 && direction < 202.5)
{
sprite_index=frikileft; //Sprite izq
}
else if (direction >= 202.5 && direction < 247.5)
{
sprite_index=frikidig3; //Sprite diagonal abajo-izq
}
else if (direction >= 247.5 && direction < 292.5)
{
sprite_index=frikidown; //Sprite abajo
}
else if (direction >= 292.5 && direction < 337.5)
{
sprite_index=frikidig4; //Sprite diagonal abajo-derecha
}
else{
sprite_index=frikiright; //Sprite derecha
}

En create solo puse la velocidad de la animacion
Citarimage_speed=0.2
gracias,me ayudó un poco.muchas gracias
CREADOR DE JUEGOS GM.


- Como hacer preguntas inteligentes
- Reglamento General

HOLA COMUNIDAD,HOLA A TODOS




uso game maker 8 pro 8) y game maker studio Master Collection