Godot 2D #6: Mirar hacia el ratón

17.04.2020


¡Muy buenas a todos! 

Hoy vamos a hacer que nuestro personaje mire hacia el ratón.


Esta entrada corresponde a la parte escrita del vídeo que he hecho en YouTube. Si quieres ver este mismo tutorial de una forma más visual, no dudes en echarle un vistazo. Además, este vídeo incluye mucha más información y explicaciones gráficas que te ayudarán a comprender mejor qué es lo que estamos haciendo. Así que no lo dudes, ¡échale un ojo!

Vídeo de este tutorial: 

https://www.youtube.com/watch?v=CNOAQUdPd_o 


Dicho esto, ¡Vamos al lío!

Antes de nada, vamos a implementar en nuestro proyecto unos assets de un tanque para poder ver este ejercicio de una forma más visual. Puedes descargarlos aquí. Antes de empezar a poner el código, tenemos que colocar una serie de cosas en nuestro entorno.

Vamos a colocar un "Node2D" y lo vamos a renombrar como "Pivot". La posición de este "Pivot" será aquella desde donde rote nuestro objeto, en este caso la torreta del tanque, pero en el tuyo puede ser un arma o lo que quieras. Como nodo hijo de este "Pivot" , vamos a poner un nodo "Sprite" y este será lo que rotará.

Es importante que sepas que vamos a girar el nodo "Pivot" y que al hacerlo, también lo harán todos sus nodos hijos. Por lo tanto, debes colocar la torreta de tu tanque (o lo que quieras girar) teniendo en cuenta que va a girar desde la posición que tengas el "Pivot" (si no lo entiendes bien, te recomiendo ver el vídeo donde, de una forma mucho vas visual, lo vas a entender mejor).

Una vez que tengas listo esto, vamos a seleccionar el nodo "Torreta", que es hijo de "Pivot", y vamos a decirle que tenga una rotación de 90 grados. Esto lo hacemos ya que, para que se vea correctamente al girar, tiene que estar mirando hacia 0º. 

Si nos imaginamos un eje de coordenadas que empiece justo en nuestro personaje, si queremos hacer que gire, deberá estar mirando hacia la derecha, es decir, sobre el eje X formando 0º. 

Si en tu caso al importar tu imagen ya le ocurre esto, no hace falta que gires nada.

Una vez que tengamos todo esto listo, es hora de empezar a programar.


Vamos a crear una función que se llame "Look_at_mouse" y la vamos a llamar dentro de nuestra función de "_physic_process(delta)"

extends KinematicBody2D var motion = Vector2() func _physics_process(delta): look_at_mouse() motion=move_and_slide(motion) func look_at_mouse():

Una vez que lo tengamos, únicamente deberemos hacer dos cosas, ya que todo el calculo matemático que tendríamos que hacer lo hace Godot por defecto (si quieres saber cual es mírate el vídeo). Primero, debemos capturar la posición del mouse de forma global, y segundo, decirle que mire hacia esa dirección.

Para esto, primero vamos a crear una variable llamada "mouse_pos" y la vamos a igualar a una función llamada "get_global_mouse_position()". De esta forma estaremos almacenando constantemente la posición global del ratón en la pantalla. Luego, cogeremos el nodo "Pivot" mediante "get_node(...)" y le diremos que mire hacia "mouse_pos" con la función "look_at(...)"

extends KinematicBody2D var motion = Vector2() func _physics_process(delta): look_at_mouse() motion=move_and_slide(motion) func look_at_mouse(): var mouse_pos = get_global_mouse_position() get_node("Pivot").look_at(mouse_pos)



¡Y listo! Al ejecutar el juego, ya tendremos una torreta que gire en función de la posición del mouse en la pantalla.

Si tienes cualquier tipo de duda no dudes en ponerme un comentario aquí debajo o en el propio vídeo, e intentaré contestarte lo más rápido posible.

¡Nos vemos!

El vídeo de este tutorial:

https://www.youtube.com/watch?v=CNOAQUdPd_o

Mi canal de YouTube:

https://www.youtube.com/channel/UCAwrHOXBtRvfw034z7BjIhw 


© 2020 Heavy Lab. Todos los derechos reservados.
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar
Utilizamos cookies para permitir un correcto funcionamiento y seguro en nuestra página web, y para ofrecer la mejor experiencia posible al usuario.

Configuración avanzada

Puedes personalizar tus preferencias de cookies aquí. Habilita o deshabilita las siguientes categorías y guarda tu selección.