Bevor du anfängst
Stellen Sie sicher, dass Sie diese Ziele aus dem vorherigen Abschnitt, Ihr Projekt einrichten und kompilieren, abgeschlossen haben:
Ein Projekt basierend auf der First-Person-Vorlage mit einer benutzerdefinierten Spiel-Modus-C++-Klasse erstellt.
Bestätigt, dass Ihr Projekt das erweiterte Eingabesystem verwendet.
Einen neuen Charakter einrichten
Sie haben ein neues C++-Projekt mit einem benutzerdefinierten Spiel-Modus eingerichtet. Jetzt fügen Sie eine neue Charakterklasse hinzu, erweitern diese auf Blueprints und legen diese als den Standard-Spieler-Pawn im Spiel-Modus fest.
Eine C++-Charakterklasse erstellen
Actor-Assets sind alle Objekte, die in einem Level platziert werden können. Pawns sind Actors, die von Spielern oder KI gesteuert werden können, während Charaktere ein besonderer Typ von Pawn sind, der als Spieler-Charakter verwendet wird. Mehr Informationen zu diesen Actor-Klassen finden Sie in den Informationen zu den Actors, Pawns und Charakterklassen in der Dokumentation zum Gameplay-Framework der UE.
Um eine neue Charakterklasse zu erstellen und Ihrem Projekt C++ hinzuzufügen, befolgen Sie diese Schritte:
Gehen Sie im Menü des Editors zu Werkzeuge > Neue C++-Klasse.
Suchen und wählen Sie im Fenster Parent-Klasse auswählen den Eintrag Charakter und klicken Sie dann auf Weiter.
Geben Sie einen Namen für die neue Klasse ein (in diesem Tutorial wird
AdventureCharacterverwendet) und klicken Sie dann auf Klasse erstellen.Die Unreal Engine öffnet neue Klassendateien automatisch in Visual Studio (VS). Wechseln Sie zurück zu VS, um Ihre neuen Dateien zu finden.
Wenn VS Sie nicht automatisch auffordert, Ihr Projekt zu aktualisieren, gehen Sie im Unreal Editor zu Werkzeuge > Visual Studio aktualisieren.
Ihren C++-Charakter zu Blueprints erweitern
So wie Sie es im Spiel-Modus gemacht haben, klicken Sie im Inhaltsbrowser mit der rechten Maustaste auf Ihre Charakter-Klasse und wählen Sie Blueprint-Klasse basierend auf <CharacterName> erstellen aus, um einen Blueprint für diesen Charakter im Blueprints-Ordner anzulegen.
Standard-Spieler-Charakter ändern
Um Ihren neuen Charakter in-game zu verwenden, legen Sie ihn als die Standard-Pawn-Klasse fest, die im Spiel-Modus Ihres Projekts verwendet wird.
Befolgen Sie diese Schritte, um Ihren Charakter als Standard-Spieler-Charakter festzulegen:
Falls Ihr Spiel-Modus-Blueprint noch nicht geöffnet ist, doppelklicken Sie im Inhaltsbrowser auf Ihren neuen Blueprint, um ihn im Blueprint-Editor zu öffnen.
Erweitern Sie im Details-Panel des Blueprints den Eintrag Klassen. Hier können Sie verschiedene Klassen für diesen Spiel-Modus festlegen.
Ändern Sie Standard-Pawn-Klasse zu Ihrem Charakter-Blueprint (
BP_AdventureCharacter).Klicken Sie oben links im Fenster auf Speichern, um den Spiel-Modus-Blueprint zu speichern, und klicken Sie dann auf Kompilieren.
Input-Actions entdecken
Der Standard-Charakter in der First-Person-Vorlage verwendet einen Satz bereits existierender Input-Actions, die mit Blueprints kombiniert werden, damit der Charakter sich bewegen, springen und umsehen kann.
Öffnen Sie diese Input-Actions und lernen Sie, wie sie die Bewegungen dieses Charakters antreiben.
Navigieren Sie im Asset-Baum des Inhaltsbrowsers zum Ordner Inhalt > Input > Aktionen. Sie sehen drei Input-Actions namens IA_Jump, IA_Look und IA_Move, die jeweils für Springen, Umsehen und Bewegen stehen.
Doppelklicken Sie auf IA_Jump, um es zu öffnen und das Details-Panel anzuzeigen.
Die Input-Actions des Charakters verwenden die folgenden Eigenschaften, um zu definieren, um welchen Action es sich handelt und was sie tut:
Eigenschaft | Beschreibung |
Werttyp | Bestimmt, welchen Typ von Wert diese Input-Action enthält. Wählen Sie je nach Bewegungsart, die Sie mit dieser Input-Action erfassen möchten, einen Werttyp aus. Beispielsweise ist Axis1D ist ein float-Wert zur Erfassung eindimensionaler Bewegung (rein und raus scrollen) oder einer skalaren Anpassung (Änderung der Bewegungsgeschwindigkeit). Axis2D ist ein Vektor aus zwei floats, der zweidimensionale Bewegung wie WSAD-Steuerelemente erfasst. Axis3D ist ein Vektor aus drei floats, der dreidimensionale Bewegung wie Flug- oder Schwimm-Steuerelemente erfasst. |
Auslöser | Erstellen Sie Auslöser, die mögliche Zustände der Action repräsentieren, damit Sie mit diesen Auslösern in Blueprints oder Code Logik aufbauen können. Wenn die Schaltfläche, die |
Modifikatoren | Modifiziert den rohen Input-Wert, den die UE empfängt, bevor sie ihn an Input-Auslöser sendet. |
Input-Mapping-Kontexte erkunden
Input-Actions funktionieren nicht alleine; sie benötigen einen Input-Mapping-Kontext, um zu wissen, welche Schaltfläche sie auslösen sollen und in welchem Kontext. Dies ist eine Sammlung von Mappings, die die Regeln für das Auslösen einer Input-Action beschreiben. Sie können mehrere Input-Mapping-Kontexte erstellen und personalisieren und sie dynamisch aktivieren und deaktivieren, um sie den Anforderungen Ihres Spiel anzupassen.
Der Standard-Charakter hat bereits einen Input-Mapping-Kontext, den Sie im Inhaltsbrowser unter Inhalt > Input finden. Doppelklicken Sie auf IMC_Default, um es zu öffnen und sein Details-Panel anzuzeigen.
IMC_Default enthält drei Mappings , die jede der drei Input-Actions Benutzer-Inputs zuordnet. Jedes Mapping ruft die Auslöser und Modifikatoren der Input-Action ab.
Mapping einer Springen-Action
Erweitern Sie das IA_Jump-Mapping. Sie sehen, dass sie Steuerelementbindungen hat: Leertaste und Gamepad-Fläche Button Unten. Wenn Sie in-game auf eine dieser Schaltflächen drücken, wird IA_Jump ausgelöst.
Mapping von 2D-Bewegung mit Tastaturtasten
Erweitern Sie als Nächstes IA_Move, um die neun Bindungen der WASD-Tasten, der Pfeiltasten und des linken Gamepad-Thumbsticks anzuzeigen.
Das Erstellen einer zweidimensionalen Bewegung aus mehreren einzelnen Tasten erfordert etwas mehr Einrichtung als der einfache boolesche Sprung.
Ein Tastendruck ist eindimensional und gibt einen Wert von 0 zurück, wenn nicht gedrückt, oder 1, wenn gedrückt. Das funktioniert perfekt für die Tasten D oder Rechter Pfeil, denn diese sollen den Charakter in eine positive Richtung entlang der X-Achse bewegen (mit anderen Worten, nach rechts). Allerdings müssen wir unseren Charakter auch vorwärts, links und rückwärts bewegen. Mit anderen Worten: Wir wollen die Werte von 0 bis 1 und von 0 bis -1 auf der X-Achse und der Y-Achse.
Um also Werte abzurufen, die Bewegung in alle Richtungen erstellen, verwenden die Input-Actions Modifikatoren, um den Input-Wert auf eine andere Achse oder auf einen negativen Wert zu transformieren.
Erweitern Sie beispielsweise die A-Steuerelementbindung und ihre Modifikatoren, um zu sehen, wie sie konfiguriert ist. Sie sehen, dass sie den Negieren-Modifikator hat. Das heißt, beim Drücken der Taste wird der Wert von 1.0 zu -1.0 negiert, was Ihren Charakter auf der X-Achse nach unten, also nach links, bewegt.
Durch Erweitern des Negieren-Modifikators können Sie angeben, ob Sie die X-, Y- oder Z-Achse negieren wollen. Diese sind alle standardmäßig aktiviert, aber Sie können die Negierung je nach Bedarf auf bestimmte Achsen einschränken.
Erweitern Sie jetzt die S-Steuerelementbindung. Um eine Rückwärtsbewegung auf der Y-Achse zu erstellen, hat diese Bindung zwei Modifikatoren: einen Input-Achsenwerte neu anordnen, der den Input von der X- zur Y-Achse ändert, und einen Negieren.
Erweitern Sie den Modifikator Input-Achsenwerte neu anordnen. Die Reihenfolge-Option bestimmt, wie die Achsenwerte neu angeordnet werden sollen. In diesem Fall verwendet die Input-Action YXZ, also werden die X- und Y-Achse gegenüber der Standardreihenfolge XYZ getauscht.
Mapping von 2D-Bewegung auf einem Gamepad
Der Gamepad-Thumbstick verwendet eine 2D-Achse für Input anstatt einer 1D-Schaltfläche, daher benötigt dieses Mapping nur eine Steuerelementbindung, um die Thumbstick-Bewegung zu verarbeiten.
Wenn Sie die Modifikatoren für Gamepad Linker Thumbstick 2D-Achse erweitern, sehen Sie die Totzone- und Skalar-Modifikatoren.
Totzone legt die Schwellenwerte fest, über und unter denen Input ignoriert wird. Verwenden Sie diese Option, um kleine Input-Werte in der Nähe der Mitte des Thumbsticks Herausfiltern, die oft unbeabsichtigt sind, weil der Stick nicht perfekt zentriert ist oder wenig Fingerdruck entsteht.
Skalar legt fest, mit welchem Wert die X-, Y- und Z-Achsen multipliziert werden, so dass Sie steuern können, wie schnell sich Ihr Charakter in jede Richtung bewegt.
Mapping von Blick-Steuerelementen auf Gamepad und Maus
Erweitern Sie das Action-Mapping IA_Look. Diese Input-Action ist an das Steuerelement Gamepad Rechter Thumbstick 2D-Achse gebunden.
Sie braucht nur einen Totzone-Modifikator, um Fehler herauszufiltern.
Der Standard-Charakter hat einen separaten Mapping-Kontext für mausbasierte Kamera-Steuerelemente. Gehen Sie zurück in den Inhaltsbrowser und öffnen Sie IMC_MouseLook. Dieser IMC erstellt Bindungen für die IA_MouseLook-Input-Action, die mit IA_Look identisch ist.
Durch Verwendung separater Thumbstick- und Maus-Input-Actions können Sie für jeden Input verschiedene Modifikatoren haben und diese als separate Input-Pfade behandeln. In diesem Tutorial kombinieren Sie jedoch alles in einem Input-Mapping-Kontext.
Erweitern Sie das Action-Mapping IA_MouseLook. Diese Input-Action ist an das Steuerelement Maus XY 2D-Achse gebunden.
Die Maus-Steuerelement-Bindung verwendet bereits eine 2D Achse, also ist der einzige Modifikator, der noch benötigt wird, eine Y-Achse-Negation, damit der Charakter nach unten schaut, wenn Sie die Maus nach oben bewegen. Das ist üblich für First-Person-Spiele, aber Sie können diesen Modifikator löschen, um Ihre Blicksteuerelemente umzukehren.
Einen Input-Mapping-Kontext ändern
Da Sie gerade erst in einem neuen Projekt anfangen, kombinieren Sie alle Input-Mappings in einen Input-Mapping-Kontext.
Befolgen Sie diese Schritte, um Ihren eigenen IMC basierend auf den Mapping-Kontexten des Standard-Spielers zu erstellen:
Rechtsklicken Sie im Inhaltsbrowser im Ordner Inhalt > Input auf
IMC_Defaultund wählen Sie Duplizieren.Nennen Sie den Mapping-Kontext
IMC_Adventureund klicken Sie doppelt darauf, um ihn zu öffnen.Erweitern Sie das IA_Look-Mapping.
Klicken Sie auf die Plus-Schaltfläche neben IA_Look, um eine neue Steuerelementbindung hinzuzufügen.
Klicken Sie auf None, um die Schlüssel-Wert-Liste zu öffnen, erweitern Sie Maus und wählen Sie Maus XY 2D-Achse.
Klicken in der Maus-Steuerelement-Bindung auf die Plus-Schaltfläche neben Modifikatoren und ändern Sie Keine zu Negieren.
Erweitern Sie den Index [0]-Modifikator und heben Sie die Auswahl von X und Z auf. Dieser Modifikator sollte nur die Y-Achse negieren.
Speichern und schließen Sie den Mapping-Kontext.
Um Ihre Kamerasteuerelemente umzukehren, können Sie Negieren-Modifikatoren Ihren Thumbstick- oder Maus-Steuerelement-Bindungen hinzufügen oder entfernen.
Als Nächstes
Im nächsten Abschnitt lernen Sie, wie der Blueprint des Standard-Charakters den Spieler-Input mit der Charakterbewegung verbindet, und beginnen, dies im Code nachzubilden.
Charakterbewegung konfigurieren
Lernen Sie, wie Sie Spieler-Input in C++ an Charakterbewegung bindet.