Hola amigos, quisiera saber como iniciar las animaciones de los sprites en una subimagen determinada. Lo que pasa es que a veces las animaciones inician en subimagenes que quedan a mitad de la animacion o a veces van mas rapido de lo normal. Entonces quisiera saber como determino estos dos valores para que siempre sean los mismos.
(Trabajo en game maker studio 2)
Gracias
Al asignar sprite_index, también asigna image_index.
Clamud, pero al asignar el image_index la animacion se queda estatica en ese frame y lo que quiero es que la animacion siempre parta del frame 0 (por decir) no que se quede estatica en ese frame
Intenta hacer esto:
En el evento Create, declara una variable que almacenará el sprite anterior:
[gml]
///Evento Create
sprite_index_prev = sprite_index;
[/gml]
Luego, en End Step, actualiza la variable.
[gml]
///Evento End Step
sprite_index_prev = sprite_index;
[/gml]
Y en Step, compruebas el sprite actual con el anterior, y si son diferentes (si el sprite recién se ha cambiado), reiniciar image_index:
[gml]
if(sprite_index <> sprite_index_prev)
image_index = 0;
[/gml]
Cita de: NiuWeb en Junio 04, 2017, 12:27:49 AM
Intenta hacer esto:
En el evento Create, declara una variable que almacenará el sprite anterior:
[gml]
///Evento Create
sprite_index_prev = sprite_index;
[/gml]
Luego, en End Step, actualiza la variable.
[gml]
///Evento End Step
sprite_index_prev = sprite_index;
[/gml]
Y en Step, compruebas el sprite actual con el anterior, y si son diferentes (si el sprite recién se ha cambiado), reiniciar image_index:
[gml]
if(sprite_index <> sprite_index_prev)
image_index = 0;
[/gml]
Amigo tu código me sirvió, curiosamente solo para el objeto player para los demás quiero hacerlo yo. Y el problema es que no entendí del todo tu código. No controlo para nada lo del End step pero he escuchado que puedes prescindir de el, al igual que del Begin step, y hacerlo todo en el Step normal. Asi que mis preguntas son:
¿Por que usas el End Step?
Cuando dices...
[gml]
///Evento Create
sprite_index_prev = sprite_index;
[/gml]
¿Ese
sprite_index es el sprite que le doy por defecto al objeto?
y por ultimo ¿ por que cuando dices
image_index = 0 la imagen no se queda estática en el frame 0 del sprite?
Perdón por tantas preguntas pero enserio me dejo con muchas incógnitas tu código, me sirvió pero quisiera entenderlo para poder usarlo con otros objetos.
Cita de: JasperStealth en Junio 04, 2017, 04:04:10 AMCuando dices...
[gml]
///Evento Create
sprite_index_prev = sprite_index;
[/gml]
¿Ese sprite_index es el sprite que le doy por defecto al objeto?
Sí, exactamente eso.
Los eventos
Begin Step,
Step y
End Step son casi iguales, sólo que se ejecutan primero, segundo y tercero respectivamente.
La lógica es que si cambias
sprite_index en alguna parte del código que no sea
End Step, la variable del sprite previo guardará el cambio, para en el siguiente fotograma tener tanto el sprite que se cambió en el fotograma actual como el sprite que tenía en el anterior.
La razón por la que no se queda estático el sprite es porque la condición evita que image_index sea 0 en todos los fotogramas, y esto es porque el sprite anterior y el actual sólo son distintos durante un fotograma; al siguiente se igualan.
Cita de: NiuWeb en Junio 04, 2017, 04:15:44 AM
Cita de: JasperStealth en Junio 04, 2017, 04:04:10 AMCuando dices...
[gml]
///Evento Create
sprite_index_prev = sprite_index;
[/gml]
¿Ese sprite_index es el sprite que le doy por defecto al objeto?
Sí, exactamente eso.
Los eventos Begin Step, Step y End Step son casi iguales, sólo que se ejecutan primero, segundo y tercero respectivamente.
La lógica es que si cambias sprite_index en alguna parte del código que no sea End Step, la variable del sprite previo guardará el cambio, para en el siguiente fotograma tener tanto el sprite que se cambió en el fotograma actual como el sprite que tenía en el anterior.
La razón por la que no se queda estático el sprite es porque la condición evita que image_index sea 0 en todos los fotogramas, y esto es porque el sprite anterior y el actual sólo son distintos durante un fotograma; al siguiente se igualan.
Perfecto muchas gracias, ya logre adaptar el código a los demás objetos, era solo cambiarle un par de cosas y ya. Me ayudaste mucho NiuWeb. Gracias.