Empujar con AddForce
Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 2 de 63.
Una vez que un objeto tiene un Rigidbody, la física lo mueve, así que dejas de cambiar su posición y, en su lugar, lo empujas. rb.AddForce(force) empuja el cuerpo con una fuerza, un Vector3 en newtons. Una fuerza no establece una velocidad: acelera el cuerpo mientras sigas aplicándola, a razón de la fuerza dividida por la masa cada segundo. Deja de empujarlo y el cuerpo mantiene la velocidad que tiene.
Este aerodeslizador (2 kg) tiene un propulsor: mientras se mantiene pulsada la flecha hacia arriba, una fuerza de thrust lo empuja hacia delante, a lo largo de +z. Con un empuje de 12, gana 12 / 2 = 6 m/s cada segundo:
public float thrust = 12f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.UpArrow))
{
rb.AddForce(Vector3.forward * thrust);
}
}Las fuerzas se aplican en FixedUpdate(), que Unity llama antes de cada paso de física, 50 veces por segundo (la lección 4 explica por qué). En esa línea no aparece Time.deltaTime: AddForce ya distribuye la fuerza a lo largo del paso, y multiplicarla por Time.deltaTime haría que el empuje fuera 50 veces más débil. En el suelo, la fricción empuja en sentido contrario, así que una fuerza pequeña quizá no mueva en absoluto una caja pesada.
Desafío
FácilEl disco sobre la pista de hielo tiene un Rigidbody y el hielo no tiene fricción. Empújalo con las flechas: el eje Horizontal lo empuja a lo largo de x y el eje Vertical a lo largo de z, con una fuerza de push (4 en el Inspector).
Empújalo solo con fuerzas, para que siga deslizándose cuando sueltes las teclas. Pulsa Play, guía el disco por la pista y después pulsa Check.
Pruébalo tú mismo
using UnityEngine;
public class PuckPusher : MonoBehaviour
{
public float push = 4f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Empuja el disco: Horizontal a lo largo de x, Vertical a lo largo de z
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Física y jugabilidad
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de monedas
La bola rodanteMonedas para recoger