Febrero 03, 2015, 02:08:56 AM Ultima modificación: Febrero 03, 2015, 02:31:40 AM por mastershadow
Actualmente me encuentro trabajando en un proyecto con GMS (soy completamente nuevo tanto usando game maker como GML  aunque tengo un poco de experiencia con lenguajes de programación en general) y la situación es la siguiente:

Necesito que cuando se presione una tecla X (en este caso las de movimiento) y se suelte la tecla al momento sin mantenerla el personaje cambie su sprite al de observar hacia el lado correspondiente dependiendo de la tecla que se ha presionado y si se MANTIENE la tecla presionada el personaje pase a moverse hacia un lado o al otro ejecutando su respectiva animación de caminar que en este caso seria cambiar entre 3 sprites (el personaje estando parado, el que esta caminando, y otra versión del personaje caminando) el personaje al dar el primer paso debe cambiar el sprite en el proceso en lo que se mueve (en este caso la primera versión del mismo caminando en lo que se ejecuta el movimiento y volver al estado de estar parado cuando termine) y si se camina devuelta hacia esa misma dirección se ejecute la "segunda" animación/segundo sprite en lugar de la primera (la segunda version del personaje caminando) y viceversa  (como ya os dije soy nuevo en game maker) la cual corresponde al movimiento de una mano y el otro al de otra (si se mantiene apretado el botón continuamente se deben intercalar los 2 sprites caminando y cuando se suelta al botón vuelve a su posición normal)

No estoy seguro de si me he explicado correctamente (probablemente no) puesto que no se me ocurre una mejor forma de describirlo.. si alguien puede ayudarme con el temilla este no me pongáis un script ni nada decirme que hacer y como y dejarme fallar un poco y divertirme en el proceso intentando currarme una forma de hacerlo funcionar.... Simplemente hacerme conocer el como puesto que ahora mismo estoy en blanco jeje

#1 Febrero 03, 2015, 02:20:36 AM Ultima modificación: Febrero 03, 2015, 02:29:38 AM por penumbra
Cita de: mastershadow en Febrero 03, 2015, 02:08:56 AM
No estoy seguro de si me he explicado correctamente (probablemente no)
Intenté entender qué quieres hacer, pero me ha confundido tu manera de explicarlo, Y me ha enredado más lo del movimiento de una mano (¿la mano de quién?)r. ¿Acaso la animación está dividida en dos etapas y la primera mitad de un ciclo de caminata corresponde a un sprite y la segunda mitad a otro sprite y el movimiento de la mano son los movimiento de los brazos en el ciclo de caminata?

al menos a mi no me ha quedado claro.  ???

Si acaso he entendido es que si la tecla de movimiento está presionada, debe pasar de un sprite a otro de manera ininterrumpida. Eso se puede hacer usando o STEP o el evento ANIMATION END

Digamos que sprite1 es la primera versión de caminata y sprite2 la segunda versión.

En ANIMATION END preguntas mediante una condición si el sprite es sprite1, si es así, preguntas si se está presionando en ese momento la tecla de movimiento, si resulta que sí, entonces se resetea image_index (para que la animación nueva comience en el frame 0) y se cambia sprite_index a sprite2.

USando step sería
a) Preguntar si el sprite actual corresponde a caminata versión 1 y si el sprite ha llegado a su última subimagen.
b)Si lo de arriba se cumple, y se sigue presionando la misma tecla de direccion, se cambia sprite_index al sprite versión2  (pero también hay que resetear image_index para que la aniamacion comience donde debe)

Ya sea que se use STEP o ANIMATION END, lo que yo puse es la mitad del proceso, faltaría verificar si estando en curso la animacion de sprite2, se ha llegado a la última subimagen, y si se sigue presionando la misma tecla de dirección, volver a comenzar a mostrar sprite1