Métodos Awake y Start en Unity para Configuración Inicial

Clase 9 de 53Curso de C# para Videojuegos

Resumen

Domina el salto en Unity 2D con C# desde el primer script: diferencias entre Awake y Start, detección de input en Update y aplicación de AddForce al Rigidbody2D con impulso. Con buenas prácticas como delegar en métodos y configurar dependencias al iniciar, evitarás errores típicos como el salto repetido al mantener pulsada la tecla.

¿Qué diferencia a awake de start en Unity?

Al dar Play, ambos se ejecutan, pero en orden distinto. Awake ocurre en el frame 0, antes de renderizar nada, y Start en el frame 1, cuando todo está preparado. Para configurar dependencias privadas, usar Awake es más coherente con el “despertar” del objeto: al iniciar, ya sabe quién es su Rigidbody2D o su Collider.

¿Cómo referenciar rigidbody2d con getcomponent?

  • Usa una variable privada para guardar la referencia.
  • Llama a GetComponent() en Awake.
  • Finaliza cada línea con punto y coma. No lo olvides.
using UnityEngine;

public class Player : MonoBehaviour
{
    private Rigidbody2D rigidBody;
    private float jumpForce = 6f; // fuerza de salto

    void Awake()
    {
        rigidBody = GetComponent<Rigidbody2D>();
    }
}

¿Por qué usar awake para configurar dependencias?

  • Se ejecuta antes que Start.
  • Evita un frame de desfase en referencias.
  • Mantiene el objeto listo desde el inicio.

¿Cómo detectar input en update sin errores?

Update se ejecuta hasta 60 veces por segundo si el juego corre a 60 fps. Ahí puedes consultar entradas: teclado con Input.GetKey y ratón con Input.GetMouseButtonDown. Para atender ambas, combina condiciones con el operador lógico OR.

void Update()
{
    if (Input.GetKey(KeyCode.Space) || Input.GetMouseButtonDown(0))
    {
        Jump();
    }
}

¿Qué teclas y botones admite keycode y mousebutton?

  • Teclas alfanuméricas: KeyCode.A, KeyCode.B, etc.
  • Modificadores y especiales: Alt, F1–F12, Tab, Home, AltGr.
  • Ratón: botón 0 (izquierdo), 1 (derecho), 2 (rueda si es clicable).
  • Variantes del ratón: GetMouseButton, GetMouseButtonUp, GetMouseButtonDown.
  • Para “o”: usa dos barras verticales ||. En teclado español: Alt + 1 dos veces.

¿Por qué aparece el bug al mantener la tecla?

  • Con Input.GetKey(KeyCode.Space) en Update, la condición es verdadera tantos frames como mantengas pulsado.
  • Resultado: se aplica fuerza repetidamente y el personaje sube sin parar.
  • Es un bug típico al programar entradas cuadro a cuadro.

¿Cómo programar el salto con rigidbody2d y addforce?

La física ya está resuelta por el motor. Solo necesitas aplicar una fuerza hacia arriba al Rigidbody2D. Usa la dirección Vector2.up y la magnitud definida por tu fuerza de salto. Para un salto, el modo correcto es un impulso en un instante.

void Jump()
{
    rigidBody.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
}

¿Qué dirección y magnitud definen el salto?

  • Dirección: Vector2.up (arriba en 2D).
  • Magnitud: variable de fuerza de salto (jumpForce).
  • Efecto: sube por impulso, baja por gravedad.

¿Fuerza continua o impulso?

  • Fuerza: empuje constante en el tiempo.
  • Impulso: toda la fuerza en un instante, ideal para saltar.
  • Para saltos: elige impulso por fidelidad física.

¿Tú cómo prefieres combinar teclado y ratón para saltar y por qué? Comparte tu enfoque y dudas en los comentarios.