Buenas, pues estoy probando las Secuencias de la version 2.

Se mueve muy facil y todo muy bonito, pero...... Cuando termina la Secuencia, como se sale de ella??? Por ejemplo, para entra en otra Sala???

???

Saludos!!!
PCNONOGames  www.pcnono.es

Bueno, parece ser que nadie sabe como funciona las sequences???  :-[
PCNONOGames  www.pcnono.es

Puedes usar la función layer_sequence_get_headpos() para ver en que posición esta la secuencia, una vez llega a la posición que quieres ejecutas el código que quieres:   

[gml]if layer_sequence_get_headpos(Sequence_id) >= 150 {
   room_goto_next()
}[/gml]



Alternativamente, puedes hacer que la secuencia transmita un mensaje en la posición en que quieres ejecutar el código:



Luego en el evento Broadcast Message colocas el código que ocupas que corra cuando la secuencia envia el mensaje:

[gml]if event_data[? "event_type"] == "sequence event"{
   switch (event_data[? "message"]){
      case "Finish":
           room_goto_next();
         break;
   }
}[/gml]



También podrías simplemente poner un objeto al final de la secuencia que tenga el código que quieres usar:





Finalmente, puedes agregar un "momento" a la secuencia, en el que se ejecutará una función de script previamente definida:



Con la funcion de script ejecutando el código que necesitas:

[gml]/// @function change_room();
function change_room(){
   room_goto_next();
}[/gml]

Ok, muy buena explicación. Pues voy a probarlo, supongo que con algún método daré  con la tecla.

Es que esta función no la había utilizado antes, creo que es nueva en la versión 2 sino me equivoco.

Muchas gracias. Saludos. 😉

Cita de: Void en Mayo 27, 2021, 06:24:16 AM
Puedes usar la función layer_sequence_get_headpos() para ver en que posición esta la secuencia, una vez llega a la posición que quieres ejecutas el código que quieres:   

[gml]if layer_sequence_get_headpos(Sequence_id) >= 150 {
   room_goto_next()
}[/gml]



Alternativamente, puedes hacer que la secuencia transmita un mensaje en la posición en que quieres ejecutar el código:



Luego en el evento Broadcast Message colocas el código que ocupas que corra cuando la secuencia envia el mensaje:

[gml]if event_data[? "event_type"] == "sequence event"{
   switch (event_data[? "message"]){
      case "Finish":
           room_goto_next();
         break;
   }
}[/gml]



También podrías simplemente poner un objeto al final de la secuencia que tenga el código que quieres usar:





Finalmente, puedes agregar un "momento" a la secuencia, en el que se ejecutará una función de script previamente definida:



Con la funcion de script ejecutando el código que necesitas:

[gml]/// @function change_room();
function change_room(){
   room_goto_next();
}[/gml]
PCNONOGames  www.pcnono.es

Vale, funciona, ya lo voy entendiendo. Lo que no tengo claro es si hay que destruir o eliminar la secuencia una vez finalizada su tarea. Y si es así, como sería??

:-[

Cita de: Void en Mayo 27, 2021, 06:24:16 AM
Puedes usar la función layer_sequence_get_headpos() para ver en que posición esta la secuencia, una vez llega a la posición que quieres ejecutas el código que quieres:   

[gml]if layer_sequence_get_headpos(Sequence_id) >= 150 {
   room_goto_next()
}[/gml]



Alternativamente, puedes hacer que la secuencia transmita un mensaje en la posición en que quieres ejecutar el código:



Luego en el evento Broadcast Message colocas el código que ocupas que corra cuando la secuencia envia el mensaje:

[gml]if event_data[? "event_type"] == "sequence event"{
   switch (event_data[? "message"]){
      case "Finish":
           room_goto_next();
         break;
   }
}[/gml]



También podrías simplemente poner un objeto al final de la secuencia que tenga el código que quieres usar:





Finalmente, puedes agregar un "momento" a la secuencia, en el que se ejecutará una función de script previamente definida:



Con la funcion de script ejecutando el código que necesitas:

[gml]/// @function change_room();
function change_room(){
   room_goto_next();
}[/gml]
PCNONOGames  www.pcnono.es

Las secuencias no se destruyen automáticamente al llegar a su cuadro final, dependiendo del comportamiento que se le ha dado se quedaran en su cuadro final, se regresaran a su cuadro inicial y empezaran de nuevo, o se ejecutaran en reversa hasta llegar al punto inicial y volverán a empezar.

Es a criterio propio cuales secuencias se deben eliminar y cuales pueden seguir existiendo. Para eliminarlas se puede usar la función layer_sequence_destroy():

[gml]
if layer_sequence_is_finished(Sequence_id)
   layer_sequence_destroy(Sequence_id)[/gml]

Muchas gracias, lo pruebo. Por cierto, y para crear por código una secuencia que no se encuentra en la room??

???
PCNONOGames  www.pcnono.es

Para crear secuencias con código se usa layer_sequence_create():

[gml]layer_sequence_create(Layer_ID,x,y,Sequence_ID)[/gml]

Como consejo, si vas a seguir experimentando con secuencias deberías empezar por el manual

layer_sequence_create
Capas de Sequencia
El Editor de Secuencias

Muchas gracias. Si, si el manual fue lo primero que mire, pero esta super mal estructurado y explicado.

O al menos, eso me ha parecido.

PCNONOGames  www.pcnono.es