Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: usuariocondudas en Junio 10, 2012, 07:51:41 AM

Título: animacion a objeto segun direccion
Publicado por: usuariocondudas en Junio 10, 2012, 07:51:41 AM
hola, quisiera saber como puedo hacer que segun la direccion de mi personaje este cambie de sprite por ejemplo
esta parado tiene sprite animado de parado luego le mando a un costado ahi tiene que cambiar a otro sprite animado de caminando pero segun su direccion, pero la cosa se complica ya que yo utilizo el evento draw y ahi no se como hacer que el sprite se anime.
En resumen quiero que el objeto cambie de sprite animado(en cualquier posicion son animados incluso parados) segun la direccion y esto usando el evento draw, ya que lo utilizo para la mostrar la vida y el circulo de seleccion.
gracias por leer y espero puedan ayudarme, saludos ^^.
Título: Re:animacion a objeto segun direccion
Publicado por: FrogGer en Junio 10, 2012, 08:44:09 AM
En los eventos cuando tu personaje cambie de direccion (al apretar izquierda, o algun otro boton) y tienes un sprite o imagen llamada sprite_caminando debes colocar este código:

sprite_index = sprite_caminando

Y asi, debes poner un trocito de código parecido en todos los eventos donde quieres cambiar de imagen. Luego, en el evento Draw simplemente pones.

draw_sprite(sprite_index, -1, x, y)

Ahora, te recomiendo que uses un objeto aparte para dibujar cosas que sean ajenas al personaje principal. Yo uso un objeto invisible llamado Control que se encarga de dibujar y controlar variables que sean relativas al juego en si (vidas, puntaje, etc). Es un consejo :)
Título: Re:animacion a objeto segun direccion
Publicado por: usuariocondudas en Junio 11, 2012, 06:59:20 AM
yo utilizo el mouse es un juego tipo rts, asi que intente con image_Direction pero me iba raro a veces ni me mostraba ningun sprite, probare lo que me dijiste gracias por la ayuda ya aviso si me funciono.
saludos ^^.
Título: Re:animacion a objeto segun direccion
Publicado por: elviskelley en Junio 18, 2012, 09:05:51 AM
Casualmente estoy creando un rts y acabo de terminar ese codigo, pero no te dare el codigo completo solo una parte y tu lo culminas, aca va.
Lo primero que haces es que creas un script para unicamente usarlo para los cambios de sprites en el event end step de cada personaje. Yo llame al mi script scrSpriteDir  pero colocale como quieras.
Los argumentos que use.
argument0=posicion x a moverse.
argument1= posicion Y a moverse.
argument2=sprite de la derecha
argument3=spite de la izquieda
argument4=sprite de abajo
argument5=sprite de arriba
argument6= sprite de diagonal derecha arriba 45º
argument7= diagonal arriba izquierda 135º
argument8= diagonal abajo azquieda 225º
argument9= diagonal abajo iderecha 305º

ahora el script lo que hace es comparar la posicion hacia donde se movera y asi poder elegir el sprite, claro que la comparacion no se hace por grados si no por comparacion entre coordenadas x,y.

if (x > argument0) and (y < argument1) //esto seria  45º
{sprite_index=argument6; exit}
else
if (x < argument0) and (y < argument1) //esto seria  135º
{sprite_index=argument7; exit}
else
if (x < argument0) and (y > argument1) //esto seria  225º
{sprite_index=argument8; exit}
else
if (x > argument0) and (y > argument1) //esto seria  305º
{sprite_index=argument9; exit}
else //Como notaras siempre se inicia con los diagonales.
if (x < argument0)  //esto seria  0º
{sprite_index=argument2; exit}
else
if (x > argument0)  //esto seria  180º
{sprite_index=argument3; exit}
else
if (y < argument1)  //esto seria  270º
{sprite_index=argument4; exit}
else
if (y > argument1)  //esto seria  90º
{sprite_index=argument5; exit}

Como notaras lo que hace es comparar las coordenadas de hacia donde se dirige segun las coordenadas del punto hacia donde se mueve.

Hay que pulir un poco mas el codigo pero la base es esta. Yo uso otras variables pòr lo de el cambio de sprites segun su estado, osea comparaciones por los de si esta solo caminando o atacando.

llamas al scrip en el event end step asi.
scrSpriteDir(x,y,sprite,sprite,sprite,sprite,sprite,sprite,sprite,sprite) claro quitas el x,y, y colocas la var que usas para el punto o coordenada a moverse y los sprites que corresponde.
Si no logras entender este script estas muy crudo para un RTS, inicia por leer mas el manual.