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<Rigidbody2D>() en Awake.
Finaliza cada línea con punto y coma. No lo olvides.
usingUnityEngine;publicclassPlayer:MonoBehaviour{privateRigidbody2D rigidBody;privatefloat jumpForce =6f;// fuerza de saltovoidAwake(){ 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.
¿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.