Einheit - starre Körper und Physik

Das Hauptproblem bei den Kollisionen im letzten Kapitel war der Code. We will now modify the values of the GameObject’s position directly. Wir fügen der Position einfach einen Wert hinzu, wenn der Spieler eine Taste drückt. Wir brauchen eine Möglichkeit, den Spieler so zu bewegen, dass er richtig auf Grenzen und andere GameObjects reagiert.

Dazu müssen wir verstehen, was rigidbodiessind. Rigidbodies sind Komponenten, auf die ein GameObject reagieren kannreal-time physics. Dies schließt Reaktionen auf Kräfte und Schwerkraft, Masse, Widerstand und Impuls ein.

Sie können einen Rigidbody an Ihr GameObject anhängen, indem Sie einfach auf klicken Add Component und geben Sie Rigidbody2D in das Suchfeld ein.

Durch Klicken auf Rigidbody2D wird die Komponente an Ihr GameObject angehängt. Jetzt, da es angehängt ist, werden Sie feststellen, dass sich viele neue Felder geöffnet haben.

Mit den Standardeinstellungen fällt das GameObject vertikal downaufgrund der Schwerkraft. Um dies zu vermeiden, stellen Sie dieGravity Scale bis 0.

Jetzt zeigt das Spielen des Spiels keinen sichtbaren Unterschied, da das GameObject noch nichts mit seiner Physikkomponente zu tun hat.

Um unser Problem zu lösen, öffnen wir unseren Code erneut und schreiben ihn neu.

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);
   }
}

Wir können sehen, dass wir eine schaffen referencezu einem Rigidbody2D in den Deklarationen, und unser Aktualisierungscode arbeitet mit dieser Referenz anstelle der Transformation des Objekts. Dies bedeutet, dass der starre Körper nun die Verantwortung für den Umzug erhalten hat.

Sie können das erwarten bodyVerweis auf NullReferenceException, da wir ihm nichts zugewiesen haben. Wenn Sie das Spiel so kompilieren und ausführen, wie es ist, wird unten links im Editor der folgende Fehler angezeigt

Um dies zu beheben, betrachten wir die vom Skript erstellte Komponente. Denken Sie daran, dass öffentliche Eigenschaften in Unity ihre eigenen Felder erstellen, wie wir es mit der Geschwindigkeitsvariablen getan haben.

Stellen Sie die Geschwindigkeit auf einen höheren Wert ein, etwa 5, und spielen Sie das Spiel.

Ihre Kollisionen funktionieren jetzt korrekt!