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.
Wyzwanie
ŁatwyDź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
weighti 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ć
}
}
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