Menu
CoddyTech

Grawitacja i masa

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 1 z 63.

Komponent Rigidbody przekazuje swój obiekt pod kontrolę fizyki Unity, co pokazał kokos, gdy spadł. Od tej chwili grawitacja przyspiesza obiekt o 9.81 m/s w każdej sekundzie, a komponent Rigidbody ma ustawienia, które o tym decydują. Dwa z nich to mass, wyrażona w kilogramach (1 dla nowego komponentu Rigidbody), oraz useGravity (włączona dla nowego komponentu Rigidbody).

Masa nie zmienia szybkości spadania obiektów. Grawitacja mocniej przyciąga ciężkie ciało, ale trudniej jest je rozpędzić dokładnie o tyle samo, więc skrzynia o masie 1 kg i kowadło o masie 50 kg zrzucone z tej samej wysokości lądują w tej samej klatce. Masa ma znaczenie, gdy ciała na siebie napierają: kowadło odpycha skrzynię na bok, a skrzynia ledwo porusza kowadło. Ten balon imprezowy ma niewielką masę, a grawitacja na niego nie działa, więc pozostaje tam, gdzie umieszczono go w scenie:

void Start()
{
    Rigidbody rb = GetComponent<Rigidbody>();
    rb.mass = 0.2f;
    rb.useGravity = false;
}

Gdy useGravity jest wyłączone, balon nadal ma swoją masę i nadal porusza się, gdy coś w niego uderzy: wyłączone jest tylko przyciąganie grawitacyjne. Ustaw z powrotem true, a grawitacja znów zacznie przyciągać obiekt, niezależnie od tego, gdzie się znajduje. W fizyce Unity nie ma też powietrza, więc piórko spada jak cegła, chyba że ustawisz dla jego komponentu Rigidbody parametr Tłumienie liniowe.

challenge icon

Wyzwanie

Łatwy

Dźwig trzyma nad dokiem dwie skrzynie: ciężki Safe i lekką Box. Obie mają Rigidbody i skrypt CraneLoad, którego weight ustawia Inspector (80 dla Safe, 2 dla Box).

  • Gdy gra się rozpocznie, ustaw masę Rigidbody na weight i wyłącz grawitację, aby skrzynia zawisła w miejscu.
  • Po naciśnięciu Space pozwól grawitacji znów działać, aby skrzynia spadła.

Naciśnij Play, naciśnij Space i obserwuj, która skrzynia wyląduje pierwsza, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;

public class CraneLoad : MonoBehaviour
{
    public float weight = 1f;

    void Start()
    {
        // Ustaw masę na wartość weight i wyłącz działanie grawitacji
    }

    void Update()
    {
        // Space: pozwól grawitacji znów działać
    }
}
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