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 ^^.
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 :)
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 ^^.
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.