Inhalt
Matt Bird schreibt allerlei Unsinn, aber er schreibt gerne Animations-Tutorials für Unity.
Das Animieren von 2D-Objekten in Unity ist ein ziemlich einfacher Vorgang, der jedoch nicht vollständig selbsterklärend ist. Es unterscheidet sich ein wenig von 3D-Animationen, die je nach Charaktermodell unglaublich kompliziert und komplex werden können, und erfordert einige Einstellungen, bevor Sie statische Sprites in einen sich bewegenden Charakter verwandeln können. Mal sehen, wie es geht.
Vorbereiten einer Animation
Um ein 2D-Zeichen zu animieren, benötigen Sie zunächst ein Sprite-Blatt. Sprite-Blätter sind lange, transparente Bilder, die alle von Ihnen erstellten Sprites in einer Reihe von Zeilen und Spalten enthalten. Es gibt viele Programme, mit denen Sie sowohl Sprites als auch Sprite-Blätter erstellen können. Ich persönlich bevorzuge GraphicsGale, da ich mich mit Pixelkunst beschäftige. Welches Programm Sie verwenden, hängt von Ihrem persönlichen Geschmack sowie von der Art Ihres Projekts ab.
Unabhängig davon, wie Sie Ihr Sprite-Sheet erstellen - das von Programm zu Programm unterschiedlich ist. Danach müssen Sie nach zusätzlichen Tutorials suchen - möchten Sie sicherstellen, dass die von Ihrem Programm ausgespuckte PNG-Datei einen transparenten Hintergrund hat . Dies beinhaltet häufig die Auswahl einer einzelnen Farbe als Hintergrund- / Löschfarbe (wie das Dunkelgrün im obigen Sprite-Sheet-Beispiel), die als Referenzpunkt für transparente Bereiche im Bild dient. Wenn diese Hintergrundfarbe in Ihrer PNG-Datei außerhalb Ihres Bearbeitungsprogramms angezeigt wird, haben Sie Ihre Transparenz nicht richtig eingestellt.
Sobald Sie Ihr Sprite-Blatt haben, können Sie es in der Projektansicht in Unity ablegen. Ich schlage vor, einen Ordner speziell für dieses Sprite-Blatt zu erstellen, der auch jede andere Datei enthalten kann, die dem 2D-Zeichen zugeordnet ist, das Sie animieren möchten, aber das liegt bei Ihnen.
Klicken Sie auf Ihr Sprite-Blatt, sobald es Unity ist, und Sie werden die Importeinstellungen im Inspektor aufrufen. Die Importeinstellungen bestimmen, wie Ihre Sprites aussehen, wenn sie in Unity gezogen werden, und wie Sie diese Einstellungen bearbeiten, variieren von Spiel zu Spiel. Da ich Pixelkunst verwende, möchte ich, dass die Sprites klar aussehen. Daher setze ich den Filtermodus auf Punkt (kein Filter) und die Komprimierung auf Keine. Pixelkunst ist in der Regel auch sehr klein, daher der Name. Daher habe ich die Pixel pro Einheit auf 32 gesetzt, um der typischen Größe eines Sprite-Kunstspiels zu entsprechen. Dadurch wird eine beträchtliche Anzahl von Sprites erstellt, die in eine Szene eingefügt werden können. Klicken Sie unten auf Übernehmen, um Ihre Einstellungen zu speichern.
Egal wie groß deine Sprites sein sollen, ich höchst Es wird empfohlen, die Pixel pro Einheit auf die gleiche Größe einzustellen Jedes Kunstwerk, das Sie in Unity importieren. Wenn Ihr Charakter 32 PPU ist, sollten Ihre Hintergründe auch 32 PPU sein. Dies gilt auch für andere Charaktere, Feinde, Effektanimationen usw. Das Einstellen einer anderen PPU kann sehr seltsam aussehen, wenn Sie nicht vorsichtig sind.
Unabhängig von Ihren anderen Einstellungen möchten Sie den Sprite-Modus ganz oben in Mehrere ändern. Klicken Sie dann einige Felder weiter unten auf die Schaltfläche Sprite-Editor. Dadurch wird das Sprite-Editor-Fenster geöffnet.
Im Sprite-Editor-Fenster können Sie einzelne Frames bearbeiten und mit einer Vielzahl von Einstellungen herumspielen, die eine Vielzahl von Effekten erzeugen können. Für unsere Zwecke müssen wir jedoch nur den Sprite-Editor verwenden, um unser Sprite-Blatt zu verbinden. Wenn Sie das Sprite-Blatt in Unity ziehen, erhalten Sie derzeit ein GameObject, das aus jedem Sprite auf Ihrem Blatt besteht, und das ist nicht das, was Sie wollen.
Gehen Sie zu Slice oben im Editor. Dadurch wird das oben abgebildete Slice-Menü aufgerufen. Hier können Sie das Sprite-Blatt in kleinere Bilder unterteilen, die Unity später als separate Frames für Ihre Animationen interpretiert. Es liegt an Ihnen, wie Sie Ihr Blatt in Scheiben schneiden. Ich bevorzuge es jedoch, Type auf Grid By Cell Size zu setzen und dann die genauen Abmessungen von a einzugeben Einzelbild von meinem Sprite. Grafikprogramme, die Zeichen-Sprites erstellen, arbeiten normalerweise Frame für Frame. Daher sollte es einfach sein, die Abmessungen Ihrer Frames zu ermitteln, indem Sie Ihr Grafikprogramm überprüfen. In diesem Fall habe ich jeden meiner Frames mit 64 x 64 Pixel erstellt, also gebe ich die Pixelgröße mit 64 und 64 ein. Dadurch wird das Sprite-Blatt in sechs verschiedene Frames aufgeteilt, die durch schwache weiße Linien im Bild gekennzeichnet sind unter dem Menü. Wenn diese Linien Ihre Bilder zu irgendeinem Zeitpunkt halbieren, haben Sie nicht die richtigen Abmessungen.
Klicken Sie auf Übernehmen, um Ihre Slice-Einstellungen zu speichern. Schließen Sie dann das Fenster und kehren Sie zum Projektfenster zurück. Wenn Sie die obigen Anweisungen befolgt haben, sollte Ihr Sprite-Blatt folgendermaßen aussehen:
Jeder Frame kann jetzt einzeln in Ihr Projekt gezogen und als eigenes GameObject verwendet werden.
Das war eine Menge Vorbereitung, aber Sie sind endlich bereit zu animieren. Zum nächsten Schritt.
Animation erstellen
Um eine Animation in Unity zu erstellen, benötigen Sie zunächst ein GameObject. Ziehen Sie eines der von Ihnen ausgewählten Sprites aus Ihrem Sprite-Blatt (wenn Sie mit einem Charakter arbeiten, handelt es sich wahrscheinlich um eine "inaktive" Animation, z. B. wenn Ihr Typ nur auf dem Bildschirm herumsteht) und legen Sie es in der Szenenansicht ab. Unity fügt Ihrem GameObject eine Transformation und einen Sprite-Renderer hinzu, und Sie können es nach Belieben umbenennen.
Als Nächstes möchten Sie sowohl die Registerkarten Animator als auch Animation. Wenn sie standardmäßig nicht auf Ihrem Unity-Bildschirm angezeigt werden, können Sie sie hinzufügen, indem Sie zu Fenster gehen und dann zu Animation scrollen. Animationen sind die einzelnen Frame-für-Frame-Sequenzen, die Ihren Charakter bewegen. Animatoren sind kleine Verarbeitungseinheiten, die GameObjects mitteilen, auf welche Animationen sie zugreifen können, und Unity ermöglichen, Animationen aus dem Skript auszulösen. Sie benötigen beide, um ein GameObject zu animieren.
Klicken Sie auf die Registerkarte Animation, und Sie erhalten eine kleine Benachrichtigung, in der Sie aufgefordert werden, einen Animator und einen Animationsclip hinzuzufügen. Wir werden mit einer müßigen Pose für unseren Charakter beginnen. Klicken Sie auf die Schaltfläche neben dieser Benachrichtigung, und Sie werden aufgefordert, Ihren ersten Animationsclip zu erstellen. Wir werden es "untätig" nennen. Beachten Sie den Dateityp .anim. Alle Animationsclips sind .anims.
Dadurch wird auch eine Animator-Komponente in Ihrem GameObject sowie ein Controller erstellt, in dem alle Animationsclips des Animators gespeichert sind. Es wird als .controller-Datei in Ihren Assets angezeigt. Ich empfehle, alle von Ihnen erstellten Dateien - Animationsclips und Controller - in denselben Ordner wie Ihr Sprite-Blatt zu verschieben, um den Zugriff zu erleichtern. Sie sollten auch ein Prefab des GameObject erstellen, an dem Sie arbeiten. Ziehen Sie das GameObject also auch in den Ordner in der Projektansicht.
Sie können jetzt eine Animation erstellen. Sobald Sie auf Ihr animierbares GameObject geklickt haben, können Sie über die Registerkarte Animation auf eine Zeitleiste zugreifen. Hier können Sie Ihre Frames ablegen und den Animationsclip testen. In diesem Beispiel hat 'idle' bereits den Frame, den wir verwenden möchten. Wenn Ihre inaktive Animation jedoch mehr Frames enthält - wenn er beispielsweise auf und ab geht -, werden Sie diese nach dem ersten Frame auf der Timeline ablegen. Sie können dann einstellen, wie schnell oder wie langsam die Animation ausgeführt wird, indem Sie die Samples-Nummer von 60 auf einen beliebigen Wert ändern.
Eine Animation ist fertig. Lassen Sie uns eine neue erstellen. Klicken Sie auf das Dropdown-Menü neben der Samples-Nummer und Sie sehen eine vollständige Liste aller Animationen, die auf dem Controller Ihres GameObject gespeichert sind. Klicken Sie auf Neuen Clip erstellen, und Sie werden erneut aufgefordert, einen neuen Clip mit einem bestimmten Namen zu erstellen und zu speichern. Wir werden diesen einen "Spaziergang" nennen.
Für 'walk' sind in diesem Fall zwei Frames erforderlich. Daher nehmen wir die letzten beiden Frames auf dem Sprite-Blatt für diesen Charakter und legen sie auf der Timeline ab. Diese werden zu Keyframes, die den Ablauf des Animationsclips bestimmen. Stellen Sie Samples auf einen niedrigen Wert und drücken Sie die Wiedergabetaste. Er führt dann eine Art Stolperstein durch. (Vertrauen Sie mir, wenn ich sage, dass es nicht so beeindruckend aussieht. Sie vermissen nicht viel.) Der Animationsclip wird wiederholt, sobald er das erste Bild ohne Keyframe erreicht. Nach seinem zweiten Schritt kehrt er zu zurück Der Erste. Solange dieser Animationsclip aktiv ist, wird er jetzt für immer laufen.
Und das ist das! Sie haben jetzt ein (sehr einfaches) animiertes GameObject in Unity! Mit Ihrem Sprite-Sheet können Sie auf die gleiche Weise so viele Animationsclips erstellen, wie Sie möchten. So kann Ihr Charakter Feinde angreifen, Türen öffnen, auf deren Gesicht tippen, wenn sie verwirrt sind, oder was auch immer Sie möchten. Sobald Sie sich an den Vorgang gewöhnt haben, dauert es nur wenige Minuten von der Fertigstellung eines Sprite-Blatts bis zur Animation eines Charakters. Sie können auch C # -Skripte verwenden, um in bestimmten Fällen auf Animationen zuzugreifen, indem Sie die folgende Referenz verwenden:
yourObject.GetComponentAnimator> (). Play ("yourAnimationName");
Wenn Ihr Charakter beispielsweise von einem Feind getroffen wird, können Sie Ihr Spiel so codieren, dass es zu einer "beschädigten" Animation wechselt. Dies geschieht sofort, wenn Sie einen Feind treffen, vorausgesetzt, er hat den richtigen Animator. Sie können sogar Animationsclips als Variablen speichern, um ohne Verwendung einer Zeichenfolge auf bestimmte Animationen zuzugreifen.
Erweiterte Tipps
Das Animieren von GameObjects in Unity bietet natürlich noch viel mehr, und das Abdecken jeder Basis geht weit über den Rahmen dieses Artikels hinaus. Schauen wir uns dennoch einige kurze Tipps an, um Ihnen den Einstieg in die Erstellung und Verwendung von Animationen zu erleichtern, die über die Grundlagen hinausgehen:
- Sie können zusätzliche Effekte für Ihre Animationsclips erstellen, indem Sie die Eigenschaften bearbeiten. Klicken Sie beim Bearbeiten eines Animationsclips auf Eigenschaft hinzufügen. Daraufhin wird eine Liste mit Optionen angezeigt - normalerweise Transformieren und Renderer / Sprite-Renderer -, mit denen Sie unter anderem das Aussehen, die Größe, die Drehung, die Ebene und die Deckkraft Ihres GameObject ändern können. Sie können auch festlegen, dass jede dieser Eigenschaften für jeden Keyframe unterschiedlich ist. Wenn Sie beispielsweise möchten, dass Ihr GameObject als Teil einer Animation ausgeblendet wird, können Sie die Einstellung Color.a im letzten Frame der Animation auf 0 setzen Dadurch verschiebt sich seine Deckkraft am Ende des Animationsclips allmählich von sichtbar zu unsichtbar.
- Sie können die Eigenschaften aller untergeordneten Objekte, die an Ihr GameObject angehängt sind, auch über Animationsclips bearbeiten. Untergeordnete Elemente werden im selben Dropdown-Menü wie andere Eigenschaften angezeigt und können auf die oben beschriebene Weise geändert werden. Untergeordnete Objekte für ein durchschnittliches GameObject können Waffen, Schilde, Gegenstände, Kleidung, Augen, Münder und vieles mehr sein.
- Es wird dringend empfohlen, dies zu tun nicht Ändern Sie die Position eines übergeordneten GameObject über Eigenschaften. Positionskoordinaten gelten für Eltern im globalen Raum in Unity. Wenn Sie also Ihren Charakter dazu animieren, sich beim Ausführen einer Sprunganimation nach oben zu bewegen, werden sie stattdessen zu diesen verschoben Spezifisch Koordinaten, wann immer Sie die Animation auslösen. Das heißt, untergeordnete Objekte eines Elternteils verwenden lokale Koordinaten. Wenn Sie also eine Waffe oder einen Schild während einer Animation nach oben oder unten bewegen, bewegen sie sich immer relativ zur Position des übergeordneten Objekts.
- Animationsclips sind standardmäßig so eingestellt, dass sie eine unbegrenzte Schleife aufweisen. Um dies zu ändern, suchen Sie die ANIM-Datei des Animationsclips in Ihrer Projektansicht und überprüfen Sie sie im Inspektor. Deaktivieren Sie die Schleifenzeit. Auf diese Weise wird die Animation nur einmal abgespielt, wodurch das GameObject beim Erscheinen des letzten Frames angehalten wird.
- Animationsclips sind spezifisch für ihr ursprüngliches GameObject. Folglich können Sie keine generische "Walk" -Animation erstellen und auf jedes GameObject anwenden, da sie auch den Frame aus dem ersten Animationsclip überträgt und den neuen Charakter während der Dauer der Animation auf magische Weise in den alten verwandelt. Es gibt komplexere Möglichkeiten, dies zu umgehen, aber zum größten Teil benötigt jedes animierte GameObject einen eigenen Satz von Animationsclips.