Creative Commons License
Teoria de Juegos en Flash. Calculo del movimiento de un vehiculo con direccion y velocidad. por Julio Laguna is licensed under a Creative Commons Reconocimiento-No comercial-Sin obras derivadas 2.5 España License.

Teoria de Juegos en Flash. Calculo del movimiento de un vehiculo con direccion y velocidad.
por Julio - redribera

1 Capítulo 1.

1.4 Movimiento dirigido. vector dirección.

En los ejemplos anteriores, hemos visto como desplazar una instancia de un simbolo de Clip de pelicula (objeto MovieClip), a lo largo de los ejes X e Y de un plano cartesiano, como lo es el area de dibujo de la escena principal. También como practicar una rotación al mismo.
Estas operaciones no revisten una excesiva complejidad, modificamos los valores de las propiedades _x e _y de un MovieClip, atendiendo a la dirección que pulsemos en los botones de dirección. De esta forma realizamos incrementos, pero realmente a lo largo de un único eje, el X o el Y, Esto es un movimiento horizontal o Vertical.

Realmente es un movimiento sencillo, pero no es un movimiento que atienda a todas las necesidades de movimiento de un objeto. Volvamos al ejemplo principal que pusimos, la escena de movimiento de nuestro tanque:


Este movimiento atiende a un patrón diferente, y mas próximo a la realidad que nos rodea, de hecho será un movimiento que busquemos para el desarrollo de una gran variedad de juegos Flash, que al fin y al cabo es el objeto de esta guia.
En este tipo de movimiento, necesitamos aplicar una velocidad de movimiento y algo muy importante, una dirección de movimiento. Nuestro tanque, debe moverse hacia la dirección determinada por la parte delantera (Marcha adelante), o la trasera (Marcha atrás). Además debemos permitir realizar giros del vehiculo hacia la izquierda o hacia la derecha, lo cual variará la posición de nuestro tanque, en definitiva la dirección del movimiento.
La solución de determinar los valores de _x e _y de nuestro MovieClip, está condicionada pues, a dos factores, la dirección u orientación del vehiculo, y su velocidad. Ahora deberemos variar ambos valores _x e _y simultaneamente para responder a las exigencias de este nuevo movimiento.
Afortunadamente para nosotros, ya existe una disciplina que nos permite estudiar, conocer y dar respuesta a estos fenomenos. Se trata de la cinemática: la parte de la mecánica clásica que estudia las leyes del movimiento de los cuerpos sin tener en cuenta las causas que lo producen.
La cinemática estudia una serie enorme de movimientos de objetos. En este tutorial no vamos a profundizar, mas que en el movimiento que concierne a nuestro tanque, así que intentaré no hacer aburrido esto. No obstante os dejo un enlace de la wikipedia con los conceptos de cinemática, para los que deseeís profundizar en este tema.

Nosotros vamos a implementar, lo que se conoce como movimiento rectilineo uniforme, de velocidad constante. En definitiva, lo mas parecido a un coche (pero sin aceleración). Para abordar este problema en un sistema de coordenadas cartesiano, necesitamos conocer un parametro muy importante, y que se conoce como el vector de dirección. El vector de dirección es el medio matemático que nos permitirá conocer hacia donde esta orientado nuestro tanque.
El trabajo con vectores es un tema de estudio muy importante en física y matemáticas, y es también un área de estudio muy extensa. Puesto que no deseo hacer este tutorial un torro infumable, no os daré la tabarra con toda la teoría de vectores, la cual se puede encontrar en internet sin demasiada complicación. Por ejemplo en este enlace.

Diferentes vectores de dirección.
Diferentes vectores de dirección.

Si os fijaís en la imagen a la izquierda, vereís diferentes vectores (las flechas) con diferentes direcciones (hacia donde apunta la flecha). Los vectores en azul y verde, son los vectores que utilizamos en los ejemplos anteriores para desplazar la caja, a lo largo de los ejes X e Y. Se trata de vectores unitarios (módulo 1), cuya dirección es horizontal o vertical.
Sin embargo el vector en color rojo, es el vector que nos interesa conocer, también un vector unitario, pero con una dirección que vendrá determinada por el angulo que forman con respecto a otro vector conocido, por ejemplo cualquiera de los dos vectores de los ejes.

Y después de todo este rollo que os estoy soltando, realmente, ¿Por que queremos conocer el vector de dirección del vehiculo?.
Muy sencillo, porque si conocemos el vector unitario y cuya dirección es la dirección del movimiento de nuestro vehiculo, seremos capaces de determinar la nueva posición, para un lapso de tiempo, de nuestro vehiculo , para una velocidad dada, en la dirección determinada por el vector de dirección. Esto es conoceremos los nuevos valores de las propiedades _x e _y del MovieClip del tanque. Y esto realmente es así, porque no varían las coordenadas del clip del tanque, aunque este produzca una rotación.
En un enfoque matemático, realmente, lo que estamos haciendo será calcular un punto de una recta conocido un punto (la posición actual x e y del tanque) y conocido su vector de dirección. Las formulas son estas:

  • x = p1 + v * d1
  • y = p2 + v * d2

Donde x e y, son los valores de las coordenadas de la nueva posición que queremos calcular.
p1 y p2, son los valores actuales de x e y (del clip de tanque)
v es el valor de velocidad constante
d1 y d2 son los valores del vector de dirección.

ángulo entre dos vectores.
ángulo entre dos vectores.

Todos los parametros necesarios para calcular la posición de nuestro tanque, los tenemos, salvo los valores x e y del vector de dirección. Pero este dato, afortunadamente, seremos capaces de calcularlo. Fijaos en la imagen a la izquierda. En el se pueden ver dos vectores A y B, similar a la imagen anterior. B sería en este caso el vector perpendicular al frontal del tanque, el vector de dirección. Si conocemos el angulo que forma con respecto a un vector concido como puede ser A y que es el vector v=(0,1), seremos capaces de calcular el valor de nuestro nuevo vector. ¿Como?, pues mediante lo que se conoce como matriz de transformación de un vector.

« Anterior
Indice
Siguiente »