|
|
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. |