Animationskurven, der ultimative Gestaltungshebel

EDUARDO ORIZ / UNITY TECHNOLOGIESSenior Content Marketing Manager
Jul 21, 2022|27 Min.
Animationskurven, der ultimative Gestaltungshebel
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.

Dies ist der dritte Blog-Beitrag von Christo Nobbs in seiner Serie für Spieleentwickler. Die Serie baut auf seinen Beiträgen zu The Unity game designer playbookeinem mehr als 100-seitigen Handbuch, das Spieldesignern zeigt, wie man in Unity Prototypen erstellt, Spiele entwickelt und testet. Links zu Christos früheren Blogbeiträgen finden Sie am Ende dieses Artikels.

In Unity gibt es mehrere "Typen", die wir zum Speichern von Daten verwenden können und die ebenso nützlich sind wie Designhebel für Balancing-Systeme, Gameplay, Charaktereinstellungen, Fahrzeugprofile und so weiter. Animationskurven sind ein solcher Komponententyp, der Spieldesignern und -entwicklern interessante Möglichkeiten bietet, insbesondere beim Prototyping. Verwenden Sie sie in Ihrem Projekt, z. B. in einem Partikelsystem, um animierte Variablen zu steuern, oder in der Audioquellenkomponente, um Roll-off und andere Eigenschaften zu verwalten.

Eine Kurve ist ein Liniendiagramm, das die Reaktion (auf der Y-Achse) auf den variierenden Wert einer Eingabe (auf der X-Achse) zeigt. Unity verwendet Kurven in einer Vielzahl von Kontexten, insbesondere in der Animation. Kurveneditoren verfügen über eine Reihe verschiedener Optionen und Werkzeuge, die Sie nutzen können.

Dieser Beitrag konzentriert sich auf die Arbeit mit Animationskurven über die Unity API, mit dem Variablentyp AnimationCurve. Auf diese Weise können sie zur Erfassung und Speicherung von Daten verwendet werden, die für die Analyse der Ergebnisse hilfreich sind. Kurven sind auch mit skriptfähigen Objekten kompatibel, die sich, wie im Spielbuch beschrieben, hervorragend für die Bearbeitung von Gameplay-Daten eignen.

Animationskurven können im Inspektor entweder als öffentliche Variablen oder bei der Serialisierung bearbeitet werden. Sie können sie im Bearbeitungsmodus oder zur Laufzeit speichern, exportieren oder laden. Editierbare Tangenten ermöglichen es, die Form der Kurve zwischen den Tasten zu steuern.

Eine Eigenschaft der Animationskurve im Inspektor
Eine Eigenschaft der Animationskurve im Inspektor: Wenn Sie darauf klicken, öffnet sich der Kurveneditor, in dem Sie die Kurve anpassen und in Ihrer eigenen Bibliothek speichern können, indem Sie auf das Zahnradsymbol klicken.
Der Schlüssel zur Tangente in Unity
Wenn Sie auf eine Kurve doppelklicken, wird eine neue Taste erstellt, mit der Sie die Kurve bearbeiten können, und es werden mehrere Optionen zur Steuerung der Griffe der Taste angeboten.

Sie können Keys hinzufügen, ihre Tangenten ändern und Griffe in der Kurve manipulieren, um die Form zu finden, die die gewünschten Ergebnisse liefert.

Eine Animationskurve mit mehreren Tangenten
Eine Animationskurve, die Tangenten enthält, um organische Spitzen, Täler und abrupte Winkel zu erzeugen
Lebensechte Details für alltägliche Bewegungen und Vorgänge

Ein visueller Gestaltungshebel wie eine Animationskurve ermöglicht es den Spieleentwicklern, das Gameplay zu verfeinern, ohne komplexe mathematische oder Lockerungsfunktionen schreiben zu müssen.

Animationskurven lassen sich beispielsweise in einer Timeline verwenden, um linearen Bewegungen Nuancen und Details hinzuzufügen. Nehmen wir das Beispiel einer Person, die eine Autotür schließt. Die Aktion beginnt mit einem Wackeln, wenn die Hand den Hebel zum Schließen der Tür ergreift. Die Tür schließt sich zunächst langsam, aber die Bewegung beschleunigt sich, wenn die Tür zugeht, und endet dann mit einem abrupten Stopp, vielleicht mit einem kleinen Aufprall oder Klicken. Alle diese Bewegungen können in der gleichen Kurve für die Sequenz gespeichert werden.

Eine braune Tür, die sich im Unity-Editor auf einem grünen Kleidungsstück öffnet und schließt
Eine sich öffnende und schließende Tür mit Kurven in der Timeline der Animation
Die Kurve zum Öffnen einer Tür
Die Kurve zum Öffnen einer Tür
Die Kurve zum Schließen einer Tür
Die Kurve zum Schließen einer Tür

Wie dieses Beispiel zeigt, sind Animationskurven nützlich, um die Eigenschaften eines Objekts im Laufe der Zeit zu ändern und so eine natürlich wirkende Bewegung zu erzeugen. In anderen Anwendungsfällen geht es darum, wie sich ein Objekt bewegt oder dreht, wie eine Figur in einen Sprint hinein- oder aus einem Sprint herausbeschleunigt oder abbremst oder wie ein Motor Leistung an einen Fahrzeugregler abgibt.

Animationskurve C#-Code
In dieser Übersicht sehen Sie, wie eine Animationskurve im Inspektor Daten auf der Y-Achse an einer bestimmten Position auf der X-Achse liefert. Die untere Methode zeigt, wie die Methode EvaluateCurve verwendet wird, indem die gewünschte Kurve und die Position übergeben werden.

Wenn Sie eine Animationskurve erstellen, um sie im Inspektor zu bearbeiten, können Sie die Kurve bewerten, indem Sie einen Parameter übergeben, der in Unity als Zeit bezeichnet wird. Später in diesem Beitrag werden wir uns ansehen, warum die Position anschaulicher ist, wenn die X-Achse nicht für die Zeit verwendet wird.

Eine "Pseudo"-Motordrehmomentkurve zur Steuerung der Motorleistung

Lassen Sie uns untersuchen, wie Sie eine Animationskurve zur Steuerung der Motorleistung eines Fahrzeugs verwenden können. Sie können eine "Pseudo"-Motordrehmomentkurve erstellen, um die auf das Fahrzeug ausgeübte Kraft auf der Grundlage der aktuellen Motordrehzahl (Umdrehungen pro Minute) zurückzugeben. Diese erhöht sich mit der Zeit, wenn der Spieler auf das Gaspedal drückt.

Anstatt den gesamten Drehzahlbereich für jeden Gang und jedes Fahrzeug abzubilden, können Sie die Drehzahl "normalisieren" oder zwischen 0 und 1 einstellen. Die erstellten "Drehmoment"-Kurven können gespeichert und für andere Fahrzeuge und Getriebe wiederverwendet werden.

Legen Sie diesen Wert fest, indem Sie Ihren Roh- oder aktuellen Wert durch den Maximalwert dividieren:

normalisedCurrentRPM = currentRPM / maxRPM

Die Ausgangsleistung (Y-Achse) wird ebenfalls zwischen 0 und 1 verwendet, um den Kurveneditor überschaubar und die Kurven selbst wiederverwendbar zu halten. Dieser Wert kann zu der Bewegungskraft für das Fahrzeug addiert werden, um den Rigidbody des Fahrzeugs auf der Z-Achse vorwärts zu bewegen.

Ein Beispielskript zur Normalisierung der RPM
Hier ist ein Beispielskript für die "Normalisierung" der Drehzahl und die anschließende Addition einer Kraft auf der Grundlage des Y-Werts der Drehmomentkurve bei einer bestimmten Drehzahl multipliziert mit der Motorleistung.

Sie können mit der gleichen Einstellung verschiedene Ergebnisse für andere Fahrzeuge erzielen, indem Sie auf der Kurve zwischen den Werten 0,0 und 1,1 bleiben.

Eine grüne Kurve nach oben

Wenn Sie dem Motor Ihres Fahrzeugs eine einfache Gleichung für das Übersetzungsverhältnis hinzufügen, können Sie realistisch aussehende Fahrzeuge erstellen, die sich beim Durchschalten der Gänge bewegen und unterschiedliche Leistungskurven oder dieselbe Kurve an verschiedenen Punkten erreichen. Dies setzt voraus, dass das Fahrzeug eine starre Karosserie ist. Wenn du weitere Rigidbodies in den Kofferraum oder auf die Rücksitze des Autos legst, wird das Auto in Bewegung geraten, was bei zeitlich begrenzten Lieferaufträgen sehr lustig sein kann.

Wenn Sie das Physiksystem von Unity nicht verwenden möchten, weil Sie einen eigenen Auto-Controller haben, können Sie unbeladene und beladene Varianten Ihrer Kurven erstellen und diese Kurven zur Laufzeit austauschen, damit das Fahrzeug so fährt, wie Sie es möchten.

Auch wenn Sie dies nicht oft verwenden werden, können Sie über die Unity API zur Laufzeit Schlüssel hinzufügen, Schlüssel ändern (wodurch neue Schlüssel entfernt und hinzugefügt werden) und Schlüssel auf Kurven vollständig entfernen. Dadurch haben Sie mehr Kontrolle über die Modifizierung Ihrer Kurven, die auch das Glätten von Tangenten einschließen kann, falls erforderlich.

Kurven für ein schweres Fahrzeug, z. B. einen Lkw mit Automatikgetriebe, der langsam anläuft, aber nach Erreichen der Höchstdrehzahl nicht an Leistung verliert: Diese Kurve zeigt den Lkw ohne Ladung.
Diese Kurve zeigt einen Lkw mit schwerer Ladung. Durch das Hinzufügen einer weiteren Taste und einer Leistungsreduzierung nach dem Anfahren können Sie dem Lkw das Gefühl geben, dass er beispielsweise einen langen zweiten Gang hat, und ihm so mehr Persönlichkeit verleihen.
Eine einzige Kurve für ein Fahrzeug, das mehrere Gänge hat
Eine einzige Kurve für ein Fahrzeug, das mehrere Gänge hat

Mit Animationskurven können Sie hervorragende Abstraktionen komplexerer Systeme erstellen, die Sie in einem visuellen Format kontrollieren können. Im Beispiel des Motors können Sie beim Beschleunigen mit der oben gezeigten Kurve (die das "Pseudo"-Getriebe darstellt) im Laufe der Zeit Leistung hinzufügen, um das Gefühl zu erzeugen, dass das Auto einen Gang wechselt - indem Sie die Tonhöhe nach oben anpassen, wenn Leistung zugeführt wird, und dann wieder nach unten, wenn die Leistung am oberen Ende jedes Gangs abfällt. Dies ist ideal für das Prototyping der Bewegung eines Fahrzeugs, indem die gesamte Fahrzeugleistung auf eine Kurve gelegt wird, die alle Gänge abbildet, vom Beginn des ersten Gangs bei x0,y0 bis zum oberen Ende des fünften Gangs bei x1,y1.

Die Drehzahl akkumuliert sich in der Regel im Laufe der Zeit, wenn man beschleunigt, so dass man im Grunde genommen Werte über die Zeit aufzeichnet, ähnlich wie bei der Addition linearer Bewegungen zu einem sich bewegenden Objekt. Lesen Sie mehr darüber im Abschnitt über Timing und Animation im Game Designer Spielbuch.

Drei futuristisch aussehende Autos rasen auf einer großen Gitterstraße mit neonblauen Lichtern, die die Straße umgeben
Pseudo"-Physik ist in Spielen nützlich, in denen die Bewegung nicht den Regeln der realen Physik entspricht, wie z. B. in dem futuristischen Rennspiel "Made with Unity", Antigraviator.

Nehmen wir ein anderes Beispiel: die Federung und Bewegung eines Autos, wenn es über unebenes Gelände fährt, um Kurven, oder wenn die Kraft auf die Räder übertragen wird. Bessere Lenkung, Kontrolle der Seitenkräfte oder Reifenschlupf können mit Animationskurven verwaltet werden, um naturgetreue Ergebnisse zu erzielen, die Sie visuell verfeinern können.

Bei der Erstellung einer auf Raycasts basierenden Mechanik für ein Fahrzeug, sei es ein Schwebefahrzeug oder ein Fahrzeug mit Rädern, ist eine gängige Wahl zur Erzeugung des Effekts einer "Aufhängung" im Motor eine nach oben gerichtete Kraft, die auf jeden Strahl ausgeübt wird, und ein PID (Proportional-Integral-Derivativ)-Regelalgorithmus zur Steuerung des Rückpralls oder in einigen Fällen das Hookesche Gesetz zur Dämpfung. Ein Beispiel dafür ist der Hover Racer Live 7/21 Cycle 4.2 von Unity, sowie ein Beispiel weiter unten in diesem Beitrag, das einen darauf basierenden PID verwendet.

Ein PID-Regler-Algorithmus ist ein Regelkreis-Rückkopplungsmechanismus oder ein Regler, der in vielen Branchen, einschließlich der Spieleentwicklung, eingesetzt wird, wenn eine reaktionsschnelle Korrektur erforderlich ist. Der PID-Regler berechnet einen Fehlerwert als Differenz zwischen einer gemessenen Prozessvariablen und einem gewünschten Sollwert und kann in Bezug auf die Elastizität (oder unser Beispiel) als Alternative zum Hooke'schen Gesetz verwendet werden. Ein PID in Spielen ist auch praktisch für:

  • Ein Fahrzeug soll im Tempomat-Modus eine Zielgeschwindigkeit einhalten, während es unvorhersehbar anderen Faktoren wie der mitgeführten Masse, den Eingaben des Spielers oder der Neigung des Geländes ausgesetzt ist.
  • Kontrollieren Sie, wie genau die feindlichen KI-Agenten auf Ihre Spieler zurückschießen können, während sie vermeiden, getroffen zu werden.
  • Latenzvorhersage in Multiplayerspielen.

PIDs können überall in der Spieleentwicklung eingesetzt werden, insbesondere in Sandboxen und Simulationen, die eine "genaue und optimierte automatische Steuerung" erfordern. Kerbal Space Program von Squad verwendet PID, um ein Raumschiff in einer einzigen Richtung zu halten.

Laut dieser Studie ist die PID-Regelung die ausgereifteste und am weitesten verbreitete Technologie für kontinuierliche Systeme" außerhalb der Spielentwicklung. Siehe diesen Vortrag Kontrollsystem: Einführung in die PID-Regelung für weitere Informationen.

Eine Weltraumrakete befindet sich in einem Hangar, wobei links eine Schnittstelle geöffnet ist, die Anpassungsoptionen für die Rakete anzeigt
Kerbal Space Program von Squad, das auf Steam erhältlich ist, verwendet PID-Regelungsalgorithmen.

Die Erstellung von PID-Regelalgorithmen mag nicht viel Zeit in Anspruch nehmen, aber sie benötigen Zeit für den Abgleich; Zeit, die sich je nach Anzahl der Fahrzeuge vervielfacht. Beim Prototyping können Sie jedoch stattdessen eine Animationskurve verwenden, um Zeit zu sparen oder die technischen Herausforderungen der Implementierung und des Abgleichs mehrerer PID-Regler zu vermeiden (Sie würden die Kurvenlösung schließlich durch einen PID-Regler für die ultimative Steuerung ersetzen wollen).

Kurven sind ideal für das Prototyping, da sie zur visuellen Anpassung an reale Zielreferenzbeispiele verwendet werden können. Was den Weltraum betrifft, so ist dies in einer Spiel-Engine "mathematisch perfekt", da es keine entgegengesetzten Bewegungskräfte gibt, es sei denn, sie werden hinzugefügt oder die Standard-Schwerkraft ist aktiviert. Daher ist es oft einfacher, eine einfache Kurve zu verwenden, um Veränderungen zu kontrollieren und gute Ergebnisse zu erzielen.

Wenn Sie eine Federung für ein Fahrzeug erstellen, können Sie Animationskurven verwenden, um zu bestimmen, wie viel Gegenkraft auf der Grundlage des Kompressionsgrads der Feder aufgebracht wird (normalisiert zwischen 0 und 1), anstatt einen PID-Regler für die Dämpfung zu verwenden. In Kombination mit einem Starrkörper und einem geringen Luftwiderstand werden die Schwingungen des Fahrzeugs unterdrückt, und die Fahrzeugaufhängung reagiert auf eine höhere oder niedrigere Belastung.

Um die Federkompression zu bestimmen, müssen Sie die Strahlentrefferentfernung von der Federlänge von 1,0f abziehen. Unabhängig von ihrer Länge beträgt der Kompressionswert 0,25, wenn die Feder zu 25 % komprimiert ist. Legen Sie diesen Kompressionswert als X-Wert auf der Animationskurve fest, multiplizieren Sie ihn mit der gewünschten Federkraft (da Sie mit normalisierten Werten arbeiten), und verwenden Sie ihn dann in AddForceAtPosition, um die Aufwärtskraft an jedem Punkt in einer Schleife anzuwenden, basierend auf der Anzahl der Aufhängungspunkte. Außer der Standardgravitation von Unity (-9,81f) sind keine weiteren Abwärtskräfte erforderlich.

Hier ist die Formel:

upwardsForce = forceMultiplier * forceCurve.Evaluate(springCompressionNormalized);

rigidBody.AddForceAtPosition(hitNormal * upwardsForce, point.transform.position);

Bei einem Masse-Kraft-Verhältnis von 13:110 und der nachstehenden Kurve.

Ein weißer Lieferwagen ohne Räder stürzt auf einer Straße vor einem Wald in Unity um.
Ein Lieferwagen ohne Räder mit verlängerter Federung (1 Meter Federlänge): Der Wagen fällt in einem ungleichmäßigen Winkel gerade nach unten und schaukelt hin und her.
Eine doppelsigmoidale Kurve
Eine doppelsigmoidale Kurve

Das Fahrzeug pendelt sich bei etwa 50 % Kompression ein, wobei geeignete Werte für Masse, Aufwärtskraft und geringe Mengen an linearem und winkelförmigem Widerstand zur Unterdrückung von Schwingungen verwendet werden. Dadurch kann das Fahrzeug ausfedern und sich setzen - aber nicht umkippen, es sei denn, es wird aus extrem großer Höhe fallen gelassen oder durch die vom Spieler hinzugefügte Masse überladen.

Um gute Werte zu finden, beginnen Sie mit einer y = b^x-Kurve (die wie ein Viertel eines Kreises aussieht). Halten Sie den Luftwiderstand niedrig und stellen Sie die Masse des Fahrzeugs so ein, wie sie in Wirklichkeit ist. Die Aufwärtskraft wird dann so eingestellt, dass das Fahrzeug bei etwa 50 % Einfederung steht. Lassen Sie das Fahrzeug ein paar Mal fallen, um zu prüfen, ob es einen Bodenkontakt hat, und sehen Sie, wo es sich nach dem Aufprall niederlässt. Die Verwendung dieses Ansatzes für die Federung von Fahrzeugen, die über unebenes Gelände fahren, wo jeder Punkt der Traktion gewonnen oder verloren werden kann, ermöglicht ein schnelles und kontrollierbares Federungssystem.

Die Verwendung von Animationskurven für Ihr Aufhängungsmodell kann für abwechslungsreiche Bewegungen von Fahrzeugen sorgen - Autos, Lieferwagen oder Lastwagen mit schlechter Aufhängung - nämlich solchen, die ständig durchdrehen, wie in Arcade-Spielen hüpfen oder um Kurven rollen und beim Beschleunigen und Bremsen wackeln. Kurven können in Kombination mit bestehenden Systemen verwendet werden, wenn Sie nicht bereits das Rigidbody-System von Unity oder Ihre eigene Aufhängungsmethode verwenden. Sie können Kurven für die Lenkung oder zur Verstärkung von Motorleistung, Federung, Luftwiderstand, Reifenschlupf, Bremskraft und mehr verwenden. Animationskurven sind ein sehr praktisches und vielseitiges Werkzeug in Unity, mit dem man jedem Fahrzeug einen Designhebel hinzufügen kann, um seine Eigenschaften im Inspektor visuell zu steuern.

Grau abfallende Kugeln mit unterschiedlichen Eigenschaften und Kurven in Unity
Verwendung verschiedener Kurven für jeden Rigidbody zur Anzeige der Eigenschaften beim Fallenlassen
Die Kurven für jede Kugel im vorherigen Bild
Die Kurven für jede Kugel im vorherigen Bild
Ein Codeschnipsel in C# zum Ablegen von Objekten
Der Codeschnipsel für das Ablegen von Kugeln

Die Reihe von Kugeln im obigen Bild wurde erstellt, indem eine Sequenz von Rigidbodies in einer Reihe positioniert und ihre X- und Z-Freeze-Position-Eigenschaften eingeschränkt wurden. Anschließend wurde mit einer Animationskurve, die auf der Kompressionsaufwärtskraft basiert, eine Aufwärtskraft ausgeübt, jedoch mit unterschiedlichen Kurven für jede Kugel, die zur besseren Visualisierung nebeneinander angeordnet wurden. Sie können diese Technik verwenden, um den gewünschten Bounce-Wert für ein Objekt zu finden oder um den vorhandenen Bounce-Wert zu optimieren, um die Eigenschaften auszugleichen. Wenn Sie als Designer in der Lage sind, die Eigenschaften der nach oben gerichteten Kraft zu manipulieren, können Sie Abstraktionen von komplexeren Funktionen erstellen.

Kurven sind ein leistungsfähiger Datentyp für XY-Diagramme, und obwohl sie technisch nicht perfekt sind, können sie Ihnen helfen, schnelle Dämpfungslösungen zu entwerfen, die im Inspektor visuell bearbeitet und zur Laufzeit als Voreinstellungen gespeichert werden können. In diesem Blog über die Kunst der Dämpfung hebt Alexis Bacot all die Dinge hervor, die "von einer guten Dämpfung abhängen". Kamera, Animation, Bewegung, Farbverläufe, UI-Übergänge und vieles, vieles mehr... es wird überall eingesetzt! Das Verständnis der Dämpfung ist der Schlüssel zu einem guten Polierergebnis. Allein die Dämpfung kann den Unterschied zwischen einer schlechten und einer guten Erfahrung ausmachen.

Im gleichen Beitrag demonstriert er, wie Unity's SmoothDamp verwendet werden kann, um eine schöne Leichtigkeit in und aus, und reagiert auf das Ziel ändern genau. Aber er federt nicht wie ein "fortschrittlicher Federdämpfer, der schwingen kann, was für die Aufhängung von Autos oder die Physik von unechten Bällen großartig ist" - ein Beispiel dafür, dass Animationskurven einen großen Vorteil bieten.

Natürlich lassen sich Kurven nicht nur als XY-Datentyp zur Manipulation des Gameplays verwenden. Sie können auch als Auswertungstool zur visuellen Datenerfassung mit AddKey über die Unity API verwendet werden. Um eine Position über die Zeit auszuwerten, wie z. B. die Dämpfung im Beispiel der Fahrzeugaufhängung oder die fallenden Kugeln, verwenden Sie AddKey(elapsedTime, currentSpringCompression) in einer Methode, rufen diese Methode auf und übergeben captureResolution als Wiederholrate über InvokeRepeating. Eine Aufnahmeauflösung von 0,1f bedeutet, dass alle 0,1s ein Schlüssel zur Kurve hinzugefügt wird. Zeigen Sie das Mini-Ergebnis im Inspektor an, oder öffnen Sie das Diagramm, um die vollständigen Daten zu sehen.

Eine aufgezeichnete Kurve
Eine gezeichnete Kurve ergibt sich aus der Verwendung einer linearen Sprungkurve, die eine direkte Gerade von 0,0 bis 1,1 aufweist
Eine aufgezeichnete Kurve
Eine aufgezeichnete Kurve ergibt sich aus der Verwendung einer nichtlinearen, doppelsigmoidalen Kurve, ähnlich der oben gezeigten
Zurück zum hüpfenden Van

Werfen wir noch einen letzten Blick auf den fallenden Lieferwagen. Die Animationskurve gibt vor, wie viel Kraft auf der Grundlage der Federkompression aufgebracht wird, und führt zu einem Ergebnis, das nahe am Ziel liegt und beim dritten Sprung etwas mehr Schwingungen aufweist. Sie können die mit einer Animationskurve erzeugte Federung mit der des PID-Reglers vergleichen, indem Sie den PID in Unity's Hover Racer Live 7/21 Cycle 4.2 verwenden. Der einzige Unterschied besteht darin, dass das PID-Ergebnis mit der Schwebekraft multipliziert wird und nicht mit dem Y-Wert der Animationskurve.

Nach der Implementierung des PID und einer Menge Auswuchtarbeiten fühlt sich die Aufhängung des Fahrzeugs näher am Ziel an, mit weniger Nachlaufschwingungen und weniger Luftwiderstand, der zur Unterdrückung benötigt wird. Leider muss der PID für jedes Fahrzeug ausgeglichen werden, wenn sie unterschiedliche Massenwerte haben, was sehr viel Zeit in Anspruch nimmt. Für Prototyping-Zwecke kann dies schnell und visuell mit Animationskurven durchgeführt werden, und die aufgezeichneten Ergebnisse der Bewegung können analysiert werden. Um die PID-Implementierung zu bewerten, können Sie wiederum eine Kurve verwenden, um das Ergebnis mit einer leeren Kurve zu vergleichen. Das Ergebnis ist viel besser, mit einem leicht übertriebenen zweiten Aufprall, aber mit der Bewegung und dem Aussehen, das man sich für einen großen schwimmenden Van wünscht.

Ein weißer Lieferwagen ohne Räder schwebt in der Luft, in Unity
Die endgültige Implementierung der Fahrzeugaufhängung unter Verwendung von PID, aber basierend auf den Animationskurven, die während des Prototyping entwickelt wurden: Die Federung ist immer noch übertrieben, mit Federlängen von 1 Meter.
Eine Soll-Dämpfungskurve auf der linken Seite, mit einer aufgezeichneten Ergebniskurve auf der rechten Seite
Auf der linken Seite sehen Sie das Ergebnis der Soll-Dämpfungskurve von Alexis Bacot, auf der rechten Seite das aufgezeichnete Ergebnis der Fahrzeugbewegung nach der Implementierung des PID.

Zusammenfassend lässt sich sagen, dass Sie bei der Entwicklung von Fahrzeugbewegungen Animationskurven verwenden sollten:

  • Zeichnen Sie die Motorleistung eines Fahrzeugs auf und erzeugen Sie einen gleichmäßigen Leistungsverlauf.
  • Erstellen Sie realistische Bremsbewegungen, z. B. wenn die Bremskraft schnell eingesetzt und dann mit der Zeit verringert wird, um das Abbremsen eines echten Autos zu simulieren; oder in einem Spiel wie iRacing, wo der Fahrer am Reifenlimit bremst, damit das Auto in kurzer Zeit langsamer wird, ohne außer Kontrolle zu geraten.
  • Simulieren Sie ein Aufhängungssystem, das die Aufwärtskräfte für das Auto bereitstellt.
  • Simulieren Sie die seitliche Traktion, mit Berechnungen der seitlichen Gegenkraft, die verhindern, dass das Auto zu weit nach links oder rechts rutscht.
  • Simulieren Sie die Lenkung bei Verwendung eines Controllers (die Lenkung ist in der Nähe der Mitte, etwa zwischen -0,5 und 0,5, verwendbar, wird aber zunehmend schneller, wenn sich die Knüppelposition -1 oder 1 nähert).
Ein grüner Block, der auf blauem Wasser schwimmt, umgeben von Bergen, in Unity
In diesem Prototyp wird curve.Evaluate(time) verwendet, um die Transformation der Plattform auf der Y-Achse über die Zeit zu verschieben.

Zusätzlich zur Fahrzeugphysik können Animationskurven als Designhebel für das Prototyping von Spielerbewegungen, Trefferschaden über die Zeit und mehr verwendet werden. Als leistungsstarkes Prototyping-Tool ermöglichen Animationskurven den Spieldesignern, die Anwendung unterschiedlicher Kräfte zu testen und das richtige "Gefühl" für die Mechanik zu finden, ohne komplexe Algorithmen oder Physikberechnungen schreiben zu müssen.

Weitere Anleitungen und Inspirationen finden Sie im Game Designer Playbook, das Sie kostenlos herunterladen können.