Como hacer un juego con flash. Parte 2

  •  El problema ahora se nos plantea cuando queremos que el objeto se oriente hacia unas coordenadas en concreto. ¿Cómo calculamos el ángulo necesario para que nuestro elemento se oriente hacia otro situado en las coordenadas 100, 200? La solución no es muy complicada: deberemos echar mano de la trigonometría.

En Flash tenemos una función muy útil que nos ayuda a encontrar ángulos rápidamente.
Utilizando la función Math.atan2 recuperaremos el ángulo formado por unas coordenadas en el espacio respecto a un punto central.
Veamos un ejemplo:
Trigonometria 1
Escribiendo la siguiente línea recuperaremos el ángulo que buscamos:
var angulo:Number = Math.atan2(x, y);
Nota: Hay que tener en cuenta que el ángulo calculado está expresado en radianes.
Ahora veamos las tres consideraciones que tenemos que tener en cuenta.
Observa este ejemplo:
Trigonometria 2
Lo primero a tener en cuenta es que las coordenadas que tenemos del punto al que queremos orientar el objeto no están en relación éste.
Podemos averiguarlas de forma muy fácil haciendo una pequeña conversión restando las coordenadas entre sí:
Trigonometria 3
Ahora ya podemos emplear la función atan2:
var angulo:Number = Math.atan2(x1 - x2, y1 - y2);
Lo segundo que tendremos que saber es que esta función devuelve un ángulo medido en el sentido contrario a las agujas del reloj, es decir:
Trigonometria 4
Por tanto si decimos a nuestro objeto que se oriente -30 grados se colocará de esa forma:
Trigonometria 5
Nuestro objeto se encuentra en otro cuadrante completamente diferente, pero si observamos con atención, la diferencia siempre será de 90º:
Trigonometria 6
Sólo tenemos que sumarle 90 al ángulo resultante para que el objeto se oriente hacia el lugar correcto.
Así que solventaremos esto son una sola línea. Pero antes convertiremos el ángulo resultante en radianes a grados:
var grados:Number = Math.round(angulo*180/Math.PI);
 miClip.rotation = grados + 90;
Desde luego la suma que hemos realizado es consecuencia directa de que el objeto este orientado inicialmente hacia arriba (y empiece a contar los grados desde ese punto en 0).
Si partiésemos de un estado original horizontal como el desfase del objeto ya se encuentra a 90 grados no hará falta realizarlo:
Trigonometria 7
Observa que en este caso si giramos el objeto -30 grados se colocará orientado hacia la posición que buscamos.
O incluso, si al contrario, el objeto se encuentra orientado hacia la izquierda deberemos sumarle 180º.
Trigonometria 8
Como ves, todo dependerá de la posición original del objetos (y de que vértice quieras orientar). Lo más aconsejable en este caso es que los objetos que vayan a rotar estén orientados hacia la derecha, así no tendrás que preocuparte del desfase del ángulo.
Fuente: AulaClic.com

0 comentarios:

Publicar un comentario

*Respeta la opinión de los demás, cualquier comentario que contenga insultos o burlas será eliminado.
*No des publicidad, ni nombres confusos, escribe claro y que se entienda tu punto.
*Si no te gusta la publicación comenta para mejorar, pero no ofendas a nadie.

Si no cumples con lo dicho anteriormente tus comentarios serán eliminados.