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

  1. Clase Base: MonoBehaviour es la clase base de la que derivan todos los scripts en Unity.
  2. Ciclo de Vida: MonoBehaviour tiene varios métodos que se llaman automáticamente durante el ciclo de vida de un script.
  3. Eventos de Unity: Métodos como Start(), Update(), FixedUpdate(), y OnCollisionEnter() 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.

void Start() {
    Debug.Log("El juego ha comenzado");
}

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.

void Update() {
    if (Input.GetKeyDown(KeyCode.Space)) {
        Debug.Log("Espacio presionado");
    }
}

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.

void FixedUpdate() {
    // Código de física aquí
}

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".

  1. Crear el Script:

    • En el panel de Proyecto, haz clic derecho y selecciona Create > C# Script.
    • Nombra el script MoverObjeto.
  2. Editar el Script:

    • Abre el script MoverObjeto y reemplaza el contenido con el siguiente código:
using UnityEngine;

public class MoverObjeto : MonoBehaviour {
    public float velocidad = 5f;

    void Update() {
        if (Input.GetKey(KeyCode.W)) {
            transform.Translate(Vector3.forward * velocidad * Time.deltaTime);
        }
    }
}
  1. Adjuntar el Script:

    • Arrastra el script MoverObjeto a un GameObject en la escena.
  2. 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.

  1. Crear el Script:

    • Nombra el script RotarObjeto.
  2. 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);
        }
    }
}
  1. Adjuntar el Script:

    • Arrastra el script RotarObjeto a un GameObject en la escena.
  2. 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

Módulo 2: Programación Básica en Unity

Módulo 3: Trabajando con Activos

Módulo 4: Física y Colisiones

Módulo 5: Interfaz de Usuario (UI)

Módulo 6: Audio en Unity

Módulo 7: Programación Avanzada

Módulo 8: Física Avanzada e IA

Módulo 9: Optimización y Rendimiento

Módulo 10: Publicación y Más Allá

© Copyright 2024. Todos los derechos reservados