Capítulo 2: ¡Dando Vida a Nuestro Cubo – Movimiento e Interacción Básicos!
En el capítulo anterior, nos familiarizamos con el entorno de Unity y creamos nuestro primer objeto: un cubo. ¡Ahora es el momento de hacerlo moverse y reaccionar a nuestras acciones! En este capítulo, introduciremos los conceptos fundamentales de scripting (programación) en Unity y cómo podemos utilizarlos para controlar nuestros GameObjects.
Paso 1: Creando un Nuevo Script
Para darle comportamiento a nuestro cubo, necesitamos escribir un script. Un script es un archivo de código que contiene instrucciones para que Unity ejecute acciones.
- Ve a la ventana de Proyecto.
- Haz clic derecho en cualquier espacio vacío dentro de la ventana.
- En el menú contextual, selecciona “Crear” (o “Create” si lo tienes en inglés) y luego haz clic en “C# Script“. C# es el lenguaje de programación principal utilizado en Unity.
- Se creará un nuevo archivo con el nombre predeterminado de “NewBehaviourScript”. Cámbiale el nombre a “MoverCubo” (sin espacios y respetando las mayúsculas/minúsculas). Es importante que el nombre del archivo coincida con el nombre de la clase que contendrá el script.
- Haz doble clic en el script “MoverCubo.cs” para abrirlo en tu editor de código (por defecto, suele ser Visual Studio o Visual Studio Code si los tienes instalados; de lo contrario, Unity abrirá un editor de texto básico).
Paso 2: Escribiendo Nuestro Primer Código de Movimiento
Dentro de tu editor de código, verás una estructura básica para tu script. Vamos a modificarla para que nuestro cubo se mueva cuando presionemos las teclas de dirección.
- Reemplaza el contenido del script con el siguiente código:
using UnityEngine;
public class MoverCubo : MonoBehaviour
{
public float velocidadMovimiento = 5f; // Variable para controlar la velocidad
void Update()
{
// Obtener la entrada del usuario para el movimiento horizontal (A y D o flechas izquierda y derecha)
float movimientoHorizontal = Input.GetAxis("Horizontal");
// Obtener la entrada del usuario para el movimiento vertical (W y S o flechas arriba y abajo)
float movimientoVertical = Input.GetAxis("Vertical");
// Crear un vector de movimiento basado en la entrada del usuario
Vector3 movimiento = new Vector3(movimientoHorizontal, 0f, movimientoVertical).normalized;
// Aplicar el movimiento al GameObject
transform.Translate(movimiento * velocidadMovimiento * Time.deltaTime);
}
}
- Guarda el script en tu editor de código.
Explicación del Código:
- using UnityEngine;: Esta línea importa la biblioteca principal de Unity, que contiene todas las funciones y clases que necesitamos.
- public class MoverCubo : MonoBehaviour: Esto define nuestra clase de script llamada “MoverCubo”. : MonoBehaviour significa que este script puede ser adjuntado a un GameObject en Unity y aprovechar sus funcionalidades.
- public float velocidadMovimiento = 5f; : Declaramos una variable pública llamada velocidadMovimiento de tipo float (número decimal) y la inicializamos en 5. El public hace que esta variable sea visible y editable directamente en el Inspector de Unity.
- void Update(): Esta es una función especial que se llama una vez por cada frame (cuadro) que se renderiza en el juego. Es el lugar ideal para actualizar la lógica del juego, como el movimiento.
- float movimientoHorizontal = Input.GetAxis(“Horizontal”); : Esta línea obtiene la entrada del usuario para el eje horizontal. Unity automáticamente mapea las teclas A, D, flecha izquierda y flecha derecha a este eje, devolviendo un valor entre -1 y 1.
- float movimientoVertical = Input.GetAxis(“Vertical”); : Similar a la anterior, pero para el eje vertical (teclas W, S, flecha arriba y flecha abajo).
- Vector3 movimiento = new Vector3(movimientoHorizontal, 0f, movimientoVertical).normalized; : Creamos un vector 3D (con componentes x, y, z) para representar la dirección del movimiento. Usamos movimientoHorizontal para el eje x (izquierda/derecha), 0f para el eje y (queremos que el cubo se mueva solo horizontalmente por ahora), y movimientoVertical para el eje z (adelante/atrás en la vista 3D). .normalized asegura que el vector tenga una magnitud de 1, lo que evita que el movimiento diagonal sea más rápido.
- transform.Translate(movimiento * velocidadMovimiento * Time.deltaTime); : Esta línea es la que realmente mueve nuestro cubo. transform se refiere al componente Transform del GameObject (posición, rotación, escala). Translate() mueve el GameObject en la dirección y distancia especificadas. Multiplicamos el vector de movimiento por velocidadMovimiento para controlar qué tan rápido se mueve el cubo y por Time.deltaTime para que el movimiento sea independiente de la velocidad de los frames de la computadora, asegurando un movimiento consistente.
Paso 3: Adjuntando el Script a Nuestro Cubo
Ahora que hemos escrito el script, necesitamos adjuntarlo al GameObject “Cube” que creamos en el Capítulo 1.
- Selecciona el GameObject “Cube” en la ventana de Jerarquía.
- Arrastra el script “MoverCubo.cs” desde la ventana de Proyecto hasta la ventana de Inspector del Cubo. También puedes hacer clic en el botón “Add Component” en el Inspector, buscar “MoverCubo” y seleccionarlo.
Paso 4: ¡Probando el Movimiento!
¡Es hora de ver nuestro cubo en acción!
- Haz clic en el botón de “Play” (el icono con forma de triángulo) en la Barra de Herramientas (en la parte superior central de la interfaz de Unity). Esto ejecutará tu juego en el modo de juego.
- Utiliza las teclas W, S, A, D o las flechas de dirección para intentar mover el cubo en la ventana de Escena (ahora convertida en la vista del juego).
- Cuando termines de probar, haz clic nuevamente en el botón de “Play” para salir del modo de juego y volver al modo de edición.
Paso 5: Ajustando la Velocidad en el Inspector
Notarás que en la ventana de Inspector del Cubo (cuando está seleccionado en modo de edición), ahora aparece el componente “Mover Cubo (Script)” con una variable llamada “Velocidad Movimiento” que tiene el valor de 5.
- Selecciona el Cubo en la ventana de Jerarquía.
- En la ventana de Inspector, modifica el valor de “Velocidad Movimiento” a un número diferente (por ejemplo, 10 o 2).
- Ejecuta el juego nuevamente (haz clic en el botón de “Play”) y observa cómo la velocidad del cubo ha cambiado.
¡Felicidades! Has programado tu primer movimiento en Unity y has aprendido cómo las variables públicas en los scripts pueden ser editadas directamente desde el Inspector.
En el próximo capítulo, exploraremos cómo hacer que nuestro cubo interactúe con otros objetos en la escena. ¡Sigue adelante!