Popychanie za pomocą AddForce
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 2 z 63.
Gdy obiekt ma już komponent Rigidbody, porusza nim fizyka, więc przestajesz zmieniać jego pozycję i zamiast tego go popychasz. rb.AddForce(force) popycha ciało siłą, czyli wartością Vector3 wyrażoną w niutonach. Siła nie ustawia prędkości: zwiększa prędkość ciała tak długo, jak ją dodajesz, o wartość siły podzieloną przez masę w każdej sekundzie. Przestań popychać, a ciało zachowa swoją prędkość.
Ten poduszkowiec (2 kg) ma silnik odrzutowy: gdy strzałka w górę jest wciśnięta, siła thrust popycha go do przodu, wzdłuż osi +z. Przy sile ciągu równej 12 jego prędkość wzrasta o 12 / 2 = 6 m/s w każdej sekundzie:
public float thrust = 12f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.UpArrow))
{
rb.AddForce(Vector3.forward * thrust);
}
}Siły dodaje się w FixedUpdate(), które Unity wywołuje przed każdym krokiem symulacji fizyki, 50 razy na sekundę (lekcja 4 wyjaśnia dlaczego). W tej linii nie ma Time.deltaTime: AddForce już rozkłada siłę na cały krok, a pomnożenie jej przez Time.deltaTime sprawiłoby, że pchnięcie byłoby 50 razy słabsze. Na ziemi tarcie działa w przeciwną stronę, więc niewielka siła może w ogóle nie poruszyć ciężkiego pudła.
Wyzwanie
ŁatwyKrążek na lodowisku ma komponent Rigidbody, a lód nie ma tarcia. Popychaj go strzałkami: oś Horizontal popycha go wzdłuż x, a oś Vertical wzdłuż z, z siłą push (4 w Inspectorze).
Popychaj go wyłącznie siłami, żeby ślizgał się dalej, gdy puścisz strzałki. Naciśnij Play, steruj krążkiem po lodowisku, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
public class PuckPusher : MonoBehaviour
{
public float push = 4f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Pchnij krążek: Horizontal wzdłuż osi x, Vertical wzdłuż osi z
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Fizyka i rozgrywka
1Ciało sztywne
Grawitacja i masaPopychanie za pomocą AddForceSkok z impulsemFixedUpdate dla fizykiPrędkośćCiała kinematycznePowtórka: platforma startowa2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur