Como usar TimeLines
Los Timelines o líneas de tiempo son rutinas que podemos programar para que ocurran ciertas cosas en ciertos momentos en el tiempo. Sabemos que existen los eventos de Alarma, que podemos activar cuando queramos, pero con los timelines podemos hacer cosas más complejas de una manera más sencilla (recordemos que tenemos 12 alarmas, en algunos casos puede ser poco). Así es como usar timeline.
En un timeline especificamos las acciones que deben ocurrir, y todas esas acciones también están disponibles para un objeto en sus eventos. Cuando creamos un timeline se asocia a un objeto, al igual que hicimos con las rutas, y la instancia de ese objeto ejecutará las acciones que hemos puesto en el timeline.
Un par de ejemplos
Por ejemplo, imaginemos que hacemos un juego arcade de naves, y queremos que a los 2 segundos de empezar el juego aparezca un enemigo, al cabo de 5 segundos 3 enemigos más, etc. Podemos crear una alarma por cada enemigo activadas con diferentes steps, o una alarma que vaya cambiando de tiempo de activación cada vez. Pero es mucho más sencillo crear un timeline, asignarle en cada momento los enemigos que se van a crear y ejecutar el timeline al principio de la room.
Otro ejemplo, imaginemos que hacemos en un juego RPG que un personaje se mueva de la siguiente manera: 20 steps hacia la izquierda, 15 hacia arriba, 20 steps hacia abajo y después de hacer eso 3 veces seguidas se pare. Se nos ocurre varias formas de poder hacerlo: una es definiendo un path, y controlando cuando queremos que se pare definitivamente. Otra mediante alarmas, programando muy bien los movimientos que hay que hacer. Y la manera más sencilla, con un timeline, definiendo en cada momento cuando tiene que cambiar de dirección y finalmente parar.
Como crear un timeline
Para crearlo, podemos hacerlo como siempre, desde el árbol de recursos o desde el menú Resources – Create Time Line. Abrirá una ventana como ésta:
Vemos que se parece mucho a la ventana del editor de objetos, ya que tiene las mismas pestañas en el lado derecho. Eso significa que podemos hacer las mismas acciones, pero en vez de asignarlas a eventos concretos, esos que ya conocemos, los asignaremos a momentos en el tiempo. Esos momentos los definimos con steps, es decir, cuando decimos en tal momento creamos un objeto, diremos en tal step creamos el objeto.
Pero antes de nada, hay que hacer como cualquier otro recurso: darle un nombre único. Yo suelo usar el prefijo tml_. Vemos que donde solemos ver los eventos en un objeto, tiene una lista de los momentos que hemos añadido. Recordemos que un timeline se ejecutará cuando hayamos añadido la acción en un objeto, por tanto, el momento 0 del timeline no es cuando se inicia la room, sino cuando se lo añadimos en un objeto. Ahora vamos a ver los botones para gestionar esos momentos.
Botones de gestión en el timeline
Los botones están para añadir, eliminar o modificar los momentos dentro de un timeline. Estos botones son:
- Añadir. Con esta opción agregamos un momento en la línea de tiempo. Aparecerá una ventana para indicar el momento, es decir, el número de step desde que se inició el timeline (tal y como hemos comentado antes). Una vez añadido ese momento en la lista, podremos arrastrar acciones a la lista, igual que si fuera en un evento de un objeto. También podemos añadir código GML.
- Cambiar. Este botón cambia el número de steps de un momento seleccionado.
- Eliminar. Elimina un momento o una serie de momentos (depende del rango que pongamos en la ventana que aparece). Así, poniendo un momento de inicio y otro de final, borrará todos los del rango (con sus acciones asociadas).
- Limpiar. Borra toda la lista de momentos que hemos añadido.
- Mover. Coge un rango de tiempos y los mueve dentro del timeline. Por ejemplo, si tenemos los momentos 5, 30, 40 y 70, si decimos que el rango entre 30 y 70 los mueva al 10, al final quedará 5, 10, 20 y 50. Como vemos mantiene la misma separación de pasos entre un momento y otro.
- Duplicar. Es muy parecido al botón de cambiar, pero hará una copia del momento seleccionado.
- Propagar. Del rango de tiempo que queramos, añadirá o restará tiempo dependiendo del porcentaje que le digamos. Por ejemplo, imaginemos que hemos añadido los pasos 5, 8 y 12. Si elegimos en la ventana From moment 5, till moment 12 y un porcentaje de 200, al final los pasos serán 5, 11, 19. ¿Porque esos valores? Hemos dicho que el porcentaje es de 200, es decir, que duplica los tiempos. Si entre el tiempo 5 y el 8 son 3 pasos, al duplicarlo serán 6. Si entre el tiempo 8 y 12 hay 4 pasos, al duplicarlo serán 8. De ahí que los tiempos sean 5 (al ser el primera se mantiene), 11 y 19.
- Unir. Une todas las acciones de un rango de momentos. Por ejemplo, si tenemos los pasos 10, 30, 70, y 100, con este botón metería todas las acciones programadas en cada momento en el 10.
- Mostrar información. Al igual que con el editor de objetos, nos permite tener una visualización de todo lo que se ha añadido en el timeline, en formato HTML para visualizar rápidamente o imprimir.
Acciones en el timeline
No hay mucho más que comentar con las acciones en el timeline. Al estar relacionado un timeline con el objeto, todas las acciones están relacionadas con ese objeto (movimiento, gravedad, etc). También podemos añadir código GML, de esta manera podemos ampliar todo lo posible las posibilidades de añadir complejidad a nuestro objeto.
Y hasta aquí todo lo que se puede hacer con las líneas de tiempo, un recurso muy útil para muchos casos que nos podemos encontrar y que puede ser difícil de programar si usamos alarmas.
quisiera saber como puedo poner un rango de tiempo. Un ejemplo de ello esque, cuando un sprite colisione con un objeto X, la nueva accion se mantenga por Y tiempo
La manera más sencilla sería crear una alarma en el momento de la colisión, con el tiempo
Y
marcado. Justo cuando la activas, pones una variable a trueaccion1 = true
Y en la alarma
accion1 = false
Luego para usar la acción debes poner
if accion1 == true
//uso la acion aqui
Quisiera saber como pausar un timeline para que el jugador tenga tiempo de leer los diálogos entre personajes, y una vez desaparezca la barra de dialogo continué el timeline.
Logre que frene el timeline cuando aparece el dialogo pero no puedo hacer que se reanude cuando se terminan los textos
Con
timeline_running
puedes pausarlo y reactivarlo con true o false.hola ! como es eso de timeline_running? porque lo pongo en el time line y no se pausa sigue funcionando como si nada.
¿Como le digo que hasta que no termine el texto no quiero que avance?
muchas gracias.
¿Cómo puedo indicarle a un mismo objeto que seleccione distintas timeLine y las ejecute, y por otro lado, como detener una concreta?
Nunca he necesitado utilizar varias timelines a la vez, y por lo que veo no se puede asignar más de una a un objeto. Lo que podrías hacer es crearte un objeto sólo para ejecutar el timeline que te interesa.
Para para un timeline, prueba de poner su velocidad a 0.
timeline_speed = 0;