Popychanie za pomocą AddForce
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 2 z 71.
Gdy obiekt ma już komponent Rigidbody, porusza nim fizyka, więc przestajesz zmieniać jego położenie 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: przyspiesza ciało 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: gdy strzałka w górę jest wciśnięta, działa na niego siła thrust, która 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 dodawaj w FixedUpdate(), którą Unity wywołuje przed każdym krokiem fizyki, 50 razy na sekundę (lekcja 4 wyjaśnia dlaczego). W tym wierszu 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 podłożu tarcie działa w przeciwną stronę, więc niewielka siła może wcale nie poruszyć ciężkiego pudła.
Wyzwanie
ŁatwyPopychaj krążek po pozbawionym tarcia lodowisku za pomocą sił.
- W
FixedUpdate()odczytajfloat h = Input.GetAxis("Horizontal");orazfloat v = Input.GetAxis("Vertical");. - Wywołaj
rb.AddForce(new Vector3(h, 0, v) * push);bezTime.deltaTime.
Naciśnij „Graj”, popchnij i puść: krążek nadal będzie się ślizgał. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class PuckPusher : MonoBehaviour
{
public float push = 4f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Popychaj krążek: Horizontal wzdłuż osi x, Vertical wzdłuż osi z
}
}
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 startowa4Korutyny
WywoływanieInvokeRepeating i CancelInvokeTwoja pierwsza korutynaPętle w korutynachZatrzymywanie korutynPodsumowanie: odliczanie10Projekt: Ucieczka z areny
ArenaŁowcy2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur5Projekt: Wyścig po monety
Tocząca się piłkaZbieranie monet3Wyzwalacze
Kolizje wyzwalająceOnTriggerEnterPrzedmioty do zebraniaSkrzynie zatrzymują resztęStrefy śmierciWejście i wyjściePodsumowanie: klucz i drzwiPoćwicz samodzielnie: Edytor online Unity