Kursinhalt
Kampfspiel in Unity
Kampfspiel in Unity
Bewege Deinen Spieler
FixedUpdate und Update
Update()
Die Methode Update()
, die einmal pro Frame aufgerufen wird, verarbeitet reguläre Aktualisierungen wie Spielereingaben und Benutzerinteraktionen. Ihre Ausführungsfrequenz variiert mit der Bildrate, was zu potenziellen Inkonsistenzen auf verschiedenen Geräten führen kann.
FixedUpdate()
Die Methode FixedUpdate()
, die in festen Intervallen aufgerufen wird, ist ideal für physikbezogene Aktualisierungen und bietet eine zuverlässige und vorhersehbare Behandlung von Kräften, Kollisionen und Bewegungen.
Verwenden Sie Update()
für regelmäßige Aktualisierungen, die keine Physik betreffen, wie das Überprüfen von Benutzereingaben oder das Aktualisieren von Animationen. Verwenden Sie FixedUpdate()
für physikbezogene Aktualisierungen, wie das Bewegen von Objekten mit Rigidbody oder das Behandeln von Kollisionen, um ein gleichmäßigeres und zuverlässigeres Verhalten zu gewährleisten.
Bewegungs-Code
if (x != 0)
{
Vector2 velocity = rb.velocity;
if ((animator.GetCurrentAnimatorClipInfo(0))[0].clip.name != "attack")
{
velocity.x = x * Time.deltaTime * speed;
}
else
{
velocity.x = 0;
}
rb.velocity = velocity;
}
Der Codeausschnitt beinhaltet verschiedene Überprüfungen und Zuweisungen zur Steuerung der Bewegung einer Spielfigur. Zunächst wird geprüft, ob die horizontale Bewegungsvariable x
ungleich null ist, und anschließend eine Vector2
-Variable erstellt, um die aktuelle Geschwindigkeit der Rigidbody-Komponente zu speichern. Es wird außerdem überprüft, ob die aktuelle Animation nicht "attack" ist, um festzustellen, ob sich die Figur im Angriffsmodus befindet. Ist dies nicht der Fall, wird die horizontale Geschwindigkeit basierend auf Eingabe, vergangener Zeit und Geschwindigkeit gesetzt; andernfalls wird die horizontale Bewegung gestoppt. Abschließend wird die Geschwindigkeit des Rigidbody mit den neuen Werten aktualisiert.
Danke für Ihr Feedback!