MonoBehaviour es una clase base fundamental en Unity que permite a los desarrolladores crear scripts que pueden ser adjuntados a los GameObjects. En este tema, exploraremos los conceptos clave de MonoBehaviour, cómo funciona y cómo se utiliza en el desarrollo de juegos con Unity.
Conceptos Clave de MonoBehaviour
- Clase Base: MonoBehaviour es la clase base de la que derivan todos los scripts en Unity.
- Ciclo de Vida: MonoBehaviour tiene varios métodos que se llaman automáticamente durante el ciclo de vida de un script.
- Eventos de Unity: Métodos como
Start()
,Update()
,FixedUpdate()
, yOnCollisionEnter()
son eventos que Unity llama en momentos específicos.
Métodos Principales de MonoBehaviour
Start()
El método Start()
se llama una vez al inicio del ciclo de vida del script, justo antes de la primera llamada a Update()
. Es ideal para inicializar variables o configurar el estado inicial del script.
Update()
El método Update()
se llama una vez por frame. Es el lugar adecuado para manejar la lógica que necesita ser evaluada constantemente, como la entrada del usuario o el movimiento de objetos.
FixedUpdate()
FixedUpdate()
se llama en intervalos fijos y es ideal para la física y otras operaciones que requieren una tasa de actualización constante.
OnCollisionEnter()
OnCollisionEnter()
se llama cuando este collider/rigidbody ha comenzado a tocar otro rigidbody/collider.
void OnCollisionEnter(Collision collision) { Debug.Log("Colisión detectada con " + collision.gameObject.name); }
Ejemplo Práctico
Vamos a crear un script simple que mueve un objeto hacia adelante cuando se presiona la tecla "W".
-
Crear el Script:
- En el panel de Proyecto, haz clic derecho y selecciona
Create > C# Script
. - Nombra el script
MoverObjeto
.
- En el panel de Proyecto, haz clic derecho y selecciona
-
Editar el Script:
- Abre el script
MoverObjeto
y reemplaza el contenido con el siguiente código:
- Abre el script
using UnityEngine; public class MoverObjeto : MonoBehaviour { public float velocidad = 5f; void Update() { if (Input.GetKey(KeyCode.W)) { transform.Translate(Vector3.forward * velocidad * Time.deltaTime); } } }
-
Adjuntar el Script:
- Arrastra el script
MoverObjeto
a un GameObject en la escena.
- Arrastra el script
-
Probar el Script:
- Ejecuta la escena y presiona la tecla "W". El objeto debería moverse hacia adelante.
Ejercicio Práctico
Ejercicio 1: Rotación de un Objeto
Objetivo: Crear un script que rote un objeto cuando se presionan las teclas de flecha izquierda y derecha.
-
Crear el Script:
- Nombra el script
RotarObjeto
.
- Nombra el script
-
Editar el Script:
- Reemplaza el contenido con el siguiente código:
using UnityEngine; public class RotarObjeto : MonoBehaviour { public float velocidadRotacion = 100f; void Update() { if (Input.GetKey(KeyCode.LeftArrow)) { transform.Rotate(Vector3.up, -velocidadRotacion * Time.deltaTime); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Rotate(Vector3.up, velocidadRotacion * Time.deltaTime); } } }
-
Adjuntar el Script:
- Arrastra el script
RotarObjeto
a un GameObject en la escena.
- Arrastra el script
-
Probar el Script:
- Ejecuta la escena y presiona las teclas de flecha izquierda y derecha. El objeto debería rotar en consecuencia.
Solución del Ejercicio
El script RotarObjeto
utiliza el método Update()
para verificar si se presionan las teclas de flecha izquierda o derecha y rota el objeto en consecuencia. La rotación se realiza utilizando el método transform.Rotate()
, que rota el objeto alrededor del eje Y.
using UnityEngine; public class RotarObjeto : MonoBehaviour { public float velocidadRotacion = 100f; void Update() { if (Input.GetKey(KeyCode.LeftArrow)) { transform.Rotate(Vector3.up, -velocidadRotacion * Time.deltaTime); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Rotate(Vector3.up, velocidadRotacion * Time.deltaTime); } } }
Conclusión
En esta sección, hemos aprendido sobre la clase MonoBehaviour y sus métodos principales, como Start()
, Update()
, FixedUpdate()
, y OnCollisionEnter()
. También hemos visto cómo crear y adjuntar scripts a GameObjects y hemos practicado con ejemplos prácticos. Con este conocimiento, estás listo para explorar más sobre la programación en Unity y cómo interactuar con los GameObjects de manera efectiva. En el próximo tema, profundizaremos en el manejo básico de entradas en Unity.
Curso de Unity
Módulo 1: Introducción a Unity
- Introducción a Unity e Instalación
- Descripción General de la Interfaz de Unity
- Creando Tu Primer Proyecto
- Objetos de Juego Básicos y Componentes
Módulo 2: Programación Básica en Unity
- Introducción a C# para Unity
- Creación y Adjunto de Scripts
- Entendiendo MonoBehaviour
- Manejo Básico de Entradas
Módulo 3: Trabajando con Activos
- Importación y Gestión de Activos
- Uso de la Tienda de Activos
- Creación y Uso de Prefabs
- Animación Básica
Módulo 4: Física y Colisiones
- Introducción a la Física en Unity
- Cuerpos Rígidos y Colisionadores
- Detección Básica de Colisiones
- Uso de Materiales Físicos
Módulo 5: Interfaz de Usuario (UI)
- Introducción a la UI de Unity
- Creación y Personalización de Elementos UI
- Manejo de Eventos UI
- Creación de Menús y HUDs
Módulo 6: Audio en Unity
- Introducción al Audio en Unity
- Importación y Uso de Clips de Audio
- Programación Básica de Audio
- Audio 3D y Sonido Espacial
Módulo 7: Programación Avanzada
- Conceptos Avanzados de C# para Unity
- Corutinas y Programación Asíncrona
- Objetos Scriptables
- Editores Personalizados y Gizmos
Módulo 8: Física Avanzada e IA
- Técnicas Avanzadas de Física
- Búsqueda de Caminos y Navegación
- Programación Básica de IA
- Máquinas de Estado y Árboles de Comportamiento
Módulo 9: Optimización y Rendimiento
- Técnicas de Perfilado y Optimización
- Gestión de Memoria
- Reducción de Llamadas de Dibujo
- Optimización de Física y Colisiones