Programando nuestro script de mira
Clase 12 de 20 • Curso de Introducción a la Programación de Videojuegos 3D con Unity
Resumen
¿Cómo programar la mira de tu personaje en Unity?
Programar el comportamiento de la mira de un personaje en videojuegos es una tarea esencial para lograr una experiencia inmersiva y fluida. El manejo adecuado de sensibilidad y rotación para los movimientos puede marcar la diferencia entre un juego bien ejecutado y uno sin pulir. En esta guía, desglosaremos paso a paso cómo ajustar estos aspectos en Unity para crear un funcionamiento adecuado en tu personaje.
¿Qué variables necesitas declarar en Unity?
Para comenzar, es indispensable declarar ciertas variables en tu script que facilitarán el manejo de la sensibilidad y rotaciones. Inicialmente, se requiere definir una variable flotante para la sensibilidad de movimiento de la mira:
public float sensitivity = 100f;
Esta variable determina con qué rapidez o lentitud la mira responde a los movimientos del mouse o joystick. La sensibilidad debe ajustarse a las preferencias del jugador, ya que algunos prefieren una mayor sensibilidad para movimientos más rápidos, mientras que otros optan por menos para tener más precisión y control.
Además, requerimos declarar un Transform
para nuestra posición:
public Transform player;
Y una variable para la rotación en el eje x:
private float xRotation = 0f;
Estas variables iniciales configurarán el juego para responder adecuadamente a la entrada del jugador desde el comienzo.
¿Cómo implementar las funciones de update?
La función Update
, es indispensable para manejar la lógica que se repetirá cada frame. Te guiaré en los pasos necesarios para manejar esta lógica:
-
Capturar el movimiento del mouse: Unity ofrece una función llamada
Input.GetAxis
que facilita obtener la dirección del movimiento en ambos ejes del mouse:float mouseX = Input.GetAxis("Mouse X") * sensitivity * Time.deltaTime; float mouseY = Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;
-
Actualizar la rotación: Usa el valor del mouse para ajustar la rotación en el eje x y limitar el ángulo de visión vertical. Esto se realiza utilizando la función
Mathf.Clamp
:xRotation -= mouseY; xRotation = Mathf.Clamp(xRotation, -75f, 75f);
-
Aplicar la rotación al player: Se debe configurar el
Transform
del player para rotar usandoQuaternion
:transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f); player.Rotate(Vector3.up * mouseX);
Esta configuración permite que el personaje no solo gire la cabeza para mirar hacia arriba y abajo, sino también de lado a lado eficientemente.
¿Cómo bloquear el cursor en Unity?
Un paso crucial al programar la cámara es asegurarse de que el cursor del mouse no interfiera con el juego bloqueándolo en el centro de la ventana del juego:
Cursor.lockState = CursorLockMode.Locked;
Este ajuste evita que el cursor pueda salir de la ventana del juego y que los movimientos de la cámara sean precisos y centrados.
Al seguir estos pasos, tendrás un script funcional que permite una experiencia de juego fluida y receptiva con respecto a los movimientos de la cámara y el personaje. Continúa explorando más conceptos en Unity para mejorar aún más tu proyecto. ¡El mundo del desarrollo de videojuegos es vasto y lleno de oportunidades para aprender!