Movimientos en círculos
En esta ocasión contaremos cómo mover un actor en círculos alrededor de otro usando un botón, la cual es una mecánica muy elegante y un tanto complicada de lograr. Divideremos el tutorial en dos: en una primera parte veremos el script o código de cada actor y en una segunda parte contaremos algunas modificaciones que se le pueden hacer.
Lo que queremos lograr es lo siguiente*:
*extraido de un juego para android que estoy haciendo
1.El script y su modo de uso.
Vamos a requerir 4 actores:
- Un actor que será el centro, en este caso una nave.
- Otro actor que se moverá en círculos alrededor del centro, en nuestro caso será una mira.
- Dos botones: uno moverá en el sentido horario, llamado horario_girar, y otro en sentido anti horario, llamado antihorario_girar.
- Para la Mira:
- Para el botón de girar en sentido horario:
- Para le botón de girar en sentido anti horario:
2 Algunas modificaciones fáciles de hacer
A continuación modificaremos los códigos para lograr algunas mecánicas nuevas.
Si quisiéramos mantener pulsado el botón y que la mira gire automáticamente y no tener que apretar varias veces, deberíamos agregar a los botones una variable booleana que se active al pulsar y se desactive al dejar de pulsar de tal forma que al estar en true active un contador que automaticamente haga girar la mira.
Si quisieramos lanzar un misil y que este fuera en la dirección que apunta la mira, deberíamos guardar el angulo_con_nave como una variable de proyecto y hacer que el misil se mueva con la función:
Donde this.rotacion es igual al angulo_con_nave pero convertido otra vez en grados. Para no ir llenando el vlog con mucho código les comparto el proyecto con estas modificaciones:
https://mega.nz/file/UAsHUIKb#S54dDfu8iG-b3a4EH_JPeVBr0fAo5vCehsG6LQEH6Tw
3. Matemáticamente hablando:
Pilas Engine mueve las cosas a través de los llamados ejes cartesianos X,Y, este sistema de ejes permite mover muy fácilmente los actores en la direcciones adelante-atrás y arriba-abajo, pero no es sencillo mover cosas en círculos o curvas.
Para mover algo en círculos, pero sin cambiar de ejes, recurrí a lo que en matemáticas se llama "coordenadas polares" en donde un punto de la forma (X,Y) se reescribe como (r, θ) donde r es la distancia del punto al centro (0,0) y θ es el ángulo entre el punto y el eje X. Para este caso el punto (0,0) es la posición del actor nave.
Básicamente lo que hice fue transformar la posición de la mira en coordenadas polares, sumarle o restarle un valor a θ para moverla y volver a convertir esas coordenadas polares en coordenadas cartesianas X,Y mediante las siguientes fórmulas:
x = r * cos( θ)
y = r * sen(θ)
QDR.
Comentarios
Publicar un comentario