Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Krąż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
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Fizyka i rozgrywka