Prototipo de ayuda
Componente Diseñado por
Crea-Flash.com.
Derechos reservados
Paths

En juegos más avanzados Ud. querrá que las instancias sigan ciertos patrones o recorran ciertas trayectorias.  Aunque esto se puede hacer usando eventos temporizados o escribiendo código, sería demasiado complicado. Un mecanismo mucho más sencillo  es usar el recurso de los “Paths”.  La idea es muy simple. Se define una trayectoria o camino (path) dibujándola. Lo siguiente es poner una acción en el evento de creación (creation event) del objeto, para decirle que siga este camino en particular.  Este capítulo explicará este tema en detalle. 

Para agregar un “path” a nuestro juego elija Add Path (Agregar trayecto) en el Add menu (Menú Agregar). El siguiente formulario aparecerá en pantalla. (En el ejemplo ya existe dibujado un pequeño “path”)

En la esquina superior izquierda, como es lo usual,  pondremos el nombre del Path. Debajo encontrará los puntos que lo definen. Cada punto tiene posición y velocidad (indicada con una sp). Dependiendo de cómo se use el path, la posición puede ser absoluta o relativa. Absoluta implica que la instancia que usará el path, seguirá esa trayectoria hasta llegar a una posición final en particular. Relativa significa que la instancia comenzará siempre en la primera posición del path y comenzará desde ahí. La velocidad puede ser interpretada de la siguiente manera. Un valor de 100 significa la velocidad original dada al path cuando se le asigna a la instancia. Un valor menor reduce la rapidez, y uno mayor la incrementa (se indica el porcentaje de la velocidad). La velocidad será interpolada entre puntos, así es que cambiará en forma gradual.

Para agregar un punto presione Add (Agregar). Aparece una copia del punto seleccionado. Ahora, podemos cambiar la posición y la velocidad cambiando los valores en las cajas de edición. Cada vez que seleccione un punto de la lista, podrá también cambiar sus valores. Presione Insert (Insertar) para insertar un nuevo punto antes del actual y Delete (Borrar) para eliminar el punto.

A la derecha de nuestro formulario verá nuestro Path. El punto rojo indica cual es el punto de control. El punto azul es otro punto de control. El cuadrado verde indica la posición en donde comienza el path. También se puede cambiar el path usando el mouse. Haga “Click” en cualquier parte de la imagen para agregar un punto. Haga “clic” en un punto ya existente y arrástrelo cambiando su posición. Presionando <Shift> mientras hace “click” en un punto, insertará otro. Finalmente, se pueden remover puntos usando el boton derecho del mouse. (Observe que de esta forma no se puede cambiar la velocidad). Normalmente los puntos serán alineados con la cuadrícula o red. Se pueden cambiar los parámetros de la cuadrícula en la barra de herramientas superior. También se puede indicar donde la cuadrícula será visible y donde no.  Si desea una posición más precisa, mantenga presionada la tecla <Alt> mientras agrega o mueve puntos.

Se puede cambiar la forma del path de dos maneras: Primero modificando el tipo de conexión entre los puntos. Se puede elegir una conexión con líneas rectas o un path con líneas más suaves. Segundo, se puede indicar si queremos que el path sea cerrado o no. 

En la barra de herramientas hay un importante número de controles. De izquierda a derecha encontramos los siguientes: El primer botón indica que se está listo y se desea cerrar el formulario, manteniendo los cambios. (Si se quiere descartar los cambios, presione la cruz para cerrar la ventana ). El siguiente es el botón que reversa el último cambio.

La siguiente serie de botones en la barra de herramientas, permite borrar el path, reversar el orden y regresar por el path, cambiar el path, hacer un reflejo en forma horizontal, darlo vuelta en forma vertical, rotarlo, y escalarlo. Los siguientes son botones para cambiar la vista (No el path en sí mismo; la vista del área actual se indica en la barra de estado al final) y para centrar la vista.

Como antes se indicó, después se pueden poner los valores de unión y cuando  mostrar la cuadrícula. Finalmente hay un botón para indicar que se desea poner un escenario (Room) en particular como telón de fondo para el path. Usando esto se puede fácilmente poner el path en un lugar específico del escenario, por ejemplo en una pista de carreras, así más tarde la instancia seguirá la ruta correcta. (Esto solo tiene sentido cuando se usan path absolutos. Vea a continuación)

Para asignar un path a una instancia de un objeto, se puede poner la acción del path en algún evento, por ejemplo en el “creation event” (Evento de creación). En esta acción se debe especificar el path a partir  del menú de despliegue. Hay algunos valores adicionales que pueden ser cambiados.

Se debe indicar el path a seguir y la velocidad en píxeles por paso ( pixels per step).  Cuando la velocidad es positiva, la instancia comienza al principio del path. Si es negativa comienza al final. Recuerde que cuando se definió el path se especificó la velocidad actual como relativa. También existe una acción para cambiar la velocidad con la que se ejecuta el path. Se podría, por ejemplo, usar esto para frenar una instancia o acelerarla a través del path. Observe que la velocidad normal de la instancia se ignora (actualmente puesta a 0) cuando se ejecuta el path. También cosas como la gravedad y la fricción no influencian el movimiento a lo largo del path.

Lo siguiente es especificar el comportamiento del final, esto es, que debería pasar cuando se encuentra el final del path. Se puede elegir detener el movimiento y finalizar el path. También se puede reiniciar el path desde el comienzo, esto es, la instancia retrocede, saltando hacia la posición donde comienza el path, y desde ahí se parte. Una tercera opción es reiniciar desde la posición actual, esto es, la instancia continúa por el path de nuevo, pero ahora con este nuevo punto de partida (esto es lo mismo que sí el path está cerrado). Finalmente se puede elegir reversar el movimiento haciendo que la instancia retroceda a través de todo el path. Observe que también ocurre un evento al final del path, vea a continuación.

Finalmente se puede indicar donde el path debe ser absoluto o relativo. Un path absoluto se ejecuta en el lugar donde fue definido. La instancia se ubica en el punto de inicio y desde ahí se mueve. (posición final cuando la velocidad es negativa). Esto es útil, por ejemplo, cuando tenemos una pista de carrera dentro de la cual se ha definido un path. Al elegir path relativo, las instancias comienzan ejecutando el path desde la posición en que están. Útil cuando una instancia deba hacer un movimiento local. Por ejemplo, la nave espacial del juego Space Invaders puede hacer un giro particular desde la posición en que está. 

Cuando se desee ubicar la instancia en un punto diferente a lo largo del path se puede usar una acción para encontrar la posición del path.  La posición del path siempre estará entre 0 y 1, donde 0 indica la posición de partida y 1 la posición final. Observe que en cada paso la variable dirección está puesta en forma automática en la correcta dirección a lo largo del path. Se puede usar esta variable para elegir la orientación correcta del sprite. 

Cuando use scripts o piezas de código tendremos mejor control sobre la manera en que se ejecuta el path. Hay una función de comienzo del path para la instancia. La variable path_position indica la posición actual en el path (entre 0 y 1 como se indicó más arriba) . La variable variable path_speed indica la velocidad a través del path. La variable path_scale se puede usar para escalar el path. Un valor de 1 es el tamaño original. Un mayor valor indica agrandar el path, un valor menor lo hace pequeño.  La variable path_orientation indica la orientación en la cual el path debe ser ejecutado (en grados en la dirección de las manecillas del reloj). Esto posibilita ejecutar el path en una orientación diferente  (por ejemplo moviéndolo arriba y abajo, como también a la izquierda y a la derecha. También hay una variable para controlar comportamiento final. Finalmente hay varias funciones que manejan propiedades del path (por ejemplo  las coordenadas x e y en una cierta posición) y hay funciones para crear path. También hay funciones que crean path libres de colisiones para que una instancia logre alcanzar la meta. Vea la sección de lenguaje GML para mayores detalles.

Se preguntará que pasa cuando la instancia colisiona con otra dentro del path. Básicamente lo mismo que pasa cuando la instancia está en movimiento. Cuando encuentra una instancia sólida, choca y retrocede a su ubicación previa. Si las instancias que se encuentran no son sólidas, siguen sus caminos, pero se ejecuta el evento de colisión  y se revisa donde ocurrió esta. Si no es este el caso, y la otra instancia es sólida, nuestra instancia se detendrá (asumiendo que hay un evento de colisión ya definido). La variable path_position no se incrementa. Cuando la instancia que bloquea el camino desaparece, la nuestra continuará a través del path. Para el manejo de colisiones la variable path_position puede ser útil ya que contiene la posición previa del path, entonces podemos cambiar la posición en el path cambiando esta variable, evitando el avance a lo largo del path.

Como se describió anteriormente, se puede indicar que debe pasar cuando la instancia alcanza el final del path. En ese preciso momento ocurre el event End of Path (final del path). Puede encontrarlo dentro de Other (otros) eventos. Por ejemplo,  podríamos destruir la instancia o hacer que comience en un nuevo (diferente) path.