Jedność - ciała sztywne i fizyka
Główny problem z kolizjami w ostatnim rozdziale dotyczył kodu. We will now modify the values of the GameObject’s position directly. Po prostu dodajemy wartość do pozycji, jeśli gracz naciska klawisz. Potrzebujemy sposobu, aby zmusić gracza do poruszania się w taki sposób, aby odpowiednio reagował na granice i inne obiekty GameObject.
Aby to zrobić, musimy zrozumieć, co rigidbodiessą. Rigidbody to komponenty, na które GameObject może reagowaćreal-time physics. Obejmuje to reakcje na siły i grawitację, masę, opór i pęd.
Możesz dołączyć Rigidbody do swojego GameObject, po prostu klikając Add Component i wpisując Rigidbody2D w polu wyszukiwania.
Kliknięcie Rigidbody2D spowoduje dołączenie komponentu do GameObject. Teraz, gdy jest dołączony, zauważysz, że otworzyło się wiele nowych pól.
Przy domyślnych ustawieniach GameObject spadnie pionowo downz powodu grawitacji. Aby tego uniknąć, ustawGravity Scale do 0.
Teraz granie w grę nie pokaże żadnej widocznej różnicy, ponieważ GameObject nie ma jeszcze nic wspólnego ze swoim komponentem fizyki.
Aby rozwiązać nasz problem, otwórzmy ponownie nasz kod i przepiszmy go.
public class Movement : MonoBehaviour {
public float speed;
public Rigidbody2D body;
// Update is called once per frame
void Update() {
float h = Input.GetAxisRaw(“Horizontal”);
float v = Input.GetAxisRaw(“Vertical”);
body.velocity = new Vector2(h * speed, v * speed);
}
}
Widzimy, że tworzymy plik referencedo Rigidbody2D w deklaracjach, a nasz kod aktualizacji działa na tym odwołaniu zamiast na transformacji Object. Oznacza to, że Rigidbody został przeniesiony.
Możesz spodziewać się bodyodniesienie do wyrzucenia NullReferenceException, ponieważ nie przypisaliśmy mu niczego. Jeśli skompilujesz i uruchomisz grę bez zmian, w lewym dolnym rogu edytora pojawi się następujący błąd
Aby to naprawić, rozważmy komponent utworzony przez skrypt. Pamiętaj, że właściwości publiczne tworzą własne pola w Unity, tak jak zrobiliśmy to ze zmienną speed.
Ustaw prędkość na wyższą wartość, około 5 i zagraj w grę.
Twoje kolizje będą teraz działać poprawnie!