Transkripte
1. Einführung: In diesem Kurs lernen
wir, wie man einen Multiplayer für die Pixel außerhalb der
Plattform
entwickelt, indem wir Blueprints
und Unreal Engine Phi Phi Phi verwenden,
um Plattform
entwickelt, indem wir Blueprints
und Unreal Engine Phi Phi Phi verwenden eine Mini-Version
des bekannten
2D-Spiels Maple Story
nachzubilden . Dieser Kurs enthält
alles, was Sie wissen
müssen, um mit dem
Multiplayer zur
Spieleentwicklung
in Unreal Engine Five zu beginnen Multiplayer zur
Spieleentwicklung , einschließlich und Unreal Engine Five, Überblick und Navigation. Importieren in das
Asset-Umgebungsdesign mithilfe von Kachelkarten, oder? Einige kippen Bücher um, um die Pixel-Assets zu
animieren. Die Grundlagen von Blaupausen, Charaktererstellung und
Bewegungen wie Springen, Laufen und Schlagen eines
Kamerasystems für den Charakter, wodurch Feinde durch die
Arbeit mit KI geschaffen werden. Blendende Mechanik für
Seile und Buchstaben. Gesundheitsschaden und Tod sind sowohl der Spieler als
auch der Feind. Und erleben und
nivellieren System, Erstellen von Benutzeroberflächen,
Laden von Kampf, Text, visuellen Effekten und
Soundeffekten
sowie nützliche Ressourcen, die Ihnen
bei Ihrem
Spielentwicklungsprozess helfen . Ich stelle Ihnen auch das
fertige Projekt zur Verfügung, damit Sie es nach Ihren
Wünschen überprüfen können, während Sie dem Kurs folgen. Mein Name ist die meiste Angelegenheit
und ich bin CEO, Spieldirektor und
Designer von Pixelhelmen. Ich arbeite seit acht Jahren in
Unreal Engine und habe kürzlich
Fan Tail on Steam veröffentlicht
, der
sehr positiv zugenommen hat. Ich habe auch zwei
Jahre damit verbracht,
mein persönliches Projekt Board Craft zu entwickeln . Und momentan lege ich Regie und programmiere den neuen Titel meines
Unternehmens
, der ein unangekündigter
3D-Platformer ist. Am Ende dieses Kurses können
Sie
getrost
Ihr eigenes
Multiplayer-2D-Spielprojekt von Grund auf neu erstellen . Ich habe diesen Kurs
für alle entwickelt, die daran interessiert sind,
Spiele zu entwickeln, und Unreal Engine fünf kämpft damit, ein Spiel zu
entwickeln ,
das den aktuellen
Industriestandards entspricht. Ich hoffe, du meldest dich
an und begleite mich an diesem Kurs. Und denken Sie daran, dass ich während des
gesamten
Kurses hier bin , um Ihnen zu helfen.
Ich hoffe, wir sehen uns bald.
2. Unreal Engine 5 herunterladen: Gehen Sie Install Unreal Engine fünf, Sie müssen zu
Epic Games.com gehen. Also, richtig, Epic Games.com, innerhalb Ihres Internetbrowsers. Und drinnen von hier haben Sie rechts
einen blauen Knopf namens Download. Wenn Sie also auf diesen
Download-Button klicken, wird der
Epic Games Launcher installiert. Jetzt werde ich
die Installation abbrechen , weil
ich sie bereits installiert habe. Und hier ist der
Launcher auf meinem Desktop. Also werde ich
den Epic Games Launcher starten. Jetzt werden Sie aufgefordert, sich
anzumelden, und Sie können sich mit einem kostenlosen Epic
Games-Konto anmelden, wenn Sie keines haben Sie können sich auch mit
allen anderen Optionen anmelden. Aber ich melde mich mit
meinem Epic Games-Konto an, weil
ich bereits eines erstellt habe. Wenn ich hier klicke, schreibe ich meine E-Mail und führe mein Passwort aus. Und sobald Sie sich
beim Epic Games Launcher angemeldet haben, sieht es
so aus. Was
Sie tun möchten, ist, auf diese Registerkarte Unreal Engine zu klicken. Und drinnen hier
möchten Sie auf die Bibliothek klicken. Anstelle der Bibliothek können Sie
alle Epic Game alle
Unreal Engine-Versionen anzeigen . Und Sie können auf
diesen Plus-Button klicken, wenn Sie die
Unreal Engine-Version installieren
möchten. Wenn Sie darauf klicken, können
Sie sehen, wie diese angezeigt wird und
auf die Nummer klicken, können
Sie auswählen, welche Version von Unreal Engine Sie installieren
möchten. Jetzt können Sie sehen, dass ich die
Unreal Engine 55.2 bereits installiert habe. Dies könnte eine andere Zahl
sein wenn Sie dieses Video
ansehen, vielleicht ist es 0.4 oder 5.1, und das spielt keine Rolle. Dieser Kurs wird mit
jeder Version funktionieren , die Sie hier installiert
haben. Stellen Sie also einfach sicher, dass
Sie Unreal Engine
fünf hier unten installieren . Sie können
Ihre vorherigen Projekte sehen. Dies sind also meine vorherigen
Projekte und dies wird leer
sein, wenn Sie die Engine noch nicht
benutzt haben. Sobald Sie
Unreal Engine fünf installiert haben , machen
wir weiter.
3. Ein neues Projekt erstellen: Lasst uns weitermachen und
Unreal Engine Five starten. Sobald Sie die Engine
gestartet haben, erscheint
dieses Fenster. Hier. Du kannst
deine letzten Projekte eröffnen, aber im Moment erstellen wir ein ganz neues Projekt
und ein ganz neues Spiel. also hier
auf den Tab Spiele klicken, können
Sie auch ein unerbittliches sehen, Sie können Dinge
wie Film und Video,
Automobil, Design,
Architektur und so weiter machen . So sehr cool. Aber im Moment interessieren
wir uns für Spiele. Wenn Sie also hier und
rechts klicken,
sehen Sie verschiedene Vorlagen
, mit denen Sie beginnen können. So können Sie beispielsweise mit einer
Ego-Vorlage
beginnen. Wenn Sie einen
Ego-Shooter erstellen, können
Sie mit einer Vorlage für
Dritte,
einer Fahrzeugvorlage usw. beginnen . Aber Sie können sehen,
dass es keinen für
Picks-Slot oder ein 2D-Spiel gibt.
Und das ist okay. all diesen Vorlagen können
Sie sie tatsächlich
selbst erstellen, können
Sie sie tatsächlich
selbst erstellen wenn
Sie wissen, was Sie tun. Dies ist also nicht sehr
schwer zu erstellen. Und was ich normalerweise für meine
Projekte, für meine Kurse mache, beginne
ich normalerweise mit
einem leeren Projekt weil ich dir
alles von Grund auf neu beibringen möchte. Und sobald Sie
alles von Grund auf neu gelernt
haben, können Sie all
diese Vorlagen selbst erstellen. Lassen Sie uns also
ein leeres Projekt erstellen. Und für die Codierung wählen
wir Blueprint aus. Die Zielplattform ist Desktop, die Qualitätsvoreinstellung ist maximal. Und für diese Daten stimmen Sie zu, wenn dies für
Sie angekreuzt ist Nur für Tickets, also haben wir hier nichts. Wir wollen nur ein leeres, leeres Projekt und wählen nun
einen Namen für das Projekt aus. Und dafür erstellen wir
eine kleine Version
einer Ahorngeschichte. Nennen wir es also
Maple Story wie diese. Und Sie können natürlich auswählen,
wo Sie es speichern möchten. Aber ich speichere es einfach
am Standardspeicherort. Also mach weiter und klicke auf Erstellen. Sobald das Projekt gestartet ist, sieht es
so aus und es heißt: Möchten Sie dieses Projekt
aktualisieren? Ich
klicke einfach auf Update. Und für die Plugins klicke
ich einfach auf „Verwerfen“. Und das ist wahrscheinlich
nicht für den Einsatz geöffnet. Ich verstecke es schnell. Ihr Motor
sieht wahrscheinlich so aus. Und jetzt, da wir unser erstes Projekt
erstellt haben, gehen
wir zur
nächsten Lektion über.
4. Unreal Engine 5 Übersicht: Bevor wir mit der Erstellung
unseres 2D-Projekts beginnen, wir uns einen kurzen
Überblick über diese Engine. Das Wichtigste hier in der Mitte ist das Darstellungsfenster. Und innerhalb des Ansichtsfensters können
Sie Ihr
Spiel visuell ansehen. Denken Sie daran, dies ist eine 3D-Engine, also befinden wir uns in einer 3D-Welt. Dies ist die Standard-Start-Map innerhalb von Unreal Engine fünf. Und hier innerhalb des
View-Ports können Sie herumnavigieren. Halten Sie also die
rechte Maustaste gedrückt, halten Sie
also die
rechte Maustaste gedrückt und klicken Sie
auf der Tastatur auf W, um Sie voranzubringen. die rechte
Maustaste gedrückt halten und auf S klicken, werden Sie rückwärts
bewegt. Sie auf D klicken, gelangen Sie nach rechts und wenn Sie auf A klicken,
werden Sie nach links verschoben. Denken Sie also daran,
die rechte Maustaste gedrückt zu halten und Sie können sehen, Sie können sich umsehen, Sie können sich bewegen mit W. D ist ein, und das
benutze ich die ganze Zeit. So navigiere ich innerhalb des Motors
herum. Sie können aber auch
die rechte Maustaste gedrückt halten
und die
linke Maustaste gedrückt halten. also beide Tasten gedrückt halten,
können
Sie sehen , dass Sie sich auch
so bewegen können. Wenn Sie nur die
linke Maustaste gedrückt halten, können
Sie so vorwärts und
rückwärts gehen. die
rechte Maustaste gedrückt halten und auf der Tastatur auf E
klicken, auf der Tastatur auf E
klicken, bewegen
wir Sie nach oben und halten
die rechte Maustaste gedrückt und klicken, bis ich
Sie auf Ihrer Tastatur nach unten bewege. Und als letztes kannst
du
mit dem Mausrad ein- und auszoomen. Wenn Sie das an Ihrer Maus haben, können
Sie ein- und auszoomen. Und wieder ist die
grundlegendste Steuerung, die ich verwende, die rechte
Maustaste gedrückt zu halten und auf W,
D, S und A zu klicken . So finde ich es also, der einfachste Weg zu
navigieren, aber Sie sind herzlich willkommen um deinen eigenen Stil zu
finden. Das ist okay. Als nächstes haben wir ein paar Schaltflächen hier
oben im Ansichtsfenster. also auf den
ersten
hier klicken , können Sie beispielsweise die Frames pro Sekunde
anzeigen
und Sie können sehen,
wie viele Frames pro Sekunde Ihr Spiel gerade läuft
. Also genug darüber jetzt, Lasst uns das FPS entfernen. Es gibt auch etwas, das als Spielansicht
bezeichnet wird. Und die Spielansicht erhöht alle Icons
im Spiel. Wenn Sie also hier auf dieses klicken, können
Sie sehen, dass das
Symbol verschwunden ist. Die Verknüpfung ist ein G auf der
Tastatur, also klicken Sie auf G. Sie können
alle diese Symbole anzeigen und ausblenden. Und das ist ziemlich cool
, wenn du dein Spiel tatsächlich
ohne Icons visualisieren willst . Du kannst dir vorstellen, wenn du
ein großes Spiel
hast, kannst du viele Icons
in deinem Level haben. Wenn Sie also auf G klicken, können Sie
Ihr Spiel ohne
all diese Icons sehen . Sie können auch hier unten
in den immersiven Modus wechseln, die Verknüpfung ist wenn 11, und dies maximiert
das Ansichtsfenster. Klicken Sie also auf G, um die Icons
auszublenden. Wenn Sie auf „11“ klicken, wird das Ansichtsfenster minimiert
oder maximiert. Und Sie können das Spiel hier im
Vollbildmodus ohne Symbole
sehen Vollbildmodus ohne Symbole und Sie können sehen, wie es
aussieht. Also klicke ich erneut auf F7
und klicke
erneut auf G, um die Icons anzuzeigen. Als nächstes befinden wir uns im
perspektivischen Modus, aber es gibt auch etwas, das
als orthographische Ansichten bezeichnet wird. So können wir das
Spiel von links sehen. So
sieht es also von links aus. Wenn Sie verkleinern,
sieht es so von
oben aus und so weiter. Gehen wir zurück in den
perspektivischen Modus. Ich möchte
dir nur zeigen, dass das existiert. Gehen wir also zurück in
den perspektivischen Modus. Sie haben die
Anzeigemodi gerade hier wir sehen
es im Dalit-Modus an. Mit der Beleuchtung können
wir es also auch
ohne Beleuchtung beobachten. Wenn Sie also auf unlit klicken, sieht das
Spiel aus. Ohne Beleuchtung können
Sie sie im
Drahtgittermodus verwenden. Sie können in den
Lead-Modus zurückkehren und so weiter. Als nächstes, sehr wichtig,
haben wir verschiedene Tools, die
wir ständig verwenden. Das erste ist
das Auswahlwerkzeug. Und bevor ich das mache, wollte
ich tatsächlich
etwas in meinem Level hervorbringen . Also lasst uns fortfahren
und auf diese
Schaltfläche „ Zu Projekt hinzufügen“ klicken. Klicken Sie auf hier gehen Shapes. Und ich möchte nur einen einfachen Würfel
hinzufügen. Wenn Sie also auf diesen
Würfel klicken, wird
er Ihrem Ansichtsfenster
hier in der Ebene hinzugefügt . Auswahlwerkzeug ist nur ein Werkzeug
, mit dem Sie Elemente auswählen können. So selbsterklärend. Wenn Sie auf das Verschieben-Werkzeug klicken, können
Sie Elemente verschieben. Klicken Sie also hier auf dieses
Feld oder auf diesen Cube, und Sie können hier einen
Drehpunkt sehen. Und Sie können aus
der verschiedenen Größe ziehen und
Sie können es bewegen. Oder wir können darauf klicken,
diesen weißen Kreis in
der Mitte und Sie können ihn auf einmal in alle
Richtungen
verschieben. Wenn Sie
es jedoch in eine Richtung verschieben möchten, können
Sie diese Pfeile ziehen. Als Nächstes haben Sie das Drehwerkzeug. Und wieder können Sie dieses Feld
drehen, indem Sie
diese Winkel hier ziehen. Und dann haben Sie das
Maßstabswerkzeug, mit dem wir die Box in
verschiedenen Winkeln
skalieren können . Und wenn Sie
es wieder einheitlich skalieren möchten, können
Sie hier
in der Mitte klicken. Und Sie können es
auf alle Seiten gleichzeitig skalieren. Jetzt ist es sehr,
sehr wichtig, sich an die
Verknüpfungen für diese Tools zu erinnern. Wenn Sie also auf der Tastatur
auf q klicken, wählen
wir das Auswahlwerkzeug aus. auf w klicken,
wählen Sie das Verschieben-Werkzeug aus, klicken Sie auf der Tastatur auf E, wir wählen das
Werkzeug Drehen aus und klicken auf R, um das Skalierungswerkzeug auszuwählen. Und du kannst sehen, dass es
dadurch viel schneller wird. Anstatt
hier hochzuklicken und es zu verschieben, klicken Sie erneut hierher und
drehen Sie es und so weiter. Das dauert ewig. also auf w klicken, können
wir es beispielsweise wie ein
E verschieben. Wir können es drehen. auf unsere klicken möchten
Sie es vielleicht vergrößern, klicken Sie auf W, um es erneut
über den Boden zu bewegen. Und Sie können sehen, dass die Arbeit
viel schneller ist, sodass Sie nicht ständig hier
hochklicken müssen. Denken Sie jedoch daran, dass Sie die Verknüpfungen Q,
W, E und R verwenden
können W, E und R Wenn Sie
also ein vollständiges Dokument
aller dieser Verknüpfungen wünschen, können
Sie sie auf meiner Website finden. Als nächstes haben wir die Fangwerkzeuge. Dieser ist also das
Move Snapping. Sie können also sehen, wenn
ich auf w für
mein Verschiebewerkzeug klicke und meine Box bewege, können
Sie sehen, dass es
sich nicht reibungslos bewegt, es fängt an etwas ein. Und das ist das
Fangwerkzeug, wenn Sie es deaktivieren. Wenn Sie also hier klicken, können
Sie sehen, dass ich es reibungslos
verschieben kann. Wenn ich es wieder aktiviere, schnappe
ich jetzt. Sie können dieses
Fangen auch erhöhen, indem Sie auf diese Zahl klicken und dann die Zahl
erhöhen. Jetzt können Sie sehen, dass es viel mehr
schnappt. Und dies ist sehr nützlich
, wenn Sie Gegenstände wie
nebeneinander an einem bestimmten Ort platzieren möchten . Eine weitere Verknüpfung
ist also, dass Sie
Alt auf Ihrer Tastatur halten und
klicken und ziehen können. Und dies wird im Grunde genommen das Element einfach so
kopieren . Und vielleicht möchten Sie
Gegenstände wie diese platzieren ,
wie Alt halten, sie so
ziehen und platzieren. Das ist sehr cool, wo
man das Schnappen hier benutzen kann. Aber wenn Sie
etwas reibungslos verschieben möchten, können
Sie es einfach deaktivieren. Und vielleicht möchten Sie
es
gezielt so platzieren oder was auch immer
Sie hier tun. Als nächstes haben wir das
Rotationsschnappen. Klicken Sie also noch einmal auf E. Sie können sehen, dass es sich
alle zehn Grad dreht. Sie können es deaktivieren und jetzt können wir
es reibungslos drehen. Schon wieder. Sie können
die Fangmengen auch
beispielsweise alle 30 Grad erhöhen . Jetzt schnappt es alle 30 Grad. Jetzt können Sie sie
wieder auf den Normalwert setzen, zum Beispiel zehn hier, und das war erst hier. Und das Gleiche gilt für
die Skalierung. Sie können auch das Einrasten
für die Skalierung machen. Das Letzte, was wir haben,
ist die Kamerastrehzahl. Sie können also sehen, wenn ich
meine Kamera im Ansichtsfenster bewege, sagen
wir, Sie haben diese
große offene Welt und es wird ewig
dauern, bis ich den
ganzen Weg dorthin bewege. So können Sie die Kamerageschwindigkeiten
erhöhen. So
können Sie es zum Beispiel auf acht setzen. Kann jetzt sehen, dass ich mich in meiner Welt
viel schneller bewegen kann. Und das ist sehr nützlich, wenn
Sie eine große Welt haben. Aber ich bezweifle, dass
wir so viel für
unser 2D-Spiel verwenden werden , weil wir nicht wirklich eine so
große Welt haben. Aber in einem 2D-Spiel möchten Sie sich
vielleicht
auf etwas sehr Kleines konzentrieren. Und hier ist es sehr
nützlich,
die Kamerageschwindigkeit auf
etwas sehr Langsames zu reduzieren . Denn vielleicht schaut
man sich
manchmal in 2D-Spielen sehr kleine Details an. Und das ist gut, um
es auf sehr langsam zu setzen, damit es sich tatsächlich in die
Nähe von Gegenständen bewegen
kann. Okay, genug über das Ansichtsfenster. Dies war das
Wichtigste innerhalb des Motors. Hier
kannst du das Spiel sehen. Als nächstes haben wir das Detailbedienfeld, und hier können Sie verschiedene
Details zu Elementen
anzeigen , die Sie im Ansichtsfenster
ausgewählt haben. Sie können also sehen, wenn ich hier unten
den Boden auswähle, erhalte
ich verschiedene Details. Wenn ich diesen Würfel auswähle. Auch hier verschiedene Details. Details wie Standort, wo befindet sich dieser Würfel
in meiner Welt? Was ist die Rotation
dieses Würfels? Wie hoch ist die Waage? Und denken Sie daran, dass wir diese Würfel
skaliert haben. Ich werde
meine Kamerastempote nur noch ein
bisschen erhöhen . Also dieser Würfel hier,
denken Sie daran, dass wir
ihn auf und ab skaliert haben. Und wenn Sie es zurücksetzen möchten, können
Sie einfach hier zur Skala
im Detailbedienfeld kommen . Und du kannst einfach so
111 schreiben. Und jetzt sind wir wieder bei dem
, was dieser Würfel war. Es lag also im Maßstab von 111. Wenn Sie sich gedreht haben,
können Sie sehen, dass wir
den Würfel um zehn Grad
und die Z-Achse gedreht haben. Und du kannst sehen, was x ist, indem du
die Maus darüber hältst. Die rote ist also die X-Achse
und das Grün ist die Y-Achse und das Z ist die blaue. Der blaue hier oben ist das Z, das X ist dieser rote Pfeil, und der grüne
hier ist die Y-Achse. Auch hier können Sie die
Rotation zurücksetzen, indem Sie 000 schreiben, und jetzt haben wir
ihre Rotation zurückgesetzt. Und wenn Sie den
Cube an einer bestimmten Stelle platzieren möchten, können
Sie den Standort hier bearbeiten. Sie können die
Standortbearbeitungen sehen, wenn Sie diesen Cube im Ansichtsfenster so
verschieben, schauen Sie sich
einfach an,
dass es jetzt der Y-Wert ist. Aber wenn Sie es
gezielt auf 1 Tausend platzieren möchten, können
Sie auch nur
tausend so. Und Sie können sehen, dass
der Würfel speziell
auf 1 Tausend
platziert wurde . Es ist also sehr nützlich, das
Detailbedienfeld hier zu verwenden. Wenn Sie bestimmte Nummern haben, in
denen sich die Artikel befinden sollen. Und wenn Sie nach
unten scrollen, können Sie all
diese verschiedenen Details sehen diese verschiedenen Details , die Sie
zu diesem ausgewählten Element anzeigen und bearbeiten können . Sie sich also vorerst keine Sorgen um all
diese Details. Wir werden später
im Projekt mit
all dem arbeiten . Hier oben im World Outliner kannst
du sehen, was du
gerade in deinem Level hast. Wenn Sie also
zum Beispiel auf diesen Würfel
klicken, können Sie sehen, dass er ihn auch innerhalb
des Outliners
auswählt. Wenn Sie diesen Würfel hier
bei ausgewählt auswählen, automatisch innerhalb
des Outliners. Sie können die Elemente auch auswählen,
indem Sie hier
im Outliner klicken. Und ich benutze das hauptsächlich
, wenn ich einen bestimmten Artikel
finden möchte und
auf diesen Artikel klicke. Zum Beispiel ist das
Richtungslicht das Sonnenlicht. Und wenn ich darauf klicke, sehe
ich, dass es hier
unten mit all
den anderen Icons ist. Also sehr, sehr einfach. Der World Outliner zeigt alle Elemente an, die Sie derzeit in
Ihrem Level haben. Wenn ich auf diesen Würfel
klicke und auf meiner Tastatur auf Löschen klicke, klicke
ich auch auf diesen Würfel und klicke
auf meiner Tastatur auf Löschen. Sie können sehen, dass sie
aus dem World Outliner verschwinden weil Sie sie nicht
mehr in der Welt haben. Hier oben haben wir die Symbolleiste
mit den grundlegenden Schaltflächen. Wenn Sie also auf die Datei klicken, können
Sie eine neue Ebene erstellen. Sie können
das Projekt auch speichern und ein neues Projekt
erstellen. Innerhalb der Bearbeitung haben
Sie die Editor-Einstellungen. Und innerhalb der Einstellungen der
Registerkarte Bearbeiten
können Sie Einstellungen für
Ihren Editor bearbeiten. Wenn
ich zum Beispiel dieses Feld auswähle, sehen
Sie, dass die
Auswahllinie orange ist. Ich kann im Grunde hier
drauf klicken,
diese orange Farbe hier drüben. Ich kann darauf klicken und ich kann die Farbe
tatsächlich ändern. Und Sie können sehen, dass ich
die Auswahlfarbe
in meinem Ansichtsfenster ändern kann . Jetzt musste ich noch nie etwas bearbeiten, also werde
ich es tatsächlich wieder schließen,
aber es ist schön zu
wissen, dass Sie diese Option innerhalb
der Projekteinstellungen haben . Sie können Einstellungen
innerhalb dieses Projekts bearbeiten. So können Sie beispielsweise
das Startsymbol
für dieses Projekt bearbeiten . Sie können einen Firmennamen schreiben, Sie können eine
Support-Kontakt-E-Mail schreiben. Wenn Sie das Spiel beispielsweise auf Steam
veröffentlichen, wissen die
Leute, an wen sie
sich wenden müssen, wenn sie Fehler im Spiel
haben oder ob sie Sie tatsächlich kontaktieren
möchten. Sie können auch einen Film hinzufügen. Also, weißt du, wenn
du ein Spiel öffnest, hast du diesen
Startfilm, vielleicht fünf Sekunden. Sie können also tatsächlich
einen hier hinzufügen. Also viele Dinge, die Sie hier speziell für dieses
Projekt
bearbeiten können . Die Editor-Einstellungen
sind also Einstellungen für Ihren Editor und die Projekteinstellungen sind Einstellungen speziell
für dieses Projekt, die Maple Story-Projekte, die
wir gerade erstellen. Und dann haben wir Plugins und damit wollen
wir jetzt arbeiten. Also mach dir darüber keine Sorgen. Als nächstes innerhalb des Fensters können
Sie mehrere Fenster öffnen. Dies ist sehr nützlich, wenn Sie mehrere Monitore
haben. Zum Beispiel können wir zum
Viewport wechseln und
auf Port zwei anzeigen klicken. Und dies öffnet hier ein
zweites Ansichtsfenster. Und ich kann hier dieses
Ansichtsfenster sehen, das ist sehr nützlich. Ich kann mein Spiel im
Vollbildmodus ansehen und kann es in meinen anderen Monitor legen . Und jetzt kann ich mir
dieses Spiel hier ansehen. Und auf meinem zweiten Monitor habe ich dieses Ansichtsfenster, das ich ständig geöffnet
habe. Mach dir darüber keine Sorgen. Wir werden das erst
später im Projekt anfassen. Und am Ende
der Hilfe können
Sie sich die Dokumentation
für Unreal Engine fünf ansehen. Ich denke, es fehlt
gerade ein bisschen und schwer zu verstehen, aber du kannst einen
Blick darauf werfen, wenn du willst. Hier unten in der Symbolleiste haben
Sie verschiedene Tools
, zwischen denen Sie wechseln können. Zum Beispiel können Sie Landschaften
schaffen, Laub
wie Gras und
Bäume und so weiter erstellen . Aber wir möchten keines dieser Tools wirklich
anfassen, denn denken Sie daran, dass
wir
ein 2D-Spiel und kein 3D-Spiel erstellen . Behalten wir diese
Tools vorerst bei. Für diesen Button können Sie verschiedene Artikel
hinzufügen. Wir haben die Kugel oder den Würfel hinzugefügt, eigentlich den Würfel
darin. Sie können aber auch andere
Gegenstände wie Beleuchtung hinzufügen. Und du kannst Kinematik hinzufügen. So können Sie Kameras
Volumen und visuelle Effekte hinzufügen. Und wir werden hier ein paar
Dinge hinzufügen. Aber denken Sie noch einmal daran, dass wir
2D-Spiele erstellen, also werden wir nicht
all diese Beleuchtung verwenden. Aber ich würde das Coole
sagen,
ein 2D-Spiel innerhalb einer 3D-Engine zu erstellen . Sie können sich vorstellen, dass Sie
ein 2D-Spiel mit
3D-Lichteffekten erstellen können . Es gibt einige coole Dinge
, die Sie in
einer 3D-Engine tun können , wenn Sie 2D-Spiele
erstellen. Hier drüben sind die Blaupausen. Dies ist die Codierung und wir
werden später damit arbeiten. Also mach dir darüber keine Sorgen. Und hier drüben kannst du auf
den Play-Button klicken , um das Spiel zu spielen. Und im Moment haben wir nicht
wirklich viel los. Es gibt also nicht viel zu sehen. Wenn Sie auf Escape klicken, wird der Spielmodus
beendet. Und als letztes,
was ich Ihnen zeigen möchte,
ist der Inhaltsbrowser. Und hier werden alle Dateien sein
, die wir
importieren werden. Wenn Sie also
hier nach links gehen, haben
Sie etwas, das als
Inhaltszeichnung bezeichnet wird, indem Sie auf diese Schaltfläche klicken, wird
dieses Fenster
innerhalb dieser Inhaltszeichnung angezeigt. Alle Artikel, die wir
importieren, werden hier drin sein. Also alle
Charaktere, die wir haben, die gesamte Musik, alle visuellen Effekte, alle Dateien werden hier
unten im
Inhaltsbrowser sein. Und jetzt können Sie
sehen, dass Sie hier
unten klicken müssen, um dies zu öffnen. Und ich denke für mich ist es ein
bisschen nervig, denn wenn ich auf etwas im
Ansichtsfenster
klicke, wird dies verschwinden. Manche Leute denken, dass das cool ist, und das
hängt alles vom Stil ab. Aber ich denke für mich ist es
ein bisschen nervig, dass es ständig
verschwindet, wenn ich hier drüben auf etwas klicke. Und auch für den Kurs denke
ich, dass es großartig sein wird, dies ständig zu
haben. Also klicke ich
auf ausgegrabenes Layout. So war es auch
in Unreal Engine vier. Und das wird die ganze Zeit
wach bleiben obwohl ich hier drüben
auf die Dinge klicke. Und ich bevorzuge es, das
ständig zu haben, damit ich
meine Dateien
im Inhaltsbrowser sehen kann . Sie können auf diese Schaltfläche „Hinzufügen“ klicken
und
verschiedene Dinge hinzufügen. Zum Beispiel können wir eine Blueprint-Klasse
hinzufügen, und dies ist die
Programmierung, die wir später durchführen
werden. Sie können auch Dinge
über die Animation,
Dinge über Blueprints,
Laubeffekte und
Benutzeroberflächen für die Benutzeroberfläche hinzufügen Dinge über Blueprints,
Laubeffekte . Und das mag
überwältigend aussehen, weil Sie so viele Dinge haben,
die Sie hinzufügen können, aber Sie werden nur verwenden, ich würde etwa fünfundzwanzig
Prozent von all dem sagen. Sie sich also keine Sorgen um
all diese Knöpfe. Du wirst nicht alles benutzen. Und ich würde sagen, dass
Sie einfach
anfangen sollten , die
Grundlagen zu lernen und einfach von dort aus
weitermachen und es sich
hier und das Papier 2D
leichter machen, damit wir arbeiten
werden. Das ist also die Pixelkunst, das 2D-Spiel, mit dem wir arbeiten
werden. Sie können auch Elemente im Inhaltsbrowser hinzufügen , indem
Sie hier mit
der rechten Maustaste klicken. Sie können also sehen, dass Sie dasselbe
sehen können. Normalerweise klicke ich nie
auf diesen Button. Ich klicke einfach mit der rechten Maustaste
hier rechts. Sie können auch
verschiedene Ordner hinzufügen indem Sie hier mit der rechten Maustaste klicken. Und oben können Sie auf
Neuer Ordner klicken und neue Ordner erstellen. Und ich werde diesen nur löschen
, indem ich vorerst auf
meiner Tastatur auf Löschen klicke. Und wenn Sie möchten, können
Sie fortfahren und auf diesen gelöschten Cube klicken und diesen ebenfalls
löschen. Jetzt kennen wir die Grundlagen
dieser Engine und
wie sie aufgebaut ist. Es ist also viel einfacher für uns
, mit unserem Projekt zu arbeiten.
5. Eine neue Stufe erstellen: Um eine neue Ebene zu erstellen, erstellen
wir zuerst einen Ordner. Hier drüben im Inhaltsordner. Klicken wir mit der rechten Maustaste und
klicken Sie auf Neuer Ordner. Und nennen wir es einfach Maps. Anstelle dieses Maps-Ordners
hier rechts können
Sie mit der rechten Maustaste klicken
und dann auf Level
klicken.
Nennen wir das jetzt. Ich möchte allen meinen
Dateien geben, mit denen ich ein Präfix erstelle. Also nenne ich
es zunächst einfach Map. Und das macht es einfacher, wenn
Sie viele Dateien haben, können
Sie tatsächlich viel
einfacher nach ihnen
suchen , indem Sie das Präfix schreiben. Nennen Sie es also Map und nennen
wir es einfach main. Ich nenne es einfach die Hauptkarte. Ich weiß nicht, welchen Namen ich ihm jetzt geben
möchte, also nennen wir es einfach Main Map. Und hier oben kannst du übrigens alles
sparen, also speichere alles. Und wenn Sie
innerhalb dieser Ebene Änderungen vorgenommen haben, bevor wir Cubes bearbeiten Wenn ich
also einen gelöschten Kubaner hinzufüge
und Sie versuchen zu speichern, Sie aufgefordert,
diese Karte hier zu speichern , weil
Sie Änderungen vorgenommen haben. Und eigentlich
möchten wir diese Map nicht wirklich speichern , da wir diese Standardkarten nicht verwenden werden
. Ich doppelklicke auf
meine neue Map, die ich erstellt habe. Es wird mich bitten, dieses Level hier zu
speichern. Ich klicke
auf „Nicht speichern“. Jetzt bin ich in meinem
neuen Level und du kannst hier in meinem Outliner World,
Outliner
sehen , nichts
wirklich haben weil du gerade nichts in diesem Level hast. Bevor wir dieses Video beenden, legen
wir diese Ebene
als unsere Standardkarte fest. Also werde ich bearbeiten und
innerhalb der Projekteinstellungen kannst
du auf Karten und Modi klicken. Und hier sehen Sie, dass der
Editor Start-Map
derzeit die standardmäßige
offene Weltkarte ist . Klicken Sie hier an und ändern Sie es in unsere Karte, die wir erstellt haben, sowohl die Start-Map als
auch die Standardspielkarte. Einfach so. Wenn Sie
es jetzt schließen,
klicken wir einfach auf Datei und speichern Sie alles. Wenn Sie nun die
Engine schließen und erneut öffnen, wird er standardmäßig auf dieser Ebene
geöffnet.
6. Importieren der Environment: Importieren wir nun die
Umweltanlagen , die wir
in den zukünftigen Lektionen verwenden werden. Hier drüben klicke ich
erneut mit der rechten Maustaste in den Inhaltsordner
und erstelle einen neuen Ordner. Und nennen wir das eine Vermögenswerte. Anstelle dieses Assets-Ordners ich mit der rechten Maustaste
und erstelle einen neuen Ordner. Und nennen wir das eine
Umgebungen in Draht-Resten. Okay, es ist also sehr gut, innerhalb
Ihres Projekts organisiert zu
bleiben , denn sobald
das Projekt groß wird, wird
es schmerzhaft
sein herumzulaufen Wenn
Sie nicht wissen, wo die Dateien darin befinden von diesem Umgebungsordner klicke
ich darauf. Wir möchten unsere Dateien importieren. Ich habe dir diese
Kursunterlagen gegeben. also innerhalb der
Kursmaterialien Wenn Sie also innerhalb der
Kursmaterialien in
den Ordner Environment gehen können, habe ich
Ihnen einige der Dateien zur Verfügung gestellt. Möglicherweise gibt es weitere Dateien
, die Sie hier sehen. Ich lege diese Dateien einfach in diesen Ordner, während ich gehe. Was ich möchte, dass du nur diese
importierst, die Drachenstraße und die „Sea Dragon
Road“, BG für den Hintergrund. Diese beiden hier können
Sie einfach klicken und ziehen und im Ordner Environment
platzieren. Denken Sie daran, wenn Ihre Dateien
immer noch in einem seltenen oder ZIP-Format vorliegen, können
Sie nicht direkt aus
einem Zip-Ordner hier ziehen ,
Sie müssen diese
Dateien möglicherweise auf Ihren Desktop extrahieren oder an welchem Ort
Sie möchten. Und dann können Sie sie einfach, genau
wie ein normaler Ordner hier, in das Projekt
ziehen. Okay? Wenn Sie hier
im Projekt sind , können
Sie sehen, dass wir
unsere beiden Texturen haben und
wenn Sie darauf klicken, ich zum Beispiel auf diesen PGY1 und Dopants
auf meinem zweiten Monitor. Dies ist diejenige, die
wir verwenden werden. Jetzt könnte das haben, du kannst sehen, wenn ich
hineinzoome, es ist verschwommen. Es ist nicht wirklich viel Auswahl. Und wie Sie wissen,
ist Pixelkunst nicht so verschwommen. Es sind sehr klare
Pixel, die wir wollen. Und das
erreichen wir gerade,
denn Sie befinden sich wieder in einer 3D-Engine und
die 3D-Engine bläst sie aus, um alles gut aussehen zu
lassen. Aber im Falle eines 2D-Spiels wollen
wir nicht wirklich, dass
es verschwimmt. Das ist sehr einfach. Klicken Sie einfach auf beide. Klicken Sie also auf diese Taste,
halten Sie Control gedrückt, klicken Sie auf die zweite, ich kann mit der rechten Maustaste klicken, zu
Sprite-Aktionen gehen und
Papier auf die Einstellungen anwenden sagen. Und das wird diesen Unschärfe-Effekt im Grunde
entfernen. Wenn ich also wieder
hierher gehe und hereinzoome, kannst
du sehen, dass der
Unschärfe-Effekt jetzt verschwunden ist und du kannst
jedes einzelne Pixel sehen. Und jetzt klicken wir
auf Datei und Alles speichern, und das war's für dieses Video. Daher ist es sehr wichtig,
aus diesem Video zu nehmen, wenn Sie Pixel-Art-Dateien
importieren, denken Sie
daran, mit der rechten Maustaste zu klicken, zu Sprite-Aktionen zu
wechseln und Pepper 2D-Einstellungen
anzuwenden, um den Unschärfe-Effekt zu entfernen,
den die Engine standardmäßig anzeigt.
7. Ein Tile erstellen: Jetzt, da wir
unsere Assets bereit haben, sind
wir bereit, einen Kachelsatz zu
erstellen. Und im nächsten
Video werden wir etwas erstellen
, das als Kachelmap
bezeichnet wird. Der Unterschied
zwischen einem Handtuchset und
einer Kachelkarte besteht also darin, dass Tell
gesagt hat, dass Sie es sich vorstellen können. Wenn Sie
das Handtuchset malen, sind Ihre Farben und die
Kachelkarte ist Ihre Leinwand. Also müssen wir Sets mitteilen
, um eine Kachelzuordnung zu erstellen. Lassen Sie uns die Handtuchsets erstellen, die Farben, mit denen Sie
tatsächlich
malen möchten , auf der Kachelkarte
, die wir später erstellen. Also klicken wir mit der rechten Maustaste auf
diesen ersten hier. Diese sind die Kacheln. Klicken wir mit der rechten Maustaste darauf. Gehen wir zur Sprite Action und klicken wir auf Handtuchset
erstellen. Ich benenne es um. Normalerweise lösche ich diesen
Kachelsatz und das Ende hier. Und ich nenne es einfach
ts oder Handtuchset. Und lasst uns das Gleiche
hier mit dem Hintergrund machen. Gehe zu Sprite-Aktionen und
wende einen anderen Ort an. Sehr tolle Toolsets. Und nochmal, benennen wir diese beiden Stufen
von Anfang an um. Jetzt müssen wir also Sets erzählen. Lass uns den ersten
hier gehen, unsere Kacheln. Jetzt können wir sehen, dass dies
die Fliesen sind und wir können hier nicht viel
machen,
anstatt ein Handtuchset. Denken Sie daran, dass der Kachelsatz wir nur erstellt haben,
damit wir diese Kacheln tatsächlich
verwenden können , um auf unserer Kachelkarte zu
malen. Und jetzt können Sie auf
diese verschiedenen
Fliesen klicken und Sie können die Handtücher
tatsächlich sehen
, wenn Sie darauf klicken. Sie werden
hier rechts angezeigt, damit Sie das Handtuch sehen
können und wie es
aussieht. Aber die Größe stimmt nicht. Sie können hier die
Kachelgröße auf der rechten Seite sehen. Sie müssen das
auf 30 Pixel mal 30 Pixel einstellen da ich
weiß, dass es 30 Pixel sind. Ich komponiere sie
in Photoshop, also stelle ich sie
hier in einer Textur zusammen. Ich weiß also, dass die
Gesamtgröße 30 Pixel beträgt. Pixel. Wenn Sie Dinge
aus dem Internet herunterladen, geben
sie normalerweise an,
wie groß sie sind. Hier hast du sie also eingestellt. Also 30 mal 30. Jetzt ist das richtig und wenn
Sie auf die Kacheln klicken, können
Sie sehen,
wie sie aussehen. Und das werden wir später verwenden
, um auf unserer Kachelkarte zu malen. Schließen wir das ab
und gehen wir zu dem Titel, der
für den Hintergrund festgelegt wurde. Die Kachelgröße beträgt ebenfalls 30 mal 30, also müssen wir
dies auf 30 mal 30 Pixel ändern. Das war also das Wichtigste. Wir legen unsere Fliesengröße
innerhalb dieses Kachelsets fest. Und jetzt, da wir
diese Kachelsätze haben, lassen Sie mich tatsächlich mit der rechten Maustaste
in diesen Ordner einen neuen namens Texturen
erstellen. Und ich möchte
diese Textur in
meine Texturen legen , weil
wir das nicht mehr wirklich brauchen
werden. Löschen Sie es nicht, da diese tatsächlich
von dieser Textur abgeleitet
sind. Denken Sie daran, dass wir mit der rechten Maustaste geklickt
und ein Handtuch Aber ich habe sie einfach
in Texturen gelegt , weil wir es dann nicht wirklich wieder sehen
müssen. Ebenso mit
diesem Hintergrund
verschieben Sie es in diesen Ordner, und wir müssen nur diese Kachelsätze
sehen. Klicken wir also auf Datei, Alles
speichern und lassen Sie uns fortfahren.
8. Eine Tile erstellen: Wir können jetzt mit der rechten Maustaste
auf unser Toolset klicken. Und wenn Sie mit der rechten Maustaste klicken, können
Sie hier sehen, dass
Sie die Möglichkeit haben eine Kachelzuordnung
zu erstellen. Erstellen wir also eine Kachelzuordnung. Und wieder lösche ich
diese Map hier am
Ende, das sie legt. Und ich nenne es einfach TM für Kachelzuordnung als Präfix. Und Sie können auf
die Kachelkarte doppelklicken , um hier
hineinzukommen. Bevor ich hier
etwas rechts mache,
denken Sie daran, dass Sie
die Schwanzbreite und
-höhe auf 30 mal 30 einstellen müssen. also einfach sicher, dass
das korrekt ist. Und das ist nur, um
es genauso zu setzen wie dieses. Was auch immer Sie
hier im Set festlegen, Sie müssen in der Kachelkarte
dasselbe festlegen wie für
die
Kartenbreite und -höhe, Sie können wählen, wie groß
Ihre Karte sein soll. Wie breit sollte Ihre Karte B sein? Und dafür denke
ich, dass ich
mit 60 und
der Breite und 40 und der Höhe gehen werde. Dies ist also die Karte, in der
wir links arbeiten werden. Sie können die Handtuchsets sehen. Im Moment ist das aktive
Kachelset dieses,
die Drachenstraße, auf der
wir unsere Kacheln haben. Und du kannst
hier irgendwo klicken und etwas auswählen. Und wenn du
es hier links auswählst, hast du es
jetzt hier als Pinsel
in deinen Kachelkarten. Also kann ich hier klicken und
du siehst, wann du es
auf deiner Kachelkarte anklickst . Es gibt keine schnelle
Möglichkeit, es zu löschen. Du musst
es aber eins nach dem anderen löschen. Klicken Sie also auf e, um den Radiergummi
auszuwählen. Und Sie können auch hier oben klicken
die Farbe, das Rasiermesser und die Füllung sagen, indem Sie
auf e klicken, um den Radiergummi auszuwählen. Sie können diese löschen
und auf der Tastatur auf
B klicken , um den Pinsel
auszuwählen. Also B für den Pinsel
und klick auf IE, um diese Pinsel erneut zu löschen. Was auch immer mir hier auf der linken Seite auch
gefallen hat, du kannst es jetzt
hier auf der Kachelkarte malen. Und innerhalb der Kachelkarte besteht
es aus Layern. Wenn Sie also in
Photoshop gearbeitet haben ,
wissen Sie, was das ist. Wenn Sie den Namen
einer Ebene ändern möchten, können
Sie auf der Tastatur
auf F2 klicken. Sie können mit der rechten Maustaste klicken
und den Namen ändern, aber normalerweise klicke ich auf
F2, um Dinge umzubenennen. also auf F2 klicke, kann
ich es zum Beispiel den Basislayer nennen. Ich kann eine neue Ebene erstellen,
indem ich auf diesen Button klicke. Und ich kann dies zum Beispiel in Hintergrunde's
in der Basisebene
umbenennen. Wenn Sie dies ausgewählt haben, malen
wir hier einfach ein paar
zufällige Kacheln. Tun wir so, als wären dies die
Bodenfliesen, die wir haben. Ich kann jetzt in den Hintergrund gehen und sagen wir mal, ich möchte den Hintergrund
malen. Und sagen wir nur zufällig, mein Hintergrund ist das. Ich kann das malen. Sie können sehen, dass es jetzt
im Vordergrund steht, weil
Layer so funktionieren. Der vordere
wird also vorne sein. Wenn Sie also möchten, dass dies
der Hintergrund ist, müssen
Sie es
unter die Basisebene legen. Klicken Sie also auf den Hintergrund. Sie können auf diesen Pfeil klicken. Es heißt „Rückwärts senden“, und es wird es hier
rückwärts legen. Und was auch immer Sie malen, Sie können sehen, dass Sie nicht darüber
malen können weil
dies Ihr Hintergrund
ist. Wenn Sie jetzt auf den
Basis-Layer klicken, malen Sie mehr. Sie können sehen, Sie können
vor Ihrem Hintergrund malen. Denn denken Sie daran, dass dies der Hintergrund
ist und dies sind zwei
separate Ebenen. Wenn Sie also
hier auf der Basisebene auf das Auge klicken, können
Sie sehen, dass dies der Hintergrund
ist. Sie können den
Hintergrund auch ausblenden und so weiter. Also sehr, sehr nützlich. Wir werden diese benutzen,
um unsere Karte zu malen. Und das ist
es im Grunde genommen für die Kachelkarte. Also nichts komplexes.
Wir haben ein paar Kacheln. Wir können unsere Karte hier zeichnen
und sie großartig aussehen lassen. Und wir können diese
Schichten verwenden, um es zu malen. Also der Hintergrund, die Basis, wir haben vielleicht einen
Vordergrund und so weiter. Denken Sie daran, die Breite und Höhe Ihrer Karte nach Ihren Wünschen festzulegen. Ich möchte, dass meiner 60 mal 40 ist, und der Turm
müsste 30 mal 30 sein da diese Kacheln 30 mal 30 Pixel groß
sind, man kann einfach
den Hintergrund löschen. Wenn Sie also hier hochklicken und auf meiner Tastatur auf
Löschen klicken, hat es meine Engine zerquetscht. Lass es mich einfach neu starten. Es passiert manchmal
mit Unreal Engine. Manchmal
zerquetscht es einfach zufällig. Also lass mich zurück zu meinem,
zu meinem Kachelset und du kannst sehen,
dass alles es bereits gelöscht hat. So passiert das manchmal, also Unreal Engine, ich
muss es neu erstellen. Wenn ich also die Kachelkarte erstelle, werde
ich einfach
das Ganze noch einmal erstellen, okay, jetzt bin ich
wieder da, wo ich bin. Ich habe meine Einstellungen
hier festgelegt und wir sind zurück. Lassen Sie uns also zur
nächsten Lektion übergehen und lassen Sie uns die Umgebung
gestalten.
9. Entwerfen der Umgebung: Lassen Sie uns jetzt mit der Gestaltung
unserer Umgebung beginnen. Um loszulegen,
gehen wir zurück zu unserer Kachelkarte. Und
wenn Sie hier kein Handtuchset
ausgewählt haben, wie Sie auf meinem Bildschirm sehen können, können
Sie auf
diesen kleinen Button klicken. Hier wechseln
Sie hier auch zwischen Ihren Hintergrundkacheln und
Ihren normalen Zellen. Fangen wir also vorerst mit diesen
normalen Kacheln an. Wormit ich
anfangen werde, ist diese Ebene vier Buchten zu
nennen. Also klicke ich auf F2 nenne es diese Basisschicht. Hier drin
werden wir malen. Aber bevor ich male,
was ich hier in den Kartenhöhen gerne mache, füge
ich gerne ein bisschen mehr
Kacheln als Pufferkacheln hinzu. Denn wenn unser Charakter es ist, kannst
du dir vorstellen, dass dies
unsere Karte ist und das
sind die Grenzen. Wenn der Charakter hier im Spiel
steht. Und die Kamera ist so und
beobachtet den Charakter. Das Ding hier unter der
Karte wird dunkel sein. Und wir wollen nicht, dass der Spieler diesen unteren Teil hier
ansieht. Ich möchte, dass der Charakter so
steht, die Kamera hier nie
unter diese Linie geht. Ich füge gerne ein bisschen mehr Kacheln als das, was ich hier geschrieben habe, nur um ein paar
Pufferkacheln zu haben, damit die Kamera nie unter den Boden
geht. Also füge ich hier gerne zehn
Kacheln unten und auch zehn Kacheln
oben hinzu. Also die Kamera und
geht hier nie über diese Linie. Was ich also tun kann ist, zehn plus zehn sind
offensichtlich 20 und es sind 60. Etwas sehr Cooles
und Unreal Engine. Sie können tatsächlich
plus 20 schreiben und die Eingabetaste drücken, und es fügt es automatisch hinzu
und es heißt 60. Ich glaube nicht, dass wir hier und hier
einen Puffer brauchen denn was ich
tun werde, ist, dass ich die Kamera
anhalten werde. Wenn der Spieler es so
läuft, halte ich
die Kamera hier an. Es geht also nie
hinter diese Linie, aber wir können es immer
größer machen, wenn Sie möchten. Okay, also lasst uns hier zählen. Wir haben hier zehn Puffer,
zehn Pufferkacheln hinzugefügt . Also 123412345678910. Also hier drüben um 50 Uhr. Wenn wir also
hier ein Handtuch malen, bin ich bei 50. Die Pufferkacheln
gehen also hier hoch und die eigentlichen Kacheln sind
oben genau hier. Was Sie also tun können, ist einfach
diese Kacheln hierher zu nehmen und von links zu
beginnen. Sie können also einfach
mehrere Kacheln auswählen. Sie müssen nicht nacheinander
auswählen. Sie können mehrere Kacheln gleichzeitig
auswählen,
klicken und mit der Maus bewegen und auswählen. Und Sie können
sie hier in
unserer Basisschicht platzieren , die
wir erstellt haben. Jetzt habe ich das platziert, du kannst so weiter platzieren. Aber als Abwechslung klicke ich
auf Control Z, um rückgängig zu machen. Als Abwechslung können
Sie sehen, dass Sie ein paar davon haben. Sie können also nach dem Zufallsprinzip eine
solche auswählen und platzieren. Es kann ein zufälliges wählen,
platzieren, dies gibt
Kacheln ein wenig Abwechslung. Sie können also hier sehen, dass
Sie ein bisschen Variation haben und Sie können feststellen, dass es sich um den gleichen Titel
handelt. Also
wähle ich hier einfach nach dem Zufallsprinzip aus. Es spielt keine Rolle
, welche Sie wählen ,
nur um zufällige
auszuwählen. Wir eliminieren also die sich wiederholenden Muster, die wir manchmal in Pixel-Los
sehen. So sehr gut,
verschiedene Kacheln zu haben , auf die
man sie legen kann. Okay, ich werde diesen Prozess
beschleunigen. Ich mache das hier
den ganzen Weg. Und du
musst es auch den ganzen Weg hier machen. Also mach das einfach weiter. Das dauert
vielleicht fünf Minuten. Okay, jetzt bin ich hier
fertig. Ich mache die letzten Kacheln. Jetzt habe ich
diesen unteren Teil hier fertig. Okay? Wenn Sie also mit diesem Teil
fertig sind, erstellen
Sie schon hier oben
das Gras. Also hier unten wegen des
Grases, das Gleiche. Sie haben eine Variation
, die Sie hinzufügen können. Und Sie können
alle drei auswählen, klicken und auswählen. Und denken Sie auch daran,
diesen oberen Teil auszuwählen , denn
wenn
Sie hier klicken, können Sie sehen, dass Ihnen hier oben das Gras
fehlt wenn Sie
diesen oberen Teil nicht auswählen. Klicken Sie also auf beide und wählen Sie
dies und das darüber aus. Also diese sechs Kacheln. Und dann können Sie
einfach wie zuvor hier
klicken und
eine andere Variante auswählen und daneben klicken. Und mach einfach weiter bis ich eigentlich nicht
will , dass du es hier den
ganzen Weg machst. Ich möchte, dass du
irgendwo hier anhältst, also werde ich nur ein bisschen
vorwärts gehen. Okay. Also werde ich hier anhalten und
gegen 3947 angehalten. Dies sind die
Koordinaten, die Sie nicht genau wie ich machen
müssen, aber wenn Sie möchten, sind dies die Koordinaten, mit denen
ich aufhöre. Sie können Ihr eigenes Design machen. Das ist in Ordnung. Du
musst nicht dasselbe tun. Aber was ich hier machen möchte, wir haben
hier unten ein paar Rampen in der Textur. Und wir möchten diese Kacheln hinzufügen. Ich möchte hier eine Rampe hinzufügen, damit
wir etwas Abwechslung haben können. Also nochmal können Sie hier klicken
und hier so auswählen. Und du kannst
die Rampe hier hinzufügen. Und dann lasst uns mit den Kacheln
fortfahren, diese
auswählen und einfach wie zuvor
fortfahren. Wählen Sie weiterhin eine
Variante wie diese aus. Man sieht, dass es einige Zeit dauert, aber es ist auch, ich denke,
es ist der lustige Teil. Mit
der Map, die Sie erstellen, können Sie kreativ sein. Und du kannst
etwas cooles Aussehen kreieren. Wir fehlen also hier oben
ein paar Kacheln. Jetzt. Lasst uns weitermachen
und genau wie zuvor , füllen wir
einfach
diese leeren Lücken. Okay, also ist dieser Teil erledigt. Nun, was ich tun möchte, da der letzte Teil auf
einer Plattform erscheint. Lassen Sie uns also noch einmal eine Plattform hinzufügen,
wählen wir diesen unteren Teil aus. Wenn Sie also eine davon auswählen, können
Sie sehen, dass Sie auch hier
Variationen haben. also den unteren
Teil auswähle, weiß ich es nicht. Ja, wir müssen hier auch
den unteren Teil auswählen hier auch
den unteren Teil weil Sie sehen können, dass sich darunter
einige kleine Kacheln
befinden. Genau wie
das Gras, in dem wir hier sechs Stücke auswählen, müssen
wir auch hier sechs
Stücke auswählen. Und für die Plattform müssen
wir es nur
sehen, wo der Charakter ist. Und ich glaube so etwas
wie hier oben. Und nochmal, lasst uns
ein paar Variationen auswählen und diese einfach
zusammenfügen. Denken Sie daran, den
ganzen Sex auszuwählen und
nicht nur hier oben, denn sonst fehlen
Ihnen hier unten die
Kacheln. Wählen Sie also hier aus, machen Sie
einige Variationen und überspringen
Sie die Plattform ein wenig voraus. Okay, jetzt, da ich
diese lange Plattform hier oben habe, kannst
du das Gras hinzufügen
und genau wie zuvor, wähle
einfach aus, was
wir hier unten gemacht haben. Wählen Sie eine Variation aus. Und jetzt vermissen wir diese
Kacheln hier rechts. Ich konnte sie nicht wirklich finden. Ich habe es versucht und versucht und
ich konnte sie nicht finden. Aber was wir tun können,
ist einfach einige dieser
Kacheln hinzuzufügen , um
diesen Teil hier zu beenden, da dies wie
Sie sehen können, abgeschnitten ist und es
nicht gut aussieht. Und ich habe
das Schneidteil nicht wirklich. Diese funktionieren damit nicht
wirklich. Also müssen wir unser eigenes machen und
lass uns das einfach benutzen. Was ich
tun werde, können Sie hier sehen, wenn ich das auswähle und darüber hinaus
hinzufüge,
wie hier, können Sie
sehen, dass ich
meine aktuellen Kacheln lösche und das ist
nicht etwas, was wir tun möchten. Denken Sie daran, wir hatten Schichten, mit denen
wir arbeiten konnten. Sie können also eine neue Ebene erstellen. Und nennen wir das eine Marke. Und mit dieser vorderen Ebene können
wir diese
Kacheln jetzt zum Beispiel hier auswählen. Und zum Beispiel
können Sie
auf dieser Seite sehen, dass Sie jetzt klicken und
hinzufügen können, und Sie löschen
die Kacheln, die Sie zuvor gemacht haben, nicht . Und das liegt daran, dass du jetzt auf dieser vorderen Schicht
malst . Du malst nicht mehr auf
dieser Basisschicht. Denken Sie daran,
diese vordere Ebene auszuwählen und hier oben darauf zu malen. Und wähle auch
diese Kacheln hier aus, nur die drei hier unten. Und lass es uns oben hinzufügen. Und du kannst sehen,
dass es irgendwie funktioniert. Es ist besser als nichts. Jetzt lassen wir die Handtücher den Schnitt hier
schließen. Und ich
wähle den nächsten aus, füge ihn darüber hinzu
und wähle den unteren
Teil aus, der zu diesem passt. Ich kann jetzt sehen,
dass wir eine Plattform haben. Es könnte besser sein, wenn wir
die Abschlusstitel hätten ,
aber es ist in Ordnung. Es ist nur zum Üben. Okay, also das nächste, was du hier
hinzufügen kannst , ist der Hintergrund. Und was wir tun können, ist eine weitere Ebene
hinzuzufügen. Und ich nenne
es eigentlich Sky. Ich benutze
diese Ebene nur für den Himmel und setze sie, du
kannst auf diesen Pfeil klicken, daran erinnern und ihn in
den Rücken legen, weil
wir wollen, dass dies ein Hintergrund für diesen Kerl ist. Denken Sie daran, dass wir uns in
den normalen Kacheln befinden. Sie möchten
zum Hintergrund wechseln. Auch hier können Sie auf diese
kleine Schaltfläche klicken und zwischen dem Hintergrund
und den normalen Kacheln
wechseln. Wenn du also in den Hintergrund
gehst, hast du dieses kleine blaue. Das ist eigentlich der Himmel. Klicken Sie also einfach auf diesen, klicken Sie auf G für das Füllwerkzeug oder wählen Sie es hier aus. Denken Sie daran, dass Sie
die Tools hier oben auswählen können. Und dann denk daran, zuerst auf diesen Kerl zu
klicken. Und hier drin können Sie oben auf das Hören
klicken,
sehen, wie Sie die Lücke füllen
und jetzt haben wir den Himmel. Was wir hier hinzufügen können, ist ein bisschen langweilig, also müssen wir einige
Hintergrundelemente hinzufügen. Nun möchten Sie eine neue
Ebene erstellen, denn wenn Sie malen, sollten Sie dieses Gras anheften
und auf B klicken, um
das Pinselwerkzeug auszuwählen, und Sie
hängen es hier an, können Sie sehen, dass und auf B klicken, um
das Pinselwerkzeug auszuwählen , und Sie
hängen es hier an, können Sie sehen der Himmel entfernt wird weil du nicht drauf
malen kannst. Lassen Sie uns also eine neue
Ebene erstellen und lassen Sie mich
sie einfach Hintergrund und
engen Hintergrund nennen . Das sind nur Back-Requisiten. Nennen wir es einfach
Hintergrund und mal sehen, ob wir den Namen
ändern müssen. Also lasst uns versuchen, etwas
zu entwerfen. Also fange ich
mit diesem Gebäude an. Also wähle einfach das
ganze Gebäude
hier aus und platziere
es einfach irgendwo hier. So sieht es also ein bisschen
interessant aus. Okay, jetzt haben wir diesen
und du kannst hier sogar einen Lichtmast
hinzufügen. Es geht also nur darum, kreativ zu
sein und
versucht zu tun, was immer Sie wollen. Du musst mir nicht wirklich hierher folgen. Ich versuche nur Dinge zu
erschaffen, während ich gehe, und ich werde
ein bisschen voraus gehen. Genau wie zuvor. Wählen Sie einfach aus, was Sie irgendwo hinzufügen
möchten. Vielleicht willst du
diesen Lichtmast hier oben hinzufügen. Also versuche dein eigenes Ding zu machen und wir sehen uns
in ein bisschen. Okay, also habe ich
ein paar Gegenstände hinzugefügt. Du kannst sehen, dass meine Karte so
aussieht. Jetzt habe ich hinzugefügt. Hier drüben ist ein Gras. Ich habe es gerade
hier zur Seite hinzugefügt. Es sieht also ein bisschen
abgeschnitten und interessant aus. Und ich habe diese
Gegenstände hier hinzugefügt, die Blumen und nur die
eine Seite, die ich zuvor hinzugefügt habe. Ich möchte also nicht zu
viel in der Umgebung hinzufügen . Ich halte es gerne
einfach, weil es gruppiert
wird, wenn du zu
viel zur Umgebung hinzufügst und es meiner Meinung nach
nicht gut aussieht. Jetzt haben wir diese
minimalen Elemente, die wir in
eine Umgebung eingefügt haben. Was ich möchte, dass du
machst, ich möchte den Hintergrund hier
füllen,
damit er nicht zu blau ist. Ich möchte es mit
diesen großen Hintergründen füllen. Also mach weiter und wähle
dieses große Ding hier aus, einfach so und du kannst
sehen, dass du es platzieren kannst. Jetzt wollen wir
es hier nicht auf unsere Artikel legen. Also füge ich hier eine weitere,
eine weitere Ebene hinzu, und ich nenne
sie einfach BG für den Hintergrund 01. Ich glaube, wir müssen zwei
davon machen und du wirst sehen warum. Also BG 0102, ich
gehe einfach 0 unter den 01. Und dieses, anstatt es Hintergrund zu
nennen, nennen
wir es BG-Requisiten, also Hintergrund-Requisiten oder
ähnliches. Wenn Sie also auf den ersten klicken, ist
der Hintergrund 01. Ich möchte das
Ganze hier nicht so hinzufügen. Was ich machen möchte, ist, ich es einfach so hinzufügen möchte. Ich sehe also nur den Baum
ohne all das, ohne das ganze
Gebäude darunter. Also nur die Bäume sehen und den
Hintergrund damit füllen. also für den Hintergrund 01 zu sehen, Versuchen
wir also für den Hintergrund 01 zu sehen, ob wir es interessant aussehen lassen
können,
etwa so. Und 0 zu, ich glaube nicht, dass wir es immer noch mit 01 füllen
können. Eigentlich können wir es hier füllen. Füllen wir tatsächlich 0, um zuerst auf 0 zu
klicken, ich
möchte es nur besser visualisieren. Also so etwas vielleicht. Versuchen wir es noch einmal mit 01. Der Grund, warum ich
nicht noch einmal 02 mache, denn denken
Sie daran, dass Sie nicht so
auf Ihre Ebenen malen können. Rückkehr auf
0101 war hier drüben. Jetzt können wir hier übermalen,
ohne irgendetwas zu beeinflussen. Also so etwas. Ich denke, das funktioniert,
das sieht gut aus. Also lasst uns wieder hierher gehen. Ich wähle nur
den Radiergummi aus, damit ich mir das nicht alles ansehen
muss. Aber du kannst hier sehen, ob der Charakter
herumläuft, das sieht gut aus, unser
Hintergrund ist voll. Du kannst natürlich,
ich habe keine Wolken,
aber du könntest natürlich, wenn es da ist, um es bei Wolken hier oben
interessanter zu machen. Aber ich denke, das ist okay. Das ist wie wenn wir hier
herumlaufen, es nicht wirklich schlecht aus
und es sieht interessant aus. Sie können hier sogar
Ihre Requisiten anpassen, der Hintergrund fordert Sie
vorher auf. Sie können sie anpassen
, wenn Sie möchten. Und das war eigentlich für die
Gestaltung der Umwelt gedacht. Also der Grund, warum ich hier
nichts hinzugefügt habe, oder vielleicht hier oder hier drüben. Wir könnten einige
dieser leeren Stellen verwenden , um später Portale
hinzuzufügen damit wir uns in
verschiedene Bereiche teleportieren können , und ich kann Ihnen
zeigen, wie man
ein Portalsystem macht. Und damit
gehen wir zur nächsten Lektion über.
10. Flackern entfernen: Gehen wir nun zurück
zu unserer Kachelkarte. Ich möchte Ihnen etwas zeigen, das Sie hier sehen
können, wenn ich mich bewege, wenn ich mit der rechten Maustaste klicke
und herumschwenke, sieht
man, dass der Himmel flackert und meine Fliesen auch. Es ist sehr subtil. Aber zum Beispiel können Sie hier die Linie
sehen, sie schneidet meine Fliesen ab. Manchmal flackern
die Kacheln auch. Und wir möchten dieses Flackern entfernen
, denn dies wird Ihnen auch im Spiel
passieren. Also lassen Sie uns
diese Kachelkarte hier schließen. Und was Sie tun möchten, ist diese Kachelsets einfach
mit der rechten Maustaste auf das Handtuchset klicken
und auf Bedingung
Title XI-Textur klicken. Jetzt wird es
etwas Neues für dich schaffen. Drücken Sie einfach die Eingabetaste und es
wird dies für Sie erstellen. Diese sind also gepolstert, sodass sie
die Handtücher automatisch für Sie aufpolstert. Sie können also sehen, dass es nicht wirklich
anders aussieht als zuvor. Aber der Unterschied ist, wenn
ich zurück zu meinem Kachelset gehe, wenn ich
jetzt auf meine Kachel klicke,
bevor es die Kachel hier an den
Seiten ausgewählt habe,
aber du kannst sehen, dass der Motor deine Kacheln
automatisch gepolstert hat, damit sie sie wird niemals flackern
, weil wir diese Paarungen auf
jeder einzelnen Kachel haben. Dasselbe, was es
für alle anderen
Kacheln getan hat , die Sie haben. Machen wir das Gleiche
für den Hintergrund. wir mit der rechten Maustaste auf das
Handtuchset und klicken Sie auf
Bedingung Handtücher, Laken Textur und
lassen Sie uns auf Enter klicken. Okay, jetzt war ich mit dem
Malen meiner zweiten Textur fertig. Es hat einige Zeit gedauert, weil es eine
so leichte Textur war und es fast so aussieht, als wäre Ihr Motor abgestürzt, aber das ist es nicht. also zurück in die Umgebung gehen und jetzt auf meine Kachelkarte klicken, können
Sie sehen, wenn ich
hineinzoome und mich bewege, können
Sie sehen, dass das
Flackern verschwunden ist. Und das
gilt auch für das Spiel. Also haben wir
dieses Flackern entfernt. Wenn Sie also einige
Handtücher importieren, die Sie für Ihre Karten hinzufügen möchten, denken Sie
daran, mit der rechten Maustaste
auf den Kachelsatz zu
klicken und auf Bedingung
Handtuchstruktur zu klicken. Und es wird diese Textur automatisch für Sie
auffüllen. Und Sie werden all
diese flackernden Probleme beseitigen.
11. Platzieren der Tile: Lassen Sie uns nun
unser Level, das wir hier
erstellt haben, innerhalb unserer Karte platzieren . dies schließen,
denken Sie daran, dass wir hier eine Karte erstellt haben, eine Ebene namens main. Doppelklick darauf, um sicherzustellen, dass du hier drin bist. Du kannst es auch sehen. Hier auf der rechten Seite befinden Sie sich
in der Map Main. Gehe einfach in die Umgebung und klicke
und ziehe deine Kachelkarte. Also nicht das Handtuch-Set
, sondern die Kachelkarte. Also klicke und ziehe und du kannst es hier in
der Umgebung ablegen. Denken Sie an unsere Navigation bevor Sie mit der rechten Maustaste klicken und halten können, um sich zu bewegen. Und Sie können sehen, dass dies die
Kachelkarte ist, die wir hinzugefügt haben. Jetzt entferne ich
dieses Raster gerne , weil ich nicht
wirklich sehen kann, was los ist. Wenn Sie also im Detailbedienfeld auf diese
Kachelzuordnung klicken, können
Sie
hier unter Rendern suchen, pro untergeordnetes Raster
anzeigen,
wenn ausgewählt, ich deaktiviere
das Häkchen, damit ich meine Karte sehen kann. Und das ist die Map
, die wir erstellt haben. Was ich gerne mache, ist,
dass ich es gerne
an der Stelle von
Nullen, Nullen 0 platziere. Das ist also meine erste Karte. Ich fange gerne bei 000 an. Das ist einfach es. Wir haben die Map erstellt. Und da es sich um eine 3D-Engine handelt,
denken Sie daran, dass es sich
nicht um eine 2D-Engine handelt. Sie können hier sehen, wenn
Sie sich die Seite Ihrer Kachelzuordnung ansehen, dies sind tatsächlich Layer-Kachel. Denken Sie also daran, dass
wir in
der Kachelkarte unsere Layer erstellt haben. Und so können Sie sehen, wie sich alle diese Ebenen
hier in einer 3D-Umgebung zusammenstapeln. Was ich tun möchte,
ich möchte
diese Ebenen trennen , weil
wir später sicherstellen möchten, dass wir
kein Problem haben , wenn sich der
Spieler bewegt. Und ich werde hier und hier
runter gehen, und diese Trennung pro Schicht, ich werde sie einfach auf
etwas Extremes erhöhen , damit Sie sehen
können, was los ist. Also so etwas wie 50
und ich werde sparen. Sie können
diese Layer jetzt tatsächlich sehen, sie sind
voneinander getrennt. Was ich jetzt gerne
hier in der Trennung mache, schreibe
ich gerne zehn und ich möchte dir zeigen,
warum ich zehn schreibe, oder du kannst auch 15 schreiben. Das ist okay. Es spielt keine Rolle. Aber ich möchte dir zeigen, warum
ich nicht damit gehe, warum ich zum Beispiel
mit zehn gehe. Wenn Sie also hier klicken, können
Sie sehen, dass wir den Layer
getrennt haben. Sie können sich also vorstellen,
wie der Charakter hier auf dem
Boden
steht , auf diesen Kacheln. Sie
stehen technisch gesehen auf
diesem Basis-Layer, den wir erstellt haben. Es gibt zehn Pixel von dieser Ebene hier bis
zur vorderen Ebene hier. Jetzt ist die Trennung, seit wir zehn geschrieben haben, seit wir zehn geschrieben haben,
die Trennung zehn
Pixel für jede Ebene. Sie haben also die Freiheit, Dinge zwischen
diesen Ebenen
hinzuzufügen. Wenn
Sie zum Beispiel
ein Objekt vor diesem
Hintergrund hinzufügen möchten ,
aber Sie möchten hinter
dem herumlaufenden Spieler bearbeiten. Offensichtlich müssen Sie
die Zahl auswählen , die sich
zwischen diesen beiden Ebenen befindet. Je größer Sie diese Ebenen
erstellen, desto mehr Freiheit haben
Sie Elemente neben oder
zwischen diesen Ebenen zu
platzieren. Also glaube ich nicht, dass wir mehr als zehn
brauchen. Ich brauchte nie mehr als zehn, also schreibe ich
stattdessen zehn, um sicherzustellen, dass
meine Bodenfliesen bei 0 sind, da dies es uns
später beim Programmieren leichter machen wird . Ich möchte
diese Ebene einfach hierher schieben. Das sind meine Kacheln, zwei vor hier,
also ist es in der Mitte. So können Sie hier
am Drehpunkt sehen, wenn Sie das
Verschieben-Werkzeug ausgewählt haben, wenn Sie darauf klicken,
haben Sie das Verschieben-Werkzeug ausgewählt. Sie können sehen, ob Sie
sich in diese Richtung bewegen möchten, müssen
Sie sie um zehn verschieben. Und jetzt ist es tatsächlich richtig. Denken Sie daran, dass unser Fangwerkzeug alle zehn Grad einrastet, zehn Pixel und nicht in Grad. Jetzt ist es eigentlich nicht richtig denn mit dem Schnappen
haben wir es auf zehn geschafft. Sie können also sehen, dass es jetzt ist, jetzt liegt der Hintergrund bei 000. Wenn Sie zehn
hier im Y schreiben, haben
Sie die
Dosis, dosieren Sie neuartige Kacheln als 000. Und das wird es
uns
später, wenn wir
programmieren, viel einfacher machen.
12. Post: Okay, das Problem,
das wir gerade in
unserem Level haben , ist, dass die Beleuchtung und die Farben nicht korrekt
sind. Wie Sie
hier sehen können, können Sie den Unterschied
zwischen dieser Kachelkarte, den richtigen Farben und wie sie aussieht, sehen
Sie, wenn
ich
meine Kachelkarte öffne und wenn ich hier
hineinzoome Unterschied
zwischen dieser Kachelkarte, den richtigen Farben und wie sie aussieht, sehen
Sie, wenn
ich
meine Kachelkarte . Und das ist unser Niveau, also sieht es definitiv
falsch aus und die Beleuchtung
ist zu stark. Und hier kommt das
Post-Process-Volume ins Spiel. Also hier oben und
schnell einen Button hinzufügen. Klicken wir hier hoch und gehen
dann zu visuellen Effekten. Und fügen wir dieses
namens Post-Process-Volume hinzu. Also das Post-Process-Volume, was es ist, Es ist genau
wie in Photoshop. Wenn Sie ein Bild
in Photoshop einfügen, können
Sie die Bildwissenschaftler bearbeiten, Sie können die Sättigung und
die Helligkeit
des Bildes dort bearbeiten . Das Gleiche gilt hier
in Unreal Engine, wir verwenden ein Post-Process-Lautstärke, um die Beleuchtung und
die Farben zu ändern und so weiter. Also fast genau wie die
Farbkorrektur. Wir haben also das
Post-Process-Volumen und was wir tun wollen,
ist hier nach unten zu scrollen. Und wir wollen dieses so
genannte unendliche Ausmaß annehmen. Was das bewirkt, ist, dass es die ganze Welt
betrifft. Wenn Sie dies nicht drücken, funktioniert
dies nur, wenn
Sie sich in diesem Feld befinden. Um es Ihnen zum Beispiel zu
demonstrieren, werde
ich diese Blüte
erhöhen. Also geht es um die Intensität
von zehn, also sehr extrem. Und wenn ich hier
in meine Box gehe, kannst
du sehen,
dass die Blüte wirksam
wird, diese verträumten Effekte. Und wenn ich diese Lautstärkebox
nach dem Prozess verlassen würde, wird
es wieder normal, sodass
Sie den Unterschied erkennen können. Okay, anstatt
hineinzugehen, nicht diese Box hier und vielleicht versuchen, diese
Box in das Level zu bringen. Das müssen wir nicht wirklich tun. Wir möchten nur auf diese
sogenannte unendliche Ausdehnung klicken. Und es wird
die ganze Welt betreffen. Wir müssen also nicht in
dieser Box sein , damit sie wirksam wird. Okay, also was wir tun wollen, ich setze dieses
Post-Process-Volume einfach auf 000. Eigentlich spielt es keine
Rolle, aber das mache ich einfach gerne. Und dann lasst uns alle diese Einstellungen
durchgehen. Und ich brauchte ungefähr
sechs bis sieben Stunden, um das
tatsächlich mit den
richtigen Einstellungen festzuhalten. Also hier in der Blüte, setze es
uns auf 0. Wir wollen wirklich keine
Blüte innerhalb unseres Levels. Als nächstes gehen wir
auf die Exposition. Und innerhalb der Belichtung, Nehmen wir die minimale Helligkeit
und maximale Helligkeit. Und lasst uns beide
auf zwei setzen. Also 22. Und dann lasst uns runter zu Lens Flare
gehen. Klicken wir auf die Intensität
und legen sie auf 0 fest. Und wir
brauchen nicht wirklich eine Linsenfackel. Als Nächstes klicken wir auf Bildeffekte und
weitere Schadenseffekte. Wir können die Vignette auf 0 setzen bevor wir eine Farbkorrektur vornehmen. Lassen Sie uns das vorerst ein
bisschen überspringen. Sie gehen unter
und ich werde die Umgebungsokklusion
finden. Aber die
Umgebungsokklusion, die wir auf 0
setzen wollen , brauchen wir das nicht. Und auch die Bewegungsunschärfe, ich setze auf 0. Okay, wir haben also nicht wirklich mehr Einstellungen, mit denen wir hier unten
spielen können. Gehen wir also zurück
zur Farbabstufung. Und wieder habe ich
sieben Stunden damit verbracht. Begründen Sie also mit
Zufallszahlen. Es liegt nicht daran, dass ich richtig
vermute, es liegt daran, dass ich versucht
habe , hier die
richtigen Zahlen zu finden. Also hier können wir zuerst auf der
globalen Seite darauf klicken. Und nehmen wir diese
, die Sättigung genannt wird. So können Sie vergrößern, Sie können sehen, dass Sie die Sättigung
des Bildes erhöhen und
verringern können . Und dafür war 1.980
die perfekte Nummer. Und lasst uns ein bisschen hier
unten im Schatten scrollen. Klicken Sie also auf die
Schatten und nehmen sowohl die Sättigung als auch den
Kontrast und das Gamma. Was ist Sättigung? Wir wollen mit 0,9 mitmachen. Und mit dem Kontrast gehen
wir mit 0,9 für das Gamma, Lass uns mit 1,01 gehen. Und lass uns jetzt runter gehen. Und in den mittleren Tönen haben
wir eigentlich
nichts anderes als in den Highlights, wenn wir auf diesen klicken, wollten wir
nur
dieses Highlights Minimum nehmen. Also setze ich es auf eins ein. Und dann gehen wir
auf Verschiedenes hinaus. Ich nehme diesen
Tone Curve Betrag, und wir werden das
auf 0 senken. Sie können sehen, dass sich das in unseren Farben stark ändert
. Gehen Sie also auf
0, und das sollte alle unsere Probleme
beheben. Klicken wir nun auf die Kachelkarte und Sie können
hineinzoomen und einen Blick darauf werfen. Und du kannst dir unser Level hier
ansehen, und du kannst sehen, dass sie jetzt
perfekt gleich aussehen. Sie sind jetzt ein kleines Problem, und das werden wir
in der nächsten Lektion beheben. Wie Sie sehen können, sind
diese pixelig, aber Sie können sehen, dass
es in
unserem Level
eine Art Glätte gibt, die nicht zu pixelig ist. Und das liegt an dem Anti-Aliasing, das
wir entfernen müssen. Aber Sie können
hier sehen, wenn Sie in den Live-Modus wechseln und in
den nicht verknüpften Modus wechseln, so sieht die richtige
Textur aus. So
sieht es also ohne Beleuchtung aus. Wenn Sie also
in den Lead-Modus zurückkehren, können
Sie versuchen, die beiden zu vergleichen. Das ist es, was wir also erreichen
wollen. Wir versuchen zu erreichen, dass
der Elite-Modus die gleiche
Farbe wie der unbeleuchtete Modus hat. So sehr nahe beieinander. Das einzige ist, dass
der Live-Modus aufgrund des
Anti-Aliasing
glatter ist . Und das werden wir
in der nächsten Lektion beheben.
13. Entfernen von Anti-Aliasing: Okay, lassen Sie uns
das Anti-Aliasing verschieben, das
diesen glatten Effekt
innerhalb unseres gesamten Levels verursacht . Und wir
brauchen keine Glättung wenn wir
mit Pixel-Los arbeiten, wir wollen
die wahren Pixel beobachten. Also gehen wir weiter, um zu bearbeiten und gehen wir in
unsere Projekteinstellungen ein. Im Inneren können wir nach
unten scrollen und
diese namens
Rendering innerhalb
des Engine-Renderings
und im Inneren finden Rendering innerhalb
des Engine-Renderings . Nun, das ist Anti-Aliasing, aber das ist für Mobilgeräte und wir machen gerade
kein mobiles
Spiel, also spielt das keine Rolle. Aber ich gehe hier runter. Und wir möchten diese
eine Standardeinstellungen finden solange wir dabei sind. Lasst uns tatsächlich ein
paar Dinge entfernen, die blühen. Wir haben es bereits auf 0 gesetzt, aber auch hier können wir auch
die Umgebungsokklusion immer
deaktivieren . Dies ist die automatische Belichtung und wir können auch
die Bewegungsunschärfe entfernen. Also alle diese wurden entfernt. Und das ist die wichtige,
die Anti-Aliasing-Methode. Ich weiß nicht, ob du einen Unterschied
sehen kannst, wenn ich ihn
einfach hier auf
die Seite lege und du kannst sehen, ob etwas
passiert, wenn ich es deaktiviere. Also diese zeitliche
Superauflösung, wenn ich auf Keine klicke,
kannst du den Unterschied erkennen. Natürlich kannst du es
beibehalten, wenn du willst, dass dein Spiel so
geglättet wird. Aber für echte
Pixelkunst hast du das eigentlich nicht. Wenn Sie also auf keine klicken, werden die wahren Kacheln
angezeigt, wie sie in
der Pixel-Art-Software erstellt werden. Wenn wir also in den
unbeleuchteten Modus und den Modus gehen, denken Sie daran, dass wir
dies erreichen wollen,
dieselben Farben. Sie können sehen, dass es jetzt
keinen Unterschied gibt, und das wollen wir. Wir möchten, dass der Lit-Modus der gleiche ist wie der unbeleuchtete. Und wenn Sie den
Unterschied sehen möchten, klicken Sie auf dieses
Post-Process-Volume,
mit dem wir in der vorherigen Lektion gearbeitet haben . Wir können auf diese
Option klicken, um es zu entfernen, und Sie können den Unterschied erkennen. Jetzt ist dies der OnLoad-Modus. Dies ist eine wahre Farbe. Dies ist der Live-Modus. Und wenn wir es aktivieren, machen
wir es genau so,
wie wir es wollen.
14. Kollision hinzufügen: Lassen Sie uns nun die
Kollision für unsere Kacheln aktivieren. Was also Kollisionen
sind, ist das, was diese Kacheln tatsächlich begehbar
macht. Sie können sich also vorstellen, wenn wir in Zukunft
einen Charakter hinzufügen, der Charakter
derzeit nicht auf
diesen Kacheln laufen , da
sie keine Kollision haben. So
wird der Charakter tatsächlich
durch die Kacheln folgen und durch den Boden
fallen. Wir müssen also eine Kollision hinzufügen damit der Charakter auf diesen Kacheln
laufen kann, und das ist sehr einfach. Gehen wir also rüber
zum Kachelset. Also lasst uns zur
Tulsa Dragon Road fahren. Und innerhalb dieser Kachel sagte, denken Sie daran, dass das einzige, was wir beim
letzten Mal gemacht haben , nur die Fliesengröße auf 30
einzustellen. Bakterien können tatsächlich
auch Kollision hinzufügen. Klicken Sie also auf diese Schaltfläche, die kollidierende Kacheln
genannt wird. Jetzt können Sie
die Kollision sehen. Jetzt. Im Moment kannst du
nichts sehen, weil wir keine Kollision haben. Klicken Sie also hier auf die erste
Kachel, und diese zum Beispiel, klicken Sie
auf dieses Feld „Hinzufügen“. Und jetzt hast du tatsächlich eine Kollision
hinzugefügt. Wenn ich also auf Jetzt speichern klicke und dir nur zeigen wollte , dass es tatsächlich eine Kollision
hinzugefügt hat. Wenn ich also auf klicke, tauche hier auf und
klicke auf Kollision, jetzt kannst du
nichts sehen und das liegt daran, dass
du innerhalb
des Kachelsatzes daran denken musst, auf Maps aktualisieren zu
klicken. Dadurch werden alle
Ihre Kachelkarten aktualisiert. Und jetzt können Sie sehen, dass es
tatsächlich Kollision hinzufügt. Jetzt kann man diese Boxen hier oben sehen. Und das ist die Kollision, wir fügen es einfach hinzu und wir
müssen das tun, damit der Charakter tatsächlich auf diesen Kacheln
laufen kann. Technisch gesehen
läuft
dieser Charakter in der Programmierung auf diesen kleinen Boxen, aber es sieht so aus, als würde der Charakter
auf den Kacheln laufen. also wieder hierher gehen und wir haben, gibt es leider
keine Methode, bei wir alles auswählen
und hier hochklicken können. Wir müssen es manuell machen, aber wir wollen lange dauern. Klicken Sie also hier an, schauen Sie sich die Box an, ganz einfach. Wir fügen diesen Kacheln nur
Kollisionen hinzu. Und du musst
das für alle Kacheln tun , die du benutzt hast. Einfach so. Zum Beispiel
müssen wir keine Kollision
für diese Kacheln hinzufügen , da
wir sie nicht verwendet haben. Wenn Sie
sie jedoch in Ihrer Karte verwendet haben, müssen
Sie auch Kollisionen
für sie hinzufügen. Wir fügen also keine Kollisionen
für diese hinzu, da der Spieler
offensichtlich nicht auf diesen Spielfeldern laufen
wird. Wenn ich also hier speichere
und Maps aktualisiere, siehst du hier, dass
die
Kacheln additiv sind, die Kollisionen werden hinzugefügt und wir müssen hier unten keine
Kollision hinzufügen , denn dann wird der Spieler
niemals eine Kollision hinzufügen geh hier runter. müssen wir also nicht wirklich. Jetzt möchte ich meine
Kollisionsbox größer machen, weil Sie sich vorstellen können, wenn der Spieler
hier auf diesen Boxen läuft, besteht die Möglichkeit, dass sich um eine 3D-Engine handelt. Es besteht die Möglichkeit, dass der
Spieler so geschoben wird der Spieler
hier zur Seite fällt und
vom Boden
fällt und von den Kollisionskästen
fällt. Um dieses Risiko zu beseitigen, möchte
ich die
Kollisionsbox vergrößern. Das können wir innerhalb
der Kachelkarte machen. Innerhalb der
Kachelkarte können wir hier unten
gehen ,
Kollisionsdicke. Stellen wir fest, dass es 254 ist. Klicken wir nun auf Speichern. Und wenn wir minimieren, können
Sie sehen, dass die
Kollisionsboxen
viel länger sind und wir haben keine Chance,
dass der
Spieler vom
Boden fällt , weil dies jetzt abgedeckt ist. Okay, lasst uns
dem Rest eine Kollision hinzufügen. Ich glaube, wir glauben, ich glaube uns dieser Teil hier fehlt. Gehen Sie also zum
Werkzeugsatz und drinnen von hier, fügen
wir auch Kollision zwei hinzu. Das ist, dass
wir diese tatsächlich vermissen,
also füge hier oben eine
Kollisionsbox hinzu, mach dasselbe mit diesem. Wir müssen auch hier
eine Kollision hinzufügen, also die Seite, also
klicken Sie auf das Feld Hinzufügen, können
Sie hier an der Seite sehen, wir brauchen keine Kollision wenn ich
die Karte aktualisiere, damit wir sie sehen können. Jetzt hat es hier drüben Kollision
hinzugefügt. Das brauchen wir nicht wirklich. Wir müssen nur die Fliese abdecken. Was wir also tun können, ist, auf diesen zu
klicken und dann
diese beiden Scheitelpunkte zu lecken und zu saugen und auszuwählen. Und wir können klicken und ziehen. Genau wie unser Ansichtsfenster werde
ich vielleicht
das Fangen deaktivieren. Mal sehen. Oder eigentlich ist es in Ordnung. Genau so ist das perfekt. Mach das Gleiche hier. Ich füge
Kollisionsfeld hinzu und nehme diese beiden Scheitelpunkte und
reduziere sie so. Jetzt kannst du
die Map aktualisieren und du siehst, wie sie
aussieht. So sieht es aus. Die Kollision ist also zwei hier. Und wenn wir das Gefühl haben, dass
dies zu viel ist, können
wir immer zurückgehen
und es kleiner machen. Jetzt vermissen wir das hier. Fügen wir ein Kollisionsfeld hinzu. Und lasst uns
diese auswählen, um sie
näher an
dasselbe zu bringen. Bringen Sie sie einfach so näher. noch einmal daran, auf Maps aktualisieren zu
klicken. Das Letzte ist, dass uns
diese Steigung hier fehlt , weil wir
diese auch benutzt haben. Also klicke ich
zuerst auf dieses und lass uns eine Box hinzufügen. Jetzt ist dieser
etwas kniffliger, also wählen wir diese Scheitelpunkte aus. Dieser Scheitelpunkt hier oben, wenn Sie auf Ihrer
Tastatur auf Löschen klicken, wird er gelöscht. Und jetzt haben wir nur
drei Scheitelpunkte. Jetzt kannst du einfach so nach unten
gehen. Und lass uns mit
dem nächsten übergehen. Also hier
klicken Sie auf Feld hinzufügen. Wir wollen diesen nach unten bewegen, vielleicht einfach so, und diese
auch zur Seite bewegen. Wir brauchen hier nicht wirklich eine
Kollision. Und ich werde
mein Schnappen reduzieren , weil ich es nicht hier
in der Mitte bewegen
lässt. Also reduziere ich es
auf fünf statt auf zehn. Und ich denke,
so etwas funktioniert für mich. Jetzt
klicken wir auf diesen. Sie können sehen, dass Pisten etwas
schwieriger zu arbeiten sind. also auf diesen
klicken, möchten wir hier
eine kleine Kollision hinzufügen , damit
der Spieler nicht fällt. Wenn Sie also erneut auf das Feld
Hinzufügen klicken, können
wir diesen Scheitelpunkt auswählen auf der Tastatur auf Löschen
klicken. Wir können das nehmen
und näher bringen. Wenn ich es also hier treffen kann, näher und
nehme dann diesen Scheitelpunkt und bewege ihn
einfach so nach unten. Und dann können wir den
nächsten hier nehmen und eine Schachtel hinzufügen. Wir können diesen Scheitelpunkt nehmen
und ihn nach unten bewegen. Und das können wir einfach sein lassen. Ich denke, das ist eine gute Kurve. Und der letzte,
es gibt einen kleinen Bug. Ich habe es vorhin getestet. Wir müssen
hier auch
eine sehr kleine Kollision hinzufügen eine sehr kleine Kollision , sonst
wird der Spieler tatsächlich tun, wenn ich die Karte
aktualisiere und ich dir zeigen kann, wird
der Spieler tatsächlich hier
stecken bleiben. Ganz oben. Es gibt eine sehr, sehr kleine
Lücke, die wir nicht sehen können. Und wir müssen hier
eine Kollision hinzufügen. Und offensichtlich liegt das daran, dass
ich das schon einmal getestet habe. Was wir hier einfach
tun wollen, ist, dass wir den Scheitelpunkt
hier oben
löschen möchten, genau wie zuvor. Wir können diese sehr eng bewegen. Um nun die spezifische
Nummer dafür zu sehen, können
Sie hier runter gehen. Und die Daten, und die
Indexkollisionsdaten, gehen zwei Formen nach unten. Klicken Sie auf diesen Index und
sehen Sie sich diese Scheitelpunkte an. Sie können sehen, wenn ich
diesen Scheitelpunkt hier nach oben verschiebe, diese Anzahl von Änderungen. Ich möchte also nur, dass diese
Zahl 14,9 ist. Sie können also sehen, dass wenn
ich das Schnappen entferne, desto näher bewege ich es nach unten. Die letzte Zahl ist
15, offensichtlich hier. Also möchte ich
es auf einen 5.9, 14 verschieben. Und das auch. Also sehr, sehr, sehr nah dran. Wenn ich es einfach bewege, um zu sehen, welches es
ist, ist es hier unten. 14.9. Und ich weiß nicht warum ich
15.914 gesagt habe, genau so. Beide sind also 14,9. Hier gibt es also ein kleines
College , das den Spieler nicht durch den Boden
geht. Und das liegt daran, dass
ich es vorher
bei meinem Vorbereitungsprojekt getestet habe . Jetzt haben wir
die ganze Kollision eingestellt. Ich erinnere mich nur daran, dass ich
immer auf die Refresh Map klicke und
auf Speichern klicke, alles speichern. Und jetzt bist du bereit zu gehen. Sie können also einen
Blick auf Ihre Karte werfen. Sie können sehen, dass es hier oben
Kollision gibt. Wir müssen diesen vielleicht
reduzieren. Vielleicht ist es zu weit draußen. Und du kannst es dir auch hier ansehen. Aber normalerweise müssen wir einen Charakter haben
, um um die Welt zu rennen und
dies zu testen , bevor wir es mit Sicherheit sagen können. Aber jetzt haben wir die
erste Kollision erledigt und wir können mit der
Schaffung unseres Charakters fortfahren.
15. Sprites erstellen: Es ist jetzt an der Zeit,
die Charakter-Assets zu importieren. Also habe ich dich hier wieder
für dich bereitgestellt, innerhalb der Kursmaterialien gibt es einen Ordner
namens Zeichen. Klicken Sie also auf diesen Ordner. Und fangen wir mit Serena an. Was ich vorerst möchte, ist einfach den Leerlauf, den Sprung und
die
Run-Animationen zu importieren . Bevor wir das tun, gehen
wir zuerst zum
Assets-Ordner. Lassen Sie uns einen neuen Ordner
namens Zeichen erstellen. Und dann machen
wir drinnen wieder ein neues namens Serena. Und dann
können wir hier unsere Vermögenswerte importieren. Also möchte ich den
Leerlaufsprung ziehen und rennen und in dein Projekt
ziehen. Und wenn Sie loslassen,
importieren Sie diese Texturen. Also werden
wir tatsächlich
etwas erstellen, das sich Sprites und Flip Books nennt. Also lasst uns einen neuen Ordner erstellen und ich nenne
ihn die Texturen. Und ich werde diese
in diesem Ordner haben. Und all die Flip-Bücher, die wir
machen, werden hier draußen sein. also anstelle von Texturen
daran, wenn Sie
Texturen importieren, und
wenn Sie erneut darauf doppelklicken und vergrößern, können
Sie sehen, dass Unreal Engine diese Pixel
glättet. Und wie ich dir schon sagte, musst
du sie alle auswählen. Und wenn Sie sie so
auswählen möchten, können
Sie auf eine Umschalttaste
klicken und auf die letzte klicken. Es wird alle auswählen. Und Sie können mit der rechten Maustaste auf
Sprite-Aktionen und Papier auf die Einstellungen anwenden. Wie zuvor können Sie
sehen, dass es
die Glätte entfernt und Sie können die Pixel klarer
sehen. Jetzt können Sie sehen, dass die Textur mit dieser Animation
geliefert wird. Sie haben also die Animation, Sie haben die laufende Animation und sie sind in einer Textur
zusammengefügt. Und jetzt musst du daraus
Sprites erstellen. Fangen wir also mit dem Leerlauf an. Sie können mit der rechten Maustaste klicken
und Aktionen inspirieren. Man kann sagen, Sprites extrahieren. Und hier drin
musst du hier nach
oben rechts gehen und
auf Raster anstatt auf Auto klicken. Und dann müssen Sie angeben,
wie groß das Raster ist. Jetzt habe ich das
in Photoshop gemacht, damit ich weiß, dass das Netz
achtzig, einachtzig ist. Und wenn Sie
etwas aus dem Internet herunterladen, werden
sie Ihnen sagen, wie
groß dieses Raster ist, einachtzig, einachtzig. Und es wird diese
Animationen als einzelne Frames extrahieren. Wenn Sie also hier unten auf
Extrahieren klicken, können
Sie sehen, dass sie in
einzelne Frames extrahiert werden und diese heißen Sprites. Sprites sind statische Bilder. Hier in unserem Level konnten
Sie also nicht wirklich eine
Textur ziehen und sie
hier ablegen , weil Sie sehen können, dass sie alles
ersetzt, was
Sie
ziehen, und sie oben drauf ziehen. Also
klicke ich auf Control Z. Aber Sprites sind
statische Bilder und es kann diese tatsächlich
innerhalb des Levels ziehen. Wenn Sie also etwas
Statik haben, zum Beispiel ein Fass, das sich nie bewegt, können
Sie das
hier in Ihrem Level hinzufügen. Aber unser Charakter
hat Animationen, daher möchten wir
statische Bilder nicht wirklich ziehen , da dies eigentlich Animationen
sind, aber wir werden später
im nächsten Video mit
den Animationen arbeiten . Also lasst uns löschen.
Ich werde dieses Material löschen, das es erstellt hat wenn ich diese Textur
darauf gezogen habe , einfach so. Jetzt
benenne ich die Sprites um. Normalerweise lösche
ich das vorne. Denken Sie daran, dass Sie auf die Zahlen
achten müssen. Das ist also Nummer 0123. Also musst du das in der richtigen Reihenfolge machen. Und hier, der erste, ich S für Sprite nenne
, ist untätig und 01 einfach so. Wir sind also ein bisschen organisierter. Dieser ist jetzt 02 und
0304. Einfach so. Jetzt haben wir das Idol. Und lass uns das
Gleiche mit dem Sprung machen. Du kannst es selbst machen, nur
zum Üben, wenn du willst. Sie können
hier mit der rechten Maustaste klicken und zu Aktionen suchen und Sprites
extrahieren. Wählen Sie hier oben Raster aus und extrahieren Sie erneut 180 die Sprites. Und nochmal, achte
auf die Zahlen. Es heißt 0123. Denken Sie also nicht, dass Sie hier
reingehen und diese 10 nennen können, denn dieser
ist Nummer drei. Manchmal
klicke ich einfach vom Ordner weg. Klicken Sie also woanders weg
und gehen Sie zurück zum Ordner. Und du kannst sehen, dass es
sie so sortiert, wie du es willst. Dies ist also der
erste, ist r1, 01. Und das Gleiche
mit den anderen machen. Es dauert also ein wenig Zeit, um Ihre Ordner zu organisieren. Aber am Ende, wenn
sie organisiert sind, wird es
Ihnen leicht fallen, damit
zu arbeiten. Jetzt ist der letzte der Sprung. Und dieser kann man sehen, dass der
Sprung nur eine Animation hat. Es macht also keinen Sinn, mit der rechten Maustaste
zu klicken und Sprites
extrahieren zu sagen , da Sie
wirklich nur ein Sprite haben. Sie möchten also mit der rechten Maustaste klicken und einfach auf Sprite
erstellen anstatt auf Sprite
erstellen anstatt Extrahieren klicken, da Sie
nur ein Sprite haben. Und nennen wir das „Sprung“. Okay, jetzt haben wir unsere Sprites
erstellt. Lasst uns alles speichern und lass uns
zur nächsten Lektion übergehen.
16. Flipbooks erstellen: Jetzt, da wir
Sprites für unseren Charakter erstellt haben, ist es
jetzt an der Zeit, diese Sprites zu
animieren. Was Sie also tun möchten, ist zum Beispiel mit dem Leerlauf zu
beginnen. Sie können sie alle auswählen. Also entweder eins, du
kannst die Kontrolle halten. Ich würde zu drei oder vier gehen. Oder eine schnellere Möglichkeit, dies zu tun,
ist, auf das erste zu klicken, Umschalttaste
gedrückt zu halten und auf
die letzten auf
die Nummer vier zu klicken . Und wir wählen das
Ganze hier in der Zeile aus. Jetzt können Sie mit der rechten Maustaste klicken. Und hier oben heißt es „Flip Book
erstellen“. Wenn Sie also auf „Flip Book erstellen“ klicken, wird eines erstellt. Und normalerweise schreibe ich anstelle
von S und vorne FB
für ein Flipbook. Dies ist das Idle Flip Book. Sie können jetzt
auf das Flipbook doppelklicken. Und Sie können sehen, dass
dies animiert ist, aber im Moment ist es zu schnell
animiert. Ich möchte also, dass du die Frames
pro Sekunde hier
nach oben rechts
änderst . Also habe ich
gestern Maple Story gespielt und gesehen, wie
schnell die Animation war, und es waren ungefähr zwei
Frames pro Sekunde. Schreiben Sie also an, und Sie können jetzt
sehen, dass es animiert ist. Dies ist die Leerlauf-Animation. Lasst uns das
Gleiche für den Lauf machen. Um Nummer eins bis vier auszuführen, kann
es mit der rechten Maustaste klicken, ein Flipbook
erstellen es FP run
nennen. Und du kannst noch einmal
darauf doppelklicken. Und für die Run-Animation sind
es sechs Frames pro Sekunde. Natürlich kannst du es schneller
machen. Wenn
du es zum Beispiel bist, wenn du willst, dass dein Charakter so schnell läuft oder die Animation einfach
so schnell sein lässt, kannst du das tun. Aber für mich versuche ich Maple Story
so gut ich kann
nachzuahmen. Und es sieht so aus, als wäre es eine
Animation etwa sechs Frames pro Sekunde,
genau so. Okay, lass es uns schließen. Und der letzte, den
wir haben den Sprung. Jetzt können wir
daraus ein Flipbook erstellen und wir müssen es tun, denn später, wenn wir unsere Charaktere
erstellen, will
der Charakter ein Flipbook und
Eingabe. Also können wir dieses Sprite nicht wirklich
gebrauchen. Denken Sie daran, das ist ein Sprite, das ist ein Flipbook. Wir müssen dies
zu einem Flipbook machen, da der Charakter später
ein Flipbook benötigt. Obwohl es sich um einen Frame handelt, müssen
wir ein Flipbook erstellen. Lasst uns also mit der rechten Maustaste klicken und ein Flipbook
aus dem Sprung
erstellen. Und nennen wir es
FB, jump, so. Und offensichtlich
ist dies nur ein Frame, also werde ich einfach
diesen einen Frames pro Sekunde in
eins ändern und wir können es schließen und wir können alles speichern. Jetzt haben wir
unsere Flip Books erstellt. Ich verschiebe diese Flip Books
aus dem Texturordner. Also verschiebe ich sie hier nach Tsarina und
klicke auf Move here. Jetzt haben wir diese Flip
Books und diese Sektoren, wir
müssen sie nicht wirklich wiedersehen. diesem Grund habe ich einen
Textures-Ordner erstellt, damit es
einfacher zu betrachten ist, da wir nur diese Flip Books
wirklich brauchen.
17. Einführung in die Blaupause: Blueprint ist die visuelle
Skriptsprache in Unreal Engine. Und wenn Sie
Blaupausen schreiben, ob Sie es glauben oder nicht, sind
Sie ein Programmierer.
Du programmierst. Anstatt
traditionelle Codezeilen zu schreiben, können
Sie das gesamte Spiel programmieren, indem einfach Notizen hinzufügen und miteinander
verbinden. Es ist also eine visuelle
Skriptsprache. Blueprint ist so leistungsfähig wie alle anderen
Programmiersprachen, egal ob C
plus C-Sharp oder jede
andere Sprache, Sie können mithilfe von Blueprint erstellen, was Sie
wollen. Im Moment erstellen wir eine
Mini-Version von Maple Story. Sie können aber auch
Fortnite, Metal Gear,
Solid, Rost oder sogar Aldon Ring herstellen . Sie können jede
Idee mit Blueprints programmieren. Das einzige
, was
dich einschränkt , ist deine Vorstellungskraft. Was auch immer Sie programmieren möchten, das können
Sie mit Blueprint machen. Und es ist auch optimiert und
läuft gut damit, lasst uns gleich
die Grundlagen von Blaupausen lernen.
18. Blaupause: Sprechen wir jetzt über
Blueprint-Kurse. Also hier in jedem zufälligen Ordner klicke
ich mit der rechten Maustaste. Ich wollte dir vorerst nur die
Blueprint-Kurse zeigen. Sie können mit der rechten Maustaste klicken und hier oben auf
Blueprint-Klasse klicken. Sie finden dies auch
unter Blueprints, diesen namens Blueprint-Klasse. Also das Gleiche, aber es ist
schneller, einfach hier hochzuklicken. Dies sind also die
verschiedenen Klassen , die Sie
in Blueprint erstellen können. Und ich möchte
mit dem ersten anfangen. Der erste, den wir haben, ist ein Schauspieler und Sie können
die Beschreibung
hier rechts sehen . Es besagt, dass ein Schauspieler
ein Objekt ist , das in der Welt platziert
oder hervorgebracht werden kann. So kann ein sehr einfacher
Schauspieler zum Beispiel ein Tisch sein, es kann ein Stuhl sein, es kann ein Hammer sein. Also alles, was in die
Welt
gebracht werden kann , nur ein Objekt. Der nächste ist ein Bauer. Und auf ist ein Akteur, der
besessen werden kann und
Eingaben von einem Controller empfangen kann. Und was das bedeutet,
ist etwas, das der
Spieler kontrollieren kann. Also in einem anderen Kurs, den ich
gemacht habe , den Sie
hier auf der Website sehen können ,
ist, dass ich einen Ball
oder eine Kugel erstelle. Bewegen Sie sich. Diese Sphäre, die sich
bewegt, ist im Gange, weil ich wollte, dass der Spieler
diese Angst kontrolliert , um sich
mit der Tastatur zu bewegen. Also n upon ist ein
Akteur, der
besessen werden kann und
Eingaben von einem Controller empfangen kann. Also musst du alles, was
du willst, in einen Teich bringen. Wenn Sie möchten, dass der Spieler
dieses Objekt steuert, können
Sie keinen Schauspieler machen und möchten, dass der Spieler dieses Objekt
kontrolliert, dass Sie es stattdessen
zu einem Punkt machen müssen. Als nächstes haben wir einen Charakter. Und ein Charakter ist
eine Art von ****. Sie können also sehen, dass
es eine Beziehung gibt. Ein Charakter ist also tatsächlich dran. Ein Charakter ist eine
Art von ****, die die
Möglichkeit
beinhaltet, herumzulaufen. Wann immer du also einen Charakter machen
willst, kannst du dir nur
vorstellen, dass ein Mensch mit zwei Armen und zwei
Beinen herumläuft. Du musst einen Charakter machen. Aber wenn du
deinen Charakter
so etwas wie einen Ball oder
eine Kugel machen willst deinen Charakter
so etwas wie einen Ball oder
eine Kugel , die auf der Welt
herumrollt hat er keine
zwei Arme, zwei Beine. Sie können weitermachen
und einen Punkt erstellen. Dies ist also die einfachste
Differenzierung. Wenn Sie also einen
Charakter haben, zwei Arme zwei Beine herumlaufen, und
zwei Beine herumlaufen, können
Sie stattdessen
einen Charakter erstellen. Dann hast du etwas
namens Player-Controller. Und Apply Controller
ist ein Akteur, der für die Kontrolle
verantwortlich ist ,
wenn er vom Spieler benutzt wird. Also musst du dir das überlegen. Dies ist nicht wirklich der Controller
, den Sie zu Hause haben, oder Ihr Xbox-Controller oder
Ihr PlayStation-Controller. Das heißt, du kannst dir das als das Gehirn des Charakters vorstellen. Das ist also das Gehirn
des Charakters. Alle Charaktere
, die du auf
der Welt spawnst , wird
einen Spieler-Controller haben. Und hier können
Sie Codes
wie Benutzeroberflächen hinzufügen . Oder wenn du
ein Einzelspieler-Spiel machen willst, erstellst du
fantastische Bewegungen. Das kannst du hier machen, aber wir werden
mit all diesen Briefen arbeiten. Also mach dir darüber keine Sorgen. Dies ist vorerst nur die grundlegende
Erklärung. Dann heißt der letzte,
über den ich sprechen möchte , Spielmodus,
und das ist fast
selbsterklärend. Die Spielmodusbasis definiert
das gespielte Spiel, seine Regeln, die Wertung und andere Facetten
des Spieltyps. Wenn wir zum Beispiel ein Shooter-Spiel
haben, haben
Sie die Flagge erobern. Du hast wie viel Zeit
du pro Runde hast. zum Beispiel in Maple Story Wenn wir zum Beispiel in Maple Story eine Veranstaltung machen wollten, können wir definieren, wie viel Zeit dieses Ereignis in Anspruch nehmen
wird und so weiter. Also nur die Spielregeln. beispielsweise in
Capture the Flag Wenn Sie beispielsweise in
Capture the Flag die
Flagge von einem Team erobern, erhalten
Sie einige Punkte. Und diese Punkte
können auch innerhalb
des Spielmodus aufgeschrieben werden , da dies
die Spielregeln sind. Jetzt, da wir gerade
mit 2D arbeiten. All dies sind also 3D. Da wir mit 2D arbeiten, müssen
Sie darauf klicken,
dieser nennt alle Klassen. Und hier kannst du nach Papier
suchen. Sie können sehen, dass wir viele
Klassen haben und das sind nur die grundlegenden, die
wir ständig benutzen. Und du gehst fast nie hier rein es sei denn, du arbeitest
mit fortgeschrittenen Sachen. Zum Beispiel ein Spar
- und Ladesystem, das wir hoffentlich
später tun werden. In allen Klassen können
Sie hier nach Papier suchen. Und Papier ist nur das
Pixellot 2D hier in Unreal Engine. Anstelle dieses Schauspielers hier oben,
der 3D ist
, können wir zum Beispiel diesen „
Paper Sprite Actor“ erstellen . Oder wir können
einen Flipbook-Schauspieler erstellen wenn wir ein Flipbook haben, denken Sie daran, dass Flipbooks
die animierten Sprites
zusammengestellt waren . Wenn Sie also eine Animation haben, möchten
Sie ein Flipbook verwenden. Wenn Sie ein statisches Element haben, möchten
Sie ein
Sprite verwenden und haben dann auch einen Charakter. Anstatt
dieses Zeichen hier oben zu verwenden, da es sich um ein 3D-Zeichen handelt, müssen
wir dieses Zeichen verwenden, das als Papierzeichen
bezeichnet wird. Und dieses beinhaltet
ein Flipbook. Wir haben Flipbooks für
unseren Charakter gemacht, die wir hier in
unseren Papiercharakter stecken
können. Dies sind also die
Grundklassen, die wir verwenden möchten, und meistens werden wir diese hier oben nicht verwenden. Wir werden
einen Spieler-Controller
und einen Spielmodus hinzufügen , da
diese nicht erforderlich sind. Aber für all diese
würden hier unten meistens in
unserem Papiercharakter, dem
Papiersprite und unserem
Papier-Flipbook funktionieren .
19. Spielmodus und Player: Beginnen wir nun damit,
unsere ersten Blueprints zu erstellen. Um das zu tun, gehen wir
in den Inhaltsordner. Sie können
hier mit der rechten Maustaste klicken und
einen neuen Ordner namens Blueprints erstellen. Und in diesem
Ordner können
Sie übrigens eine volle Dosis Farben geben. Wenn Sie also hier unter
Blueprints Ordner mit der
rechten Maustaste klicken
können, können Sie auf Farbe festlegen klicken. Manchmal mache ich das nur
um mich selbst zu organisieren, ich wähle einfach eine blaue Farbe aus. Ich weiß also, dass es zum Beispiel Entwürfe
wie diese sind. Und du kannst es hier
klar sehen. Sie können erneut mit der rechten Maustaste klicken
und Blueprint-Klasse auswählen. Und lasst uns einen Spielmodus erstellen. Jedes Spiel, das du erstellst, hat einen Spielmodus und
einen Spieler-Controller. Dies sind die grundlegenden Dinge, mit denen
Sie in einem Spiel beginnen. Lasst uns also einen Spielmodus erstellen. Und nennen wir es g, m
als Präfix für den Spielmodus. Und normalerweise nenne ich es
den Namen des Spiels. Also Maple Story für diese. Der nächste, klicken Sie erneut mit der rechten Maustaste auf Loop und class. Klicke auf den Spieler-Controller und nenne es PC für den
Spieler-Controller, nenne es
erneut den
Namen des Spiels. Also Maple Story. Jetzt müssen
Sie natürlich
mehrere Spielmodi erstellen , wenn Sie mehrere Spielmodi
haben. So
hast du zum Beispiel in
Counter-Strike etwas
namens Death Match. Du hast die Flagge erobert, du hast fünf gegen
fünf Spieler. Du hast also verschiedene
Spielmodi. Und du kannst
mehrere Spielmodi erstellen. Sie können natürlich, anstatt sie den Spielnamen zu
nennen,
sie für einen
DN nennen, Capture the Flag. Nennen Sie es also den Namen
des Spielmodus. Aber für diesen
haben wir nur einen Spielmodus. Also
nenne ich es einfach Maple Story. Damit dieser
Spielmodus auf unserem Level funktioniert, müssen
Sie
zuerst alles speichern. Also Datei Alles speichern. Und lass uns zu Edit gehen. Und innerhalb der
Projekteinstellungen. Und in den
Projekteinstellungen kannst du hier oben auf Karten und Modi
klicken. Denken Sie also daran, dass wir in Karten und
Modi zuvor die
Startkarte auf unsere Matte
bearbeitet haben . Was wir jetzt tun wollen, ist auch unseren Standardspielmodus einzustellen. Dies ist die Basis,
die der Motor verwendet. Also klicke ich darauf
und klicke dann auf
GM Maple Story, das ist unsere benutzerdefinierte. Dann möchte ich, dass du auf
diesen kleinen Pfeil neben dem
ausgewählten K-Modus klickst . Jetzt müssen Sie
die Standardklassen ändern. So können wir hier sehen, dass die
Spieler-Controller-Klasse steht ,
wir haben gerade eine gemacht. Klicken Sie also hier an und
ändern Sie es in PC Maple Story. Wir müssen auch
unsere Standardteichklasse definieren, aber wir
haben gerade nicht wirklich an, also werden wir dies vorerst überspringen. Und lasst uns das schließen. Jetzt, innerhalb dieser
Karte, in der du dich befindest, musst
du auch daran denken, zu den World-Einstellungen zu
gehen. Wenn Sie diese
World-Einstellungen nicht geöffnet haben, können
Sie auf Fenster klicken. Und dann können Sie
auf diese namens
World-Einstellungen klicken , um das Fenster zu
öffnen. Aber hier in den
Welteinstellungen musst du auch
daran denken, diesen
Spielmodus zu überschreiben. Klicken Sie also hier, klicken Sie
auf GM Maple Story, und ich klicke auf
diesen Pfeil, um
sicherzustellen , dass der
Spieler-Controller korrekt ist. Genau das, worauf ich es in
den Projekteinstellungen eingestellt habe. So PCM-fähige Story. Sie können hier auch sehen, wenn Sie auf den Spielmodus
doppelklicken, sehen
Sie hier rechts in den
Klassenvorgaben. Hier rechts siehst du,
ob ich das verkleinere. Es heißt, Player-Controller
ist PC, Maple Story. Es sagte es automatisch
, weil wir
es innerhalb der
Projekteinstellungen gemacht haben . Okay, wir wollen gerade nicht wirklich hier
arbeiten, also schließen wir es. Jetzt haben wir
den grundlegenden Spielmodus und den
grundlegenden Spieler-Controller erstellt . Lassen Sie uns also in
der nächsten Lektion fortfahren und den Charakter
erstellen.
20. Blueprints für Eltern und Kinder: Jetzt ist es an der Zeit, den Charakter
hinzuzufügen. Genau wie das, was ich dir vorher
gesagt habe. Klicken Sie mit der rechten Maustaste hier und gehen Sie hier zu Blueprint-Klassen oder Klassen. Wenn Sie
hier auf alle Klassen klicken, suchen Sie nach Papier. Anstatt
diesen Charakter zu machen,
denken Sie daran, dass wir in 2D arbeiten, also müssen wir
einen Papiercharakter erstellen. Klicken Sie also
hier darauf und klicken Sie auf Auswählen. Jetzt müssen wir es etwas
nennen. Und vorerst
möchte ich Ihnen erklären, was Eltern- und
Kinderpläne sind. Also zuerst hier, lass es uns erstellen und es Charakterbasis
nennen. Jetzt haben wir
hier eine Charakterbasis und klicken wir mit der rechten Maustaste darauf. Und jetzt kann man sehen, dass
Create Child Blueprint-Klasse steht. Also lass mich es erstellen und ich möchte
dir erklären, was ich mache. Also PSA, nennen wir
es BP Player Base. Und lasst uns
hier noch eins aus der Charakterbasis machen. erneut mit der rechten Maustaste darauf und
erstellen Sie Child Blueprint Klasse. Nennen wir das
eine VP-Feindbasis. Okay, also was ich hier
mache ist, dass ich zuerst alles
speichern lasse. Was ich hier mache
, ist, dass wir einen Basischarakter
erstellt haben , und daraus habe ich mit der rechten Maustaste geklickt und untergeordnete Blaupausen erstellt. Was für untergeordnete
Blaupausen sind, ist,
wenn Sie etwas
innerhalb des Charakters codieren, wird dieser Code automatisch auf
den des Kindes übertragen. Denken Sie daran, dass die gegnerische Basis und die
Spielerbasis beide
untergeordnet sind. Was habe ich also programmieren
oder ich innerhalb der
Charakterbasis mache , wird auch auf jede Basis
angewendet
und eine Basis spielen. Dies ist sehr nützlich,
sodass Sie nicht immer
wieder dasselbe
codieren müssen. Wenn ich zum Beispiel hier etwas zitieren
möchte, hier etwas zitieren
möchte, und ich möchte, dass
dasselbe hier und das Gleiche hier ist. Das wäre
viel Arbeit und es wäre nicht so optimiert. Stattdessen habe ich
„Blueprints“ erstellt. Was auch immer ich hier
mache, wird auch automatisch
auf den Feind und den Spieler übertragen . Und zum Beispiel können
Sie auf Zeichenbasis darauf doppelklicken. Und wir haben etwas, das
als Charakterbewegungskomponenten bezeichnet wird . So können
Sie zum Beispiel drinnen jede
Bewegung des Charakters steuern. Wie schnell
sollte dein Charakter zum Beispiel laufen? Und wenn ich zum Beispiel schreibe, sagen
wir 200 statt 600. Und das Kompilieren ist nur zu sparen. Darüber werden wir
in der nächsten Lektion sprechen. Also kompilieren und speichern Sie hier. Und wenn ich das minimiere und meinen
öffne, sagen wir Player. Und ich schaue mir die Komponente der
Spielerbewegung an, du kannst sehen, dass sie automatisch auf 200
gesunken ist. Denn denken Sie daran, dass es ein
Kind von charakterbasiert ist. Was auch immer ich innerhalb
des Charakters mache, es wird
auf den Spieler angewendet. Also wenn ich
hierher zurückgehe und auf
diesen kleinen Pfeil klicke , um zur Standardeinstellung zurückzukehren, geht es zurück auf 600. Wenn ich jetzt zum Spieler gehe, kannst
du im Spieler sehen, dass er sich
auch wieder auf 600 geändert hat. Das ist also sehr nützlich. Und was wir jetzt machen wollen, innerhalb der Spielerbasis, möchten
wir hier mit der rechten Maustaste klicken. Und jetzt wollen wir die Spieler
erschaffen, denn jetzt haben wir eine Basis für die Spieler.
Klicken wir mit der rechten Maustaste. Und ich möchte
diese namens Tsarina erschaffen. Und wir haben auch einen anderen
Charakter namens Luke. Wir werden später mit ihnen zusammenarbeiten, aber wir können ihn jetzt erschaffen. Erstelle also erneut
Child Blueprint
vom Player und nenne es BP Luke. Okay, jetzt diese beiden Kinder, wenn wir etwas
in der Spielerbasis codieren, zum Beispiel die Bewegung, wollen
wir
die Bewegung hier nicht wirklich
für die for-Schleife codieren . Und dann wollen wir die
gleiche Bewegung für Serena codieren, denn diese beiden Spieler haben die gleiche Bewegung. Sie laufen auf die gleiche Weise. Sie springen mit
demselben Knopf. Klicken Sie beispielsweise
auf das Leerzeichen, um zu springen oder klicken Sie auf die
Tastaturpfeile, um herumzulaufen. Das wollen wir nicht zweimal machen. Wir müssen dies nur
innerhalb der Spielerbasis codieren. Nun wäre es nicht sinnvoll, die Bewegung innerhalb
von zeichenbasierten zu codieren. Denn denken Sie daran, dass wir eine gegnerische Basis
haben und der Feind nicht so läuft
wie Sie als Spieler, der Feind
benutzt keine Tastatur. Der Feind hat keine
Maus, mit der er sich umsehen kann, daher ist es nicht sinnvoll, die Spielerbewegung
innerhalb des Feindes zu
programmieren , weil
es sich um künstliche Intelligenz handelt. Es hat nicht wirklich eine
Tastatur, es ist kein Mensch. Es wäre also
sinnvoller,
die Spielerbewegung
innerhalb der Spielerbasis zu programmieren . Okay, jetzt
haben wir die Eltern - und Kind-Blueprints erstellt. Und noch einmal, denken Sie daran, wenn Sie jemals Hilfe
benötigen, können
Sie immer in
meinen Discord-Server gehen und ich bin mehr als bereit,
Ihnen bei all dem zu helfen. Lasst uns also mit der rechten Maustaste klicken
und einen neuen Ordner erstellen. Und ich nenne
es einfach Player. Und ich mache
einen neuen namens Feind. Also bleiben wir organisiert. Ich setze diese feindliche
Basis anstelle des Feindes. Wir werden später KI
erstellen. Und dann bringt Luke, die Spielerbasis und
Serena in den Spieler. Jetzt klicken
wir nun auf
Datei und Alles speichern. Und lasst uns
zur nächsten Lektion übergehen.
21. Übersicht über die Blueprint: Wir fahren fort, lassen Sie uns einen Überblick über den
Blueprint-Graph verschaffen. Gehen wir also zu unserem
Blueprints-Ordner innerhalb des Spieleratlas. Geh einfach in diese, die Spielerbasis
genannt wird. Jetzt wird es so
geöffnet, aber Sie müssen auf Vollständigen Editor
öffnen klicken , einen
Blueprint-Editor. Und das passiert
immer dann, wenn Sie noch
keinen Code hier haben . Klicken Sie also hier an und Sie können sehen, dass dies der Blueprint-Graph ist. Und hier drin
hast du den Event Graph. Und innerhalb des Ereignisdiagramms schreiben Sie hier Ihren
gesamten Code. Sie können hier sehen, dass Unreal
Engine
Ihnen standardmäßig sehr einfache
Ereignisse zur Verfügung stellt . Um
innerhalb des Ereignisdiagramms zu navigieren, können
Sie mit der rechten Maustaste gedrückt halten
und Sie können
so herumschwenken und mit dem
Mausrad vergrößern und verkleinern. Sie können auch mit der rechten Maustaste klicken
, um Funktionen hinzuzufügen. Später werden wir dies
verwenden, um Code hinzuzufügen,
aber machen Sie sich darüber keine Sorgen. Das sieht wahrscheinlich
überwältigend für dich aus. Es gibt viele
Dinge, die Sie hier hinzufügen
können,
aber wir werden während des gesamten
Kurses
damit arbeiten . Abgesehen von dem Ereignisdiagramm,
in dem wir den Code schreiben, haben
wir auch ein Ansichtsfenster. Und im Ansichtsfenster fügen wir hier unsere Artikel hinzu. So können Sie hier
auf der linken Seite sehen,
dass wir etwas
namens Komponenten haben. Und innerhalb dieser
Komponentenregisterkarte hier, zum Beispiel dem Sprite, werden
wir hier ein
Flipbook hinzufügen, damit wir im Detailbedienfeld sehen
können, genau wie ich es dir
hier in diesem Detailfenster erzählt habe wenn wir
hier in unserem Level auf Dinge klicken, können
wir Elemente
bearbeiten und beispielsweise
den Standort, die
Drehung, die Skala bearbeiten. Wir können auch Dinge
über die Kollision bearbeiten. Das ist das Gleiche hier in der Blueprint-Klasse. Wenn wir auf eine Komponente klicken, können
wir
innerhalb der
Details Einstellungen zu dieser Komponente hinzufügen . So zum Beispiel das Sprite. Später werden
wir den Charakter hinzufügen. Und Sie können sehen, wenn ich auf
dieses
Quellen-Flipbook klicke , können Sie sehen, wir die Animationen für den Charakter sehen können dass
wir die Animationen für den Charakter sehen können,
den wir
in einer früheren Lektion erstellt haben. So wie zuvor. Wir haben ein Detailfenster
, in dem wir
Einstellungen bearbeiten können , und später
werden wir weitere Komponenten hinzufügen. Und dies kann durch
Klicken auf diese Schaltfläche „Hinzufügen“ geschehen. Und du kannst sehen, dass du eine Menge Dinge
hinzufügen kannst. Zum Beispiel ein Würfel, eine Kugel. Sie können Beleuchtung,
Audio und viele
Dinge hinzufügen . Hier unten. Wir können unsere Ereignisse sehen, die wir
erstellt haben, in unserem Event Graph. Wenn Sie also hier zum
Ereignisdiagramm zurückkehren, können
Sie sehen, dass Unreal Engine
Ihnen diese standardmäßig zur Verfügung stellt. Und Sie können auch diese
Ereignisse namens Begin Play sehen, Schauspieler, beginnen sich zu
überlappen und zu nehmen, und Sie können sie hier sehen. Später, wenn wir Funktionen hinzufügen, können
Sie
unsere Funktionen auch hier sehen. Sie können die Makros sehen, Sie können Variablen sehen, und ich werde
diese in einer späteren Lektion erläutern. Und danach haben wir
diese Toolbar auch hier drüben. Das Wichtigste ist
dieser Button namens compile. Und wann immer du irgendeinen Code schreibst, also wenn ich einfach
etwas zum Spaß schreibe, kannst
du hier sehen, dass es dir
ein Fragezeichen gibt und es heißt, dass
Dirty neu kompiliert werden muss. Es sagt Ihnen also, dass
Sie auf
diese Schaltfläche klicken müssen , wenn Sie mit dem Schreiben Ihres Codes fertig
sind, ich muss auf diese Schaltfläche klicken. Und dieser Button
ist, er prüft nur, ob der Code, den Sie geschrieben
haben, gut ist oder nicht. Wenn ich also darauf klicke und es mir dieses Häkchen
gibt, bedeutet das, dass ich
keine Fehler in meinem Code habe
und bereit bin,
Play zu drücken und mein Spiel zu spielen. Aber wenn du etwas falsch machst, wird
es dir ein
Kreuz geben und es wird dir sagen, dass du etwas falsch
gemacht hast. Und wenn Sie einen Fehler erhalten, wird
es Ihnen
hier unten und die Compiler-Ergebnisse geben. Sie können hier sehen, dass es gelungen ist. Im Moment
haben wir keine Fehler. Wenn Sie jedoch einen Fehler haben, wird
er hier unten angezeigt und es wird Ihnen sagen, was
Ihr Fehler ist. Jetzt werde ich diesen Knoten
gerade
auswählen , der
nur zum Testen gedacht war. Ich klicke auf „Löschen“. Und wieder, hier in der Symbolleiste, können
Sie Ihr Projekt speichern. Natürlich können Sie nach Blaupausen
suchen. Sie können zu den
Klasseneinstellungen
wechseln, zu den
Standardeinstellungen der Klasse wechseln und so weiter. Und wir werden mit all
dem während dieses Projekts arbeiten .
22. Events und Funktionen: Werfen wir einen Blick auf
Ereignisse und Funktionen. Ich gehe zurück
zu meiner BP-Spielerbasis. daher standardmäßig Unreal Engine gibt Ihnen diese Standardereignisse und Ereignisse sind immer rot
markiert. Also fahre ich
jetzt mit dem Mauszeiger darüber und
klicke auf meiner Tastatur auf Löschen. Ich brauche sie momentan nicht. Aber du hast diesen, den ganz grundlegenden namens begin play. Dieses Ereignis. Es sagt dir, was ich tun soll wenn ich
hier auf das Spiel klicke,
wann immer, wann immer ich
anfange, mein Spiel zu spielen. So zum Beispiel sehr einfach. Sie können es von
diesem Ausführungspin
ziehen und „Drucken“ herausziehen und sagen. Also auf der Suche nach Druck. Dies ist die sehr grundlegende Funktion , die Sie
von Anfang an lernen werden, und sie druckt nur etwas
Text auf den Bildschirm. Klicken Sie also auf diese Funktion. Das ist also eine
Funktion und Sie können sie hier oben an der f
sehen. Das ist also ein Ereignis, das ist eine Funktion. Sie
benötigen immer, immer in Blueprint Ereignisse, um Code auszulösen. Und der Code besteht
aus mehreren Funktionen. immer ein Ereignis benötigen,
um Code sonst
auszulösen, weiß Ihr Motor nicht, wann
Sie diesen Code auslösen möchten. Wenn ich das also getrennt hätte
und du kannst das tun,
indem du Alt auf deiner
Tastatur hältst und hier klickst. Dies wird sie trennen. Wenn ich wie
hier gehe, der Motor, werden
wir nie wissen, wann wir diesen Code abfeuern
sollen. Wenn Sie kein
Ereignis haben, das damit verbunden ist, ziehe
ich es hierher zum anderen
Ausführungsstift und verbinde es, indem ich auf kompiliert klicke. Denken Sie daran, das zu tun. Sie können auch hier klicken, anstatt ständig zu kompilieren und zu
sparen, anstatt ständig zu kompilieren und zu
sparen,
diese
drei Schaltflächen sind Punkte und sagen Speichern beim Kompilieren, nur
erfolglos. Und was das bedeutet, ist,
wann immer Sie jetzt kompilieren, automatisch für Sie gespeichert,
wenn dieses Häkchen angezeigt wird. Was jetzt passiert,
ist bei Begin Play, mein Bildschirm wird Hallo sagen. Ich werde das
ein wenig minimieren und du
musst hier nach oben links schauen. Klicken Sie also auf Play
und Sie können sehen, dass nichts passiert. Und das ist eigentlich ein
kleiner Fehler von mir. Lasst uns also tatsächlich die Spielerbasis
hinzufügen. Denken Sie daran, dass ich
Ihnen tatsächlich gesagt habe, dass wir den Teich hinzufügen wollen
. Lasst uns also hier auf
das Kreuz klicken. Lasst es uns jetzt machen,
bevor wir es vergessen. Um also
die Projekteinstellungen zu bearbeiten und in den Karten und Modi, die hier oben
gehen,
denken Sie daran, dass ich Ihnen gesagt habe, dass
wir dies
später hinzufügen müssen, wenn wir einen
Charakter erstellen und jetzt einen haben. Also klicke hier und lass uns unseren
Charakter vorerst Serena machen. Wir werden es programmieren Serena. Also werden wir momentan keine Spielerbasis erstellen
. Also wollen wir Serena später
in die Welt spawnen. Also wähle ich einfach meine
Standard-Gedichtklasse aus, nur Serena. Aber später werden wir einen
Charakterauswahlbildschirm haben. Und wenn wir
das haben, schaffen wir
es einfach zu keiner, denn dann wählt
der Spieler den Charakter aus und
er wird
entweder als Zarin oder
Luke spawnen entweder als Zarin oder , je nachdem,
was er ausgewählt hat. Aber im Moment haben wir keinen
Charakterauswahlbildschirm. Also werde ich standardmäßig
als Tsarina spawnen. Ich klicke auf Crosshair, gehe zu den World-Einstellungen
und stelle sicher, dass hier und im gesamten Spielmodus
Serena auch hier angewendet wird. Klicken wir nun noch einmal auf Play. Und du kannst sehen, wie mein
Bildschirm sagt, hallo. Jetzt fällt er durch den Boden. Du siehst hier, dass ich durch den Boden
ziehe weil ich
keinen Spielerstart habe. Und wir können auch einen hinzufügen, nur damit wir hier nicht durch
den Boden fallen. Und sie fügen schnell einen Button hinzu, gehen zu Basic und fügen
diesen Spielerstart hinzu. Hier können
wir also hier anfangen. Und wenn Sie auf G klicken, können Sie daran denken, die Symbole ein
- und auszublenden. Dies ist der Spielerstart. Ich werde es hier
in meiner Welt platzieren, lass uns das y 0 machen. Also ist es hier vorne. Und dann können wir, ich werde es
jetzt kleiner machen , denn wenn Sie
diese Kapsel in
der Mitte Ihrer Kollisionskacheln haben , wird
es schlechte Größe sagen. Ich werde die Skalierung hier
unten auf 0,25,25,25 reduzieren. Und dann ziehe ich es einfach hier
unten in Bodennähe. Wenn wir jetzt auf Play klicken, können
Sie sehen, wo
durch den Boden fällt, aber wir
fallen nicht den ganzen Weg weil wir unsere Kollision haben. Okay, also zurück zu den Blaupausen haben wir jetzt Hallo
gesagt und du kannst hier oben links
sehen,
dass auf meinem Bildschirm Hallo steht. Der Code funktioniert
gerade und er
durchläuft diese Spielerbasis. Andere Ereignisse, die wir haben, sind
etwas, das als Ereignis-Tick bezeichnet wird. Sie können also hier danach
suchen, wenn Sie mit der rechten Maustaste in das Diagramm klicken,
wie ich es Ihnen zuvor gesagt habe, können
Sie hier danach suchen. Und wenn Sie nur eine Veranstaltung schreiben, können
Sie alle Ereignisse sehen, die wir auf unseren Code anwenden können. Zum Beispiel ein Ereignis-Hit oder wenn Ihr Schauspieler beginnt, etwas zu
überlappen, oder wenn Ihr Charakter gesprungen ist, möchten
Sie etwas tun. Vielleicht haben wir das
gerade,
wenn du anfängst, das zu spielen . Und vielleicht
heißt das Event Tick, das
möchte ich jetzt zeigen. Dieses ist etwas, das
du niemals benutzen solltest. Und wann immer Sie es benutzen, liegt
dies wahrscheinlich daran,
dass Sie es irgendwann verwenden müssen, aber versuchen Sie dies zu vermeiden, verwenden Sie es
niemals in Ihrem Spiel. Was ich damit meine,
ist, dass dieser deinen Code 60
Mal pro Sekunde
ausführt. Wenn ich also auf
Control X klicke, um
dies zu kopieren , und Control V, um es hier
einzufügen. Wenn ich das hier verbinde,
so dass das Ereignis krank ist, kannst
du sie sehen, wenn ich so
oft
auf Diesen Platz spielen klicke und es spielt
60 Mal pro Sekunde. Es kann sich also vorstellen, wenn Sie Code
haben, der 60
Mal pro Sekunde gespielt
wird , wird
Ihr Spiel zurückbleiben. Und wenn Sie
mehrere davon haben, wird es
Ihrem Spiel mehr
gefallen und die Spieler werden das Bein spüren. Also versuche das niemals, niemals, niemals zu benutzen. Es gibt immer eine
bessere Lösung als die Verwendung eines Ereignisses sechs. Ich lösche das hier. Ich benutze es nie in meinen Spielen. Und es gibt einige Zeiten,
in denen du es benutzen musst, aber das ist immer dann, wenn dein Spiel sehr
groß ist und du in
eine Situation kommst , in der du eigentlich nichts
anderes tun
kannst, als dies zu tun. Aber ich würde sagen, ein
sehr großes Spiel, benutze es nur einmal. Also benutze das niemals. Versuche es zu löschen. Denk nicht einmal darüber nach, dieses Ereignis. Und wie Sie sehen können,
gibt es viele Funktionen, die Sie Ihrem Spiel hinzufügen
können. Wir haben Datentabellen, also haben wir Bräutigam, wir haben Schichten und so weiter. Also viele Dinge, die Sie
hinzufügen können , werden wir wahrscheinlich 10% von all dem
verwenden. Sie sich also keine
Sorgen um all das, obwohl es überwältigend
aussieht. Auch wenn ich hierher gehe und Print-String
schreibe, gibt es eine andere
Funktion namens Delay. Also kann ich hier verzögern. Wenn ich Verzögerung schreibe
, können wir zum Beispiel um zwei
Sekunden verzögern. Und dann können wir
eine andere Zeichenfolge drucken. Und hier nenne ich es fertig, so etwas. Und du kannst auf diesen
Pfeil klicken, um ihn länger spielen zu lassen. Zum Beispiel möchte ich
es zehn Sekunden lang auf meinem Bildschirm spielen . Ich möchte die Farbe rot machen. Sie haben also
einige Variablen, die Sie ändern können. Und ich
kompiliere, denk daran, das zu tun. Und dann kannst du
auf Play in deinem Spiel klicken. Ich kann sagen, es heißt hallo
und nach zwei Sekunden wird
es „fertig“ sagen. So sehr einfach,
das ist Blueprint. Sie können sehen, dass es sehr
einfach ist, damit zu arbeiten. Und sobald Sie die Grundlagen erlernt
haben, können Sie
sehr mächtige Spiele erstellen. jetzt in der Pflanze Lassen Sie uns jetzt in der Pflanze alles
löschen, kompilieren und speichern,
und lassen Sie uns weitermachen.
23. Variablen: Wir
richten den Charakter weiter ein. Sprechen wir über das Letzte,
was Variablen genannt wird. Und das ist das
Hauptprinzip bei Programmierung in Blaupausen und welcher Sprache
Sie schreiben. Gehen wir also
wieder zur Spielerbasis und nach links,
wie Sie zuvor gesehen haben,
gibt es etwas, das
als Variablen bezeichnet wird. Und ich möchte, dass Sie sich Variablen als
Container
vorstellen , die
irgendeine Art von Informationen enthalten. Sie können zum Beispiel enthalten, wie viel gesünder
Charakter hat, welche Art von Waffe
Ihr Charakter hält, Ihre Bewegungsgeschwindigkeit,
ob Sie Münzen haben, die genug sind, um einen Gegenstand im Shop zu kaufen oder nicht. Also ein Container, der enthält
wie viele Münzen du hast. Variablen sind also Container , die
bestimmte Informationen enthalten, unabhängig von Informationen, die
Sie speichern möchten. Und um eine Variable zu erstellen, müssen
Sie auf
diese Plus-Button klicken. Und wenn Sie eine Variable erstellen, müssen
Sie ihr einen Namen geben. Und auf der rechten Seite sehen Sie
alle Arten von Variablen. Erstellen Sie beispielsweise einen booleschen Wert. Und nennen wir das
boolean hat Waffe. Und normalerweise beginne ich
meine Booleans mit einem b. Und das liegt daran, dass dies
normalerweise das ist , was
in C plus plus gemacht wird. Und wenn Sie dies herausziehen, können
Sie es in das Diagramm ziehen. Und wenn Sie loslassen,
können Sie
diese Variable entweder auswählen ,
um sie auf etwas Bestimmtes festzulegen. Also lasst uns einfach diese Variable bekommen. Jetzt haben wir diese Variable
und wenn Sie kompilieren, können
Sie hier unten
im Detailbedienfeld sehen, Sie haben einige Einstellungen, die
Sie dafür ändern können. Sie können den
Variablentyp ändern, Sie können den Namen ändern
, den wir gerade gesagt haben. Sie können eine Beschreibung
und Replikation hinzufügen. werden wir später
anfassen. Das ist Multiplayer. Und jetzt heißt es bitte
kompiliere die Blaupausen. Und wir werden hier
kompilieren. Und es wird Ihnen zeigen,
wie der Standardwert ist. Was ein Boolescher Wert ist,
ist etwas, das entweder wahr oder falsch sein
kann. Es kann also entweder
falsch sein oder ich kann es nehmen und der
Standardwert wird wahr sein. Zum Beispiel können wir prüfen, ob der Spieler die
Waffe hat oder nicht. Und wir können vielleicht
standardmäßig anfangen, falsch zu sein. Der Spieler hat also
nicht die Waffe, aber später, wenn der
Spieler die Waffe aufhebt, werden wir
diese auf „true“ setzen. Okay, also nehmen
wir zum Beispiel hier ein Beispiel. Lass uns das
Begin-Play-Event noch einmal machen. Wenn Ihre Rechte beginnen,
spielen Sie hier weiter. Nehmen wir das jetzt und
wir können Print-String sagen. Wenn wir diese Zeichenfolge drucken, was Sie tun können,
anstatt Hallo zu sagen, können
Sie diese ziehen
und hier anschließen. Und es wird
Ihnen sagen, dass ich
diese boolesche Variable
in eine Zeichenfolge umwandeln werde , da eine Zeichenfolge tatsächlich auch
eine Variable ist. Sie können hier sehen, dass es
eine Variable namens string gibt. Sie können
dies also ziehen und es wird in eine Zeichenfolge konvertieren, was nur in Text bedeutet. Und ich drucke
diesen Text auf den Bildschirm. Wenn Sie
die Variable jetzt anschließen, können
Sie jetzt auf Play klicken. Und es wird falsch sagen, und das ist der Wert
des Booleschen. Sagen wir später, sagen wir
nach fünf Sekunden. Also mache ich den
Delay-Knoten und mache fünf Sekunden. Nach fünf Sekunden möchte
ich eigentlich sagen, dass der Charakter die Waffe in die
Hand genommen hat. Also kann ich das ziehen
und dann set sagen. Ich kann es hier verbinden
und auf true setzen. Lassen Sie uns nun
die Druckzeichenfolge noch einmal machen. Also klicke ich hier auf
Control C, Control V. Und ich verbinde jetzt
meine Variable, den Wert. Und es wird
das auf den Bildschirm drucken, kompilieren und auf Play klicken. Es wird also falsch sagen. Und nach fünf Sekunden wird
es hier oben
wahr sagen, okay? Es wird also falsch sagen
und dann wird es wahr
sagen, weil wir
dies später auf wahr setzen. Und so setzen wir
Variablen dynamisch. Erstens, der Spieler
geht später in unsere Waffe, wir werden zum Beispiel die
Waffe auf wahr setzen. Also lasst uns das alles
vorerst löschen. Wir haben also diesen booleschen Wert
, der entweder
wahr oder falsch sein kann , und Sie können die Dinge damit
überprüfen. Sie haben
die anderen, Sie haben eine Voreingenommenheit, Sie haben eine Ganzzahl,
Ganzzahl 64 und einen Float. All dies für
unsere numerischen Werte. Versuchen wir zum Beispiel, eine Ganzzahl
zu erstellen. Ziehen wir es raus. Schon wieder. Klicke auf „Abrufen“. Anstatt ständig auf
Abrufen und Einstellen zu klicken, können
Sie auf der Tastatur auf der Tastatur auf der Tastatur klicken und ziehen und
gedrückt halten. Dies wird es automatisch bekommen. Sie können auch Alt auf der
Tastatur halten und klicken und ziehen, und
dies wird automatisch eingestellt. Anstatt also auf Set zu ziehen und zu
klicken, können
Sie entweder die Strg- oder Alt-Taste
gedrückt halten. Okay? Alle diese numerischen
Werte, also die Ganzzahl, ganze Zahl 60 für den Float, das Byte, all dies
sind numerische Werte. Und wenn ich
kompiliere und hier darauf klicke, können
Sie sehen, dass es eine Zahl ist, es braucht eine Zahl in dieser, wir könnten vielleicht
den Namen ändern, klicken Sie auf F2, um den Namen zu ändern. Und dieser könnte eine Menge an Münzen
sagen. Vielleicht
sammeln wir also Münzen. Und ich kompiliere sagt bitte
kompiliere das Blueprint-Kompilieren. Und hier siehst du
die Anzahl der Münzen. Also beginnen wir mit 0, und
als wir in Münzen gegangen sind, werden
wir dieser Variablen Münzen
hinzufügen. Wir haben also ein paar Betreiber. Und wenn Sie darauf klicken
und ziehen, können
Sie
beispielsweise Plus speichern. Und du kannst sehen,
dass wir Münzen hinzufügen können. Wenn Sie Minus schreiben, können
Sie Münzen subtrahieren. Wenn Sie das geteilte Zeichen schreiben, können
Sie sehen, dass es dividieren heißt. Wir haben auch das
Multiplizieren wie diese. So können wir zum Beispiel Plus so
sagen. Und in Maple Story
kannst du die Münzen sammeln. Ich glaube, es heißt Micelles. Micelles, ich bin mir nicht sicher. Ich bin mir nicht ganz sicher
, wie es heißt. Nennen wir es einfach Coins. Und zum Beispiel kann ich hinzufügen, ich
jedes Mal, wenn
ich darauf gehe, zehn Münzen wie diese hinzufügen kann. Wenn ich jetzt einfach von hier ziehe
und eine Druckzeichenfolge schreibe, kann ich diese
jetzt mit meiner Druckzeichenfolge verbinden, und es wird die ganze Zahl
in eine Zeichenfolge
konvertieren , die eine Textvariable
ist. Jetzt wird es zehn ausdrucken. Lassen Sie mich die
Dauer hier also noch viel mehr machen. Lass mich die Farbe Rot machen. Diese Kompilierung speichern. Und wenn ich auf Play klicke, siehst du
hier oben zehn, weil ich zehn Münzen habe. Die ganze Zahl. Sehr cool. Du kannst Zahlen schreiben. Wir können diese Operatoren verwenden
, um diese Variablen zu ändern. Und ein anderer variabler
Typ ist der Float, sehr wichtig, können wir
zum Beispiel die Ebenengesundheit sagen. So können wir es nennen. Wir können es herausziehen, Kontrolle
halten und
es hier automatisch rausholen. Wenn Sie also jetzt kompilieren, das Coole an
unserem Float im Vergleich zu ist
das Coole an
unserem Float im Vergleich zu
einer Ganzzahl, dass ein Float Dezimalstellen enthalten
kann. So
kann ich zum Beispiel hier 50.5 schreiben. Und der Standardwert,
wie für die Münzen, wenn ich versuche,
Dezimalstellen zu schreiben, zum Beispiel 50,5, wird automatisch in 50
konvertiert, da Sie keine
Dezimalstellen innerhalb eines ganzzahlige Zahl. Wann immer Sie also eine
Zahl mit Dezimalstellen wünschen, müssen
Sie einen Float auswählen. Dies ist das einzige, aber wenn Sie
etwas wünschen, das
eine volle Zahl ohne
Dezimalstellen ist , können
Sie eine ganze Zahl
oder etwas, das
größer und eine ganze Zahl 64 ist, wählen . Was den Biss angeht, kannst du
nur die Nummer einstellen. Wenn ich die Variable hier ändere. Was den Biss betrifft, können
Sie
die Zahl nur auf maximal 255 ändern . Für die
Spielergesundheit ist es jetzt ein Byte. Auch wenn ich
Dezimalstellen schreibe, wird
es es nicht akzeptieren. Es ist nur der Float, der Dezimalstellen
akzeptiert. Und dieser kann
die Zahl 200 nur bis zu 255 halten. Wenn ich also 256 schreibe, wird
es auf 255
geändert, damit ich eine beliebige
Zahl schreiben kann, die Knie 255. Aber wenn ich oben etwas schreibe, wird
es es nicht akzeptieren. Sie können sich also vorstellen
, wie diese verwendet werden. Wenn ich zum Beispiel einen
Charakterauswahlbildschirm habe und ich habe, sagen
wir mal, ich habe vielleicht 60
Frisuren und Maple Story, kann
ich den Biss benutzen. Aber wenn ja,
sagen wir am Sonntag, ich habe aus irgendeinem Grund
600 Frisuren. Ich kann keinen Bissen
mehr gebrauchen, weil ich nur bis zu 255 Frisuren
haben kann . Okay,
das sind also die numerischen Werte und wir haben auch andere Werte. Wir haben den Namen, die Zeichenfolge, den Text und fragen nach dem
Namen. Lasst uns das schaffen. Und wenn ich den Namen hier rausziehe, können
Sie sehen,
dass jede
einzelne Variable , die wir erstellen,
unterschiedliche Farben hat. Wenn ich also hier oben nur
Zufallsvariablen erstelle und diese
in eine Zeichenfolge
ändere, ändere diese in einen
Text, Whoops, Texte. Und wir können die rausziehen. Wir können
diese eine Erfolgs-ID beispielsweise nennen. Wir können, wir können den
zweiten Servernamen nennen, und wir können die
letzte Chat-Nachricht aufrufen. Okay, also der Unterschied
zwischen diesen können Sie kompilieren und Sie können sehen wenn Sie auf
diese Variablen klicken, es sind nur einige Texte,
die Sie hier schreiben können. Das Gleiche gilt für
den Servernamen und das Gleiche gilt für den Spieler. Die Spieler-Gesundheit Ashley, wir müssen kompilieren. Kompilieren Sie das
ist der falsche. Stattdessen ziehe ich
das hier. Und Sie können hier
diese Erfolgs-ID sehen, es heißt momentan keine. alle sind also
Textvariablen und Sie können hier eine Art
von Texten schreiben. Der Unterschied zwischen diesen besteht
darin, dass Sie
diese Namensvariable immer wählen müssen ,
wenn Sie eine
Art von Texten haben , die sich im Spiel
nie ändern. Zum Beispiel die Erfolgs-ID. Vielleicht heißt eine Leistung
, die Sie haben ID 273 oder welche
Zufallszahl Sie haben. Mit dieser ID müssen Sie sie im Spiel nie ändern. Und hier kannst
du einen Namen benutzen, denn was auch immer du hier schreibst. Kann im Spiel nie geändert werden, aber dies ist
bei dem Servernamen nicht der Fall. Wenn ich zum Beispiel Maple Story
schreibe, besten Server, melde dich jetzt an
oder so ähnlich. Jetzt diesen Text, den ich hier schreibe, können
Sie ihn ändern. Zum Beispiel ist ein und Beispiel ich Ihnen geben kann, ein Servername. Wenn der Player
dies also als Servernamen schreibt, können
wir
den Text, den der
Spieler berechtigt, hier tatsächlich ändern . Wenn Sie aus dieser
String-Variable ziehen und nur eine Zeichenfolge schreiben, können
Sie alle Funktionen sehen ,
die Sie mit einer Zeichenfolge verwenden
können. Wenn Sie nach oben scrollen, können
Sie sehen, dass dies die Kategorie namens String
ist. Und hier haben Sie
alle Funktionen
, die Sie
mit dieser Zeichenfolge verwenden können. So können Sie beispielsweise prüfen, ob der geschriebene Text hier leer ist. Wenn die Variable also leer ist und leer ist,
können Sie die rote sehen. Denken Sie daran, dass es
tatsächlich ein boolescher Wert ist, also kann es entweder
wahr oder falsch sein. Wenn der
Servername beispielsweise leer ist, geben
Sie dem Spieler einen Fehler an ,
der ihm auffordert, einen Servernamen
zu schreiben, da Sie keinen
leeren Servernamen erstellen können. Wir können es wieder ziehen, wir können String
schreiben und wir
können es noch einmal überprüfen. Sie können beispielsweise alle Zeichen in
Kleinbuchstaben oder in Großbuchstaben setzen. Oder Sie können den
Text sogar teilen. Und vielleicht etwas. Wofür ich es verwende ist, wenn der
Spieler ein schlechtes Wort schreibt, zum Beispiel das Innere, und ich möchte nicht, dass der Spieler das im Spielernamen
schreibt. Ich kann hierher ziehen. Und ich kann „finden“ sagen. Es gibt etwas hier in dieser Zeichenfolge namens
find substring. Und ich kann nach innen schreiben. Das will ich hier auf dem Video nicht wirklich machen
. Und es wird
dieses Wort innerhalb
des Spielerservers finden . Was auch immer der Spieler hier geschrieben
hat, er wird dieses Wort finden. Und wenn ja, kannst du etwas damit
machen. Und in diesem Fall können wir
den namens replace verwenden. Also können wir auch ersetzen, stattdessen können
wir das einfach tun, den Teilstring
finden. können wir auch tun. Ersetzen Sie also das Innere
durch etwas anderes und Sie können es einfach
leer lassen und es wird zeigen dass es durch nichts ersetzt wird, was bedeutet, dass es das Wort löscht und hier
nichts hineinsteckt. Sehr cooles Zeug. Sie können die
String-Variablen nach Belieben
ändern, aber das können Sie hier nicht tun. Wenn Sie davon ziehen
und den richtigen Namen kennen, können
Sie im Namen sehen, dass Sie nicht viel haben, was Sie tun können. Sie haben also nicht das ist leer, Sie haben nicht den Ersatz. Sie können also nur Strings ändern
und nicht die Namensvariable. Das Letzte, was Sie haben,
ist der Text und der Text. Das einzige, was ich
dazu anders als
die Zeichenfolge sagen
möchte , ist,
dass Texte Sie lokalisieren können, damit Sie sie
in verschiedene Sprachen übersetzen können. Angenommen, Sie möchten Ihr Spiel ins
Deutsche, Japanische oder Chinesische
übersetzen . Egal welchen Text Sie übersetzen
möchten, Sie müssen eine Textvariable verwenden,
unabhängig davon, wie Sie in
eine Zeichenfolgenvariable schreiben. Dies kann
später im Spiel nicht übersetzt werden. Bevor Sie also anfangen, Ihr Spiel
zu machen, denken Sie darüber nach, ob ich mein Spiel ins Deutsche
übersetzen möchte? Wann bin ich fertig? Wenn ich möchte, welchen Text
Sie übersetzen möchten, müssen
Sie ihn
in eine Textvariable schreiben. Was den Servernamen angeht, glaube
ich nicht, dass wir den Servernamen
übersetzen müssen. Nehmen wir zum Beispiel an, wir
haben unser Spiel beendet. Es ist nicht wirklich sinnvoll
, einen Servernamen zu übersetzen. Das ist genau was, unabhängig von
den Spielerrechten. Aber was eine
Chat-Nachricht angeht, sagen wir zum Beispiel, jemand sagt:
Hallo, wie geht's dir? Oder vielleicht sagt ein NPC das? Und jetzt wollen wir diese Botschaft ins
Japanische
übersetzen , weil jemand aus Japan sehen muss,
was das bedeutet. Also werden wir das in Japanisch umwandeln. Aber wenn du das hier
hineinschreibst ,
kannst du es nicht übersetzen. Sie müssen es
in eine Textvariable schreiben. Und dann
fragst du vielleicht, warum benutzen
wir das
nicht ständig? Warum müssen wir
das oder das überhaupt benutzen? Und das dient zur Optimierung. Der Name verbraucht weniger Speicher
und kommt dann die Zeichenfolge. Und derjenige, der am
teuersten ist, ist der Text. Natürlich
wird es
nichts beeinflussen, wenn Sie nur
ein oder zwei in Ihrem Spiel verwenden. Aber wenn du ein großes Spiel
hast, arbeitest du seit drei Jahren und du
benutzt es nur die ganze Zeit. Natürlich wirkt sich das
auf dein Spiel aus. Dieser benötigt also den
geringsten Speicher. Also versuche immer damit zu gehen. Wenn Sie Texte haben, die sich beispielsweise
nie ändern, eine Erfolgs-ID, sondern danach eine Zeichenfolge
verwenden. Und zum Beispiel kannst du es auch für einen Spielernamen
verwenden. Da der Spielername wieder der Name ist, müssen Sie den Namen
ändern. Wenn sie ein schlechtes Wort schreiben, müssen
Sie in ihrem Namen danach suchen
. Und
wenn Sie möchten, dass Ihr Spiel übersetzt
wird und Sie Texte
haben, die übersetzt werden
müssen, müssen Sie es schreiben in eine Textvariable
schreiben. Okay, so genug darüber. Lassen Sie uns das vorerst löschen. Und wieder können Sie
mehr Wertvariablen erstellen. Und die letzten, die wir haben, sind der Vektor, der Rotator
und die Transformation. Wir können dies später
im Projekt verwenden. Ich werde das vorerst nicht
behandeln, aber für den Vektor
sehr, sehr einfach,
wenn Sie
ihn gerade erstellen und auf kompilieren
klicken. Sie können sehen, dass es
mit drei Zahlen kommt. Und normalerweise
verwenden wir ihn hier, wofür
wir einen Vektor verwenden. Wenn Sie hier auf irgendetwas klicken, sehen
Sie an dem Ort, an dem wir normalerweise einen Vektor verwenden, um einen Standort zu ändern oder nach einem Ort zu suchen, da der Standort drei Zahlen hat. Und
dafür verwenden wir normalerweise Vektoren , weil es drei Zahlen
hat. Zum Beispiel können wir den Speicherort der
Zeichen festlegen , wenn
sie ein Portal nutzen, wir können es auf einen
bestimmten Ort einstellen. Das Gleiche gilt für den Rotator. Wenn ich dies in einen Rotator ändere, hat
es drei Werte, genau wie hier
im Detailbedienfeld. Immer wenn ich auf irgendetwas klicke, haben
sie eine Rotation. Dies ist also ein Rotator und Sie
können eine Drehung einstellen oder erhalten. Und als letztes hast
du eine Transformation. Und dies wird verwendet,
wenn
Sie Dinge in die Welt bringen. So
spawnen Sie zum Beispiel das Zeichen
in die Map. Dann müssen Sie den
Speicherort der Zeichen
festlegen , an dem Sie das Zeichen spawnen möchten
, welche Rotation dieses
Zeichen haben sollte und welche Skala das
Zeichen haben sollte. Okay,
das waren also die wichtigsten Variablen und ich werde sie alle löschen. Wir werden
mehr benutzerdefinierte Variablen erstellen. Und ich möchte diese sehr
grundlegenden zunächst behandeln, denn das wird es Ihnen später
sehr leicht machen. Also lösche ich hier
alles. Lassen Sie uns kompilieren. Jetzt. Lassen Sie uns mit
der Einrichtung des Charakters fortfahren und Sie werden all dies Schritt für Schritt
in diesem Kurs
lernen.
24. Einrichten der Figur: Um unseren Charakter einzurichten, gehen
wir zuerst zu
unserem Blueprints-Ordner zurück und
lassen Sie uns Serena einrichten. Anstelle von Spieler haben wir
diese Blueprint-Klasse
namens Tsarina erstellt . Dies war ein Papiercharakter und dies war ein Kind
der Spielerbasis. Hier müssen
wir für BP Tsarina diese Vermögenswerte hinzufügen. Denken Sie daran, dass wir diese
Flip-Bücher erstellt haben und diese zu unserem
Blueprint-Kurs
hinzufügen können . Gehen Sie also zurück zum
Player-Ordner klicken Sie auf Serena,
wenn dies geöffnet wird, liegt
dies daran, dass es leer ist. Das Detailbedienfeld
füllt also den gesamten Bildschirm aus, sodass Sie auf
Alle Blueprint-Editor öffnen klicken müssen. Und wir sind hier drin. Sie können sehen, dass wir gerade nichts codieren
müssen, also gehe ich zum Ansichtsfenster. Hier. Serenas Flipbook wird
erscheinen. Sobald du es hinzufügst. Du fügst die Flip Books
hier auf der linken Seite hinzu. Sie können sehen, dass wir ein
Sprite haben und wir können hier tatsächlich Serenas
Flipbook
hinzufügen. Wir haben auch
Charakterbewegungen, bei der wir die Bewegung später
kontrollieren können , wenn wir Bewegung hinzufügen. Klicken wir also auf das Sprite
und hier im Flipbook
gibt es zwei Möglichkeiten
, ein Flipbook hinzuzufügen. Sie können entweder
hier klicken und es auswählen. Dies wäre momentan der
einfachste Weg. Oder wenn Sie dies ein wenig
minimieren und es ein
bisschen größer machen. Sie können auch zu
Ihrem Assets-Ordner wechseln, und Sie können auch klicken und
ziehen, und Sie können sehen dies für Sie
hervorgehoben wird, und
Sie können es diesem Slot hinzufügen. Also überlassen Sie, wenn Sie es auf diese oder diese Weise
hinzufügen möchten. Ich sehe, dass wir
unser Flipbook hinzugefügt haben und
das wird schon funktionieren. Wenn Sie es also einfach hier testen, klicken Sie einfach auf
Kompilieren und Speichern. Und wieder stellt es sicher
, dass Sie hier in
den Projekteinstellungen keinen Fehler machen . Genau wie zuvor, als
wir den Spielmodus hinzugefügt haben. Hier. Denken Sie daran, dass Sie auch
die Standardklasse **** für
Serena hatten die Standardklasse **** , da
wir dies gerade testen, nur um sicherzustellen, dass Sie diese Lektion befolgt
haben. Okay, also musst du jetzt
einen Spieler hinzufügen , um wieder zu spawnen. Sie haben also diese Arena, die sie auch hier in
den Welteinstellungen überprüfen
kann , um
die Standard-Pawn-Klasse zu überprüfen , um
sicherzustellen, dass es sich um Tsarina handelt. Und auch dass du einen Spieler hast,
startet hier im Level. also auf Jetzt spielen klicken, können
Sie sehen, dass wir
innerhalb des Levels spawnen, aber wir können den Charakter immer noch
sehen, aber der Charakter
ist tatsächlich da. Und das liegt daran, dass
es
die gewünschte Ansicht nicht kennt , weil
Sie keine Kamera hinzugefügt haben. Gehen wir zurück zu Tsarina. Und auf diesem hellen können
Sie hier darauf klicken und tatsächlich
auf die Kapsel klicken. Wir möchten
die Kamera nicht oben drauf anbringen. Klicken Sie also auf die Kapsel
und klicken Sie auf Hinzufügen. Und der erste, den wir hinzufügen
möchten, ist etwas Frühling an einer Quelle
bezeichnet. Sie können sich dies als
Halter für die Kamera vorstellen, also hält es die Kamera. Wir können den Federarm
und klicken dann erneut auf Hinzufügen und klicken auf eine Kamera. Also hier, Kamera. Also haben wir diesen brennenden Arm und die Kamera befindet sich in
diesem Federarm. Es ist also ein Kind
des Federarms. Und Sie können sehen, dass die Kamera ein bisschen falsch
ist, gedreht. Wir sehen
den Charakter gerade so an. Also müssen wir die Kamera drehen. Und denken Sie daran, dass viele Leute einen Fehler
machen,
indem sie hier klicken und die Kamera
drehen, indem sie E auf der Tastatur
drücken. Sie können sehen, dass Sie
diese verschiedenen Tools haben. Auch hier, genau
wie im Ansichtsfenster. Viele Leute machen den Fehler
, die Kamera hier zu drehen, aber Sie müssen den Federarm tatsächlich
drehen. Klicken Sie also auf den
Federarm und drehen Sie es, drehen Sie das Z so, dass sich die
Kamera davor befindet, also minus 90 Grad. Genau so. Und lassen Sie
uns kompilieren und speichern. Du kannst auf Jetzt spielen klicken
und sehen, was passiert. Also klicke auf Play. Jetzt können wir sehen, dass du den Charakter sehen
kannst. Die Kamera funktioniert also, aber die
Standardeinstellungen sind falsch, also müssen wir sie bearbeiten. Okay, also lasst uns das alles
beenden. Was Sie also tun müssen, ist
auf den Federarm hier an
der Kamera zu klicken und Sie müssen die Kamera
tatsächlich in die Perspektive
umstellen. Was Sie also
hier mit der Kamera tun müssen, müssen
Sie dies in die
orthogonale Ansicht ändern , da
wir nicht mit 3D arbeiten. Wir arbeiten mit 2D zusammen. Klicken Sie also auf die
orthogonale Ansicht. Und hier können
Sie für die Ortho-Breite ändern, wie nah
Sie an der Kamera sind. Je niedriger es ist, desto niedriger die Zahl, desto näher bist du
dem Charakter. Sie können sehen, dass das jetzt sehr riesig
ist. Und je größer es ist, desto weiter wirst du vom Charakter entfernt
sein. So können Sie hier sehen, wenn Sie gerade zufällige große Zahl
anprobiert
haben, werden Sie weiter weg kommen. Was willst du hier machen? Ich habe es in Maple Story getestet, ich habe es gespielt und
die Kameralänge getestet und es ist ungefähr 1304. Auch das ist etwas, das ich
gesehen habe und als ich Maple Story
getestet habe, also ist es vielleicht 201.250,
vielleicht ist es 1300. Das kann ich im echten Spiel nicht mit
Sicherheit sagen, aber es sieht so aus, als wäre
es um 1304. Ich habe ein paar
Mal versucht, das
Spiel zu spielen und die Kamera zu testen. Und als nächstes möchten wir auf den
Federarm klicken und
diesen namens
Kollisionstest deaktivieren diesen namens
Kollisionstest , weil es
die Kamera stört. Nehmen Sie das weg, klicken Sie auf Kompilieren und
klicken Sie auf Speichern. Wenn du jetzt auf Play klickst,
siehst du, dass dies der Charakter
ist. Und wenn Sie sich daran erinnern, können
wir auf FL1 klicken, um das Ansichtsfenster zu
maximieren. So sieht es aus. Gerade jetzt. Der Spieler fängt
nicht mit dem Spielerstart an und es könnte
etwas
mit unserer Kollision zu tun haben . Wenn wir also wieder auf Serena gehen, haben
wir diese Kapsel
hier, Sie können diese
Kapsel sehen und
das ist die Kollisionskapsel,
diese Kapselkomponente. Also müssen wir das
verkleinern, um zu unserem Charakter zu passen. Sonst kollidiert es mit den Kacheln und es funktioniert
nicht richtig. So kannst du diese
Kapsel halb Höhe ändern und sie kann den Radius ändern, um mehr zu unserem Charakter zu
passen. Ich schreibe hier 16 auf. Und den Kapselradius schreibe
ich 33 Jahre. Es ist also ein bisschen kleiner und
es passt mehr zu unserem Charakter. Klicken Sie nun auf Kompilieren und Speichern. Mal sehen, ob das das Problem
war. Also klicke ich auf „Jetzt spielen“. Und es war das Problem, es kollidierte damit. Sie können hier sehen, dass wir
Kollisionsdaten hier oben haben, wir haben Kollisionsdaten hier oben. Die Kapsel ist zu groß, sie kollidiert hier mit
diesen beiden. Und es nervt es aus. Es fängt also stattdessen
hier oben an. Aber jetzt, da wir
unsere Kollisionskapsel repariert haben ,
zumindest
die Größe , können wir jetzt auf Play
klicken und Sie können sehen, dass der
Charakter hier ist. Jetzt das kleine Problem,
das wir gerade haben, können
Sie sehen, dass
die Füße des Charakters hinter
dem Gras liegen und wir wollen die Füße
vor dem Gras
haben. Dies ist eine sehr einfache Lösung. Denken Sie daran, wir haben unsere
Kacheln hier bei 000, denn wenn Sie hier aufschauen und wieder, können Sie auch
einfach einen schönen Trick haben. Sie können auf
dieses Fangwerkzeug klicken. Und Sie können die Zahl erhöhen. Und indem wir die Zahl auf
etwas wie erhöhen , sagen wir 100. Sie können die Mittellinie
hier sehen, an der ich interessiert bin, genau
diese mittlere Linie. Man kann die Medulla sehen und
geht durch die Kacheln. Diese zweite
Schicht, die wir haben, die wir zuvor gemacht haben, und die zweite Schicht erinnern sich daran, dass
wir einen Vordergrund haben. Dies war der Vordergrund. Und der mittlere Bereich
, den wir bei Nullen haben, Nullen 0 sind unsere Kacheln. Und gerade jetzt, unser Laichen, hat
unser Spielerstart die
Position von 0 im y, aber wir müssen es nur ein bisschen
weiter nach vorne
schieben , damit der Charakter nicht hinter dem Gras
liegt. Was ich also tun werde, ist ich das einfach machen werde. Ich schreibe einfach
einen hier im Y, denn 0 ist im Grunde auf der
Ebene dieser Titel. Aber wenn Sie einen schreiben, stehen wir
technisch gesehen
vor diesen Kacheln. Wenn du also nur einen
für den Platzpunkt im Y schreibst, kannst du auf Play klicken. Du kannst jetzt sehen, dass du
vor dem Gras bist. Jetzt, da wir unseren Charakter
eingerichtet haben, gehen
wir zur
Spielerbewegung über.
25. Grundlegende Spielerbewegung: Lassen Sie uns jetzt die
grundlegende Spielerbewegung erstellen. Gehen wir also zurück zum Blueprints-Ordner
innerhalb des Players. Und erinnere dich daran, was ich vorher über
die Kinderpläne und
die Elternpläne
gesagt habe . Der beste Weg, dies zu tun,
ist die Codierung dieser Bewegung innerhalb der Spielerbasis innerhalb der Spielerbasis,
denn wenn Sie
die Maus darüber halten, können
Sie sehen, dass die Elternklasse
von Tsarina der Spieler ist, und die Elternklasse für
Luke ist die Spieler-Basis. Wenn wir also die Bewegung
innerhalb der Spielerbasis beschichten, werden
Serena und Look
diesen Code erben, weil es sich um Kinderpläne
dieser Spielerbasis handelt. Okay, also lasst uns in die
Spielerbasis gehen und
die Bewegung kodieren. Also klicke hier. Öffnen wir nun den vollständigen Blueprint-Editor. Und jetzt befinden wir uns in
diesem Ereignisdiagramm. Und wieder können Sie mit der rechten Maustaste klicken, halten und mit der rechten Maustaste klicken, um
zu navigieren. dies zu codieren, beginnen
wir mit
dem sehr grundlegenden, und es heißt
Add-Movement Input. Dies ist diejenige, die
Sie immer in jedem Projekt
verwenden werden , wenn
Sie Bewegung hinzufügen möchten. also mit der rechten Maustaste und Sie
können nach Bewegung suchen. Dies ist etwas, das manchmal
sehr nützlich ist , wenn ich codiere und nicht weiß,
wie die Funktion heißt. Und das habe ich auch gemacht,
als ich Anfänger war. Ich denke nur darüber nach
, was ich machen möchte? Vielleicht möchte ich
etwas mit dem Standort machen, also klicke ich einfach mit der rechten Maustaste
und suche den Standort. Dann versuche ich herumzuspielen. Manchmal dauert es
lange, dies zu überfliegen. Aber dann finde ich es. Zum Beispiel wollte ich mir den Standort
dieses Schauspielers besorgen und ich möchte diese
Informationen für etwas verwenden. Und das können Sie
tun, wenn Sie ein Anfänger sind. Man muss nicht wirklich wissen, wie all diese heißen. Sie können versuchen, nach dem zu suchen,
was Sie tun möchten. So kann es zum Beispiel die Suche nach Rotation
lösen wenn Sie versuchen,
etwas mit der Rotation zu tun. Im Moment
versuchen wir also, Bewegung hinzuzufügen. Auf der Suche nach Bewegung kann
man immer
versuchen durchzuziehen, ich weiß, wie es heißt, aber ich wollte sehen, ob
ich es jetzt finde, die Bewegung ist hier etwas
schwer zu finden. Als Bewegungseingabe versuchen
wir dies zu finden. Klicken Sie also auf Hier hinzufügen und
fügen Sie Bewegungseingaben hinzu. Denk dran, was ich vorher gesagt habe. Sie können keine Funktionen ausführen, wenn
Sie kein Ereignis haben. Und wir möchten, dass das Ereignis die
Tastaturtasten ist. Und dann möchten Sie hier
bearbeiten und Projekteinstellungen. Und innerhalb der Projekteinstellungen haben
Sie diese Eingaben genannt, und hier
fügen Sie Ihre Tastaturtasten hinzu. Klicken Sie also auf Eingaben. Hier im Zugriffs-Mapping haben
Sie auch diese
namens Action Mapping. Der Unterschied zwischen
der Aktionszuordnung und der Zugriffszuordnung besteht darin, dass
Sie sich die
Achsenzuordnung als kontinuierlich vorstellen können. Ein kontinuierliches Klicken, eine
kontinuierliche Bewegung. Also
werden alle Bewegungen hier unten sein. zum Beispiel auf
W, um vorwärts zu gehen, klicken Sie auf D, um nach rechts zu
wechseln und so weiter. Sie haben, das sind
Zugriffszuordnungen. Wenn Sie beispielsweise nur
ein Ein-Klick-Ereignis wünschen , drücken
Sie die Leertaste, um zu springen, oder drücken Sie die
Maustaste, um Ihre Waffe zu schießen. Dies sind
Aktionszuordnungen, Bewegungen
, Zugriffszuordnungen
und Ein-Klick-Ereignisse. Sie sind in den
Aktionszuordnungen oben. Fügen Sie hier immer die Bewegungen
zu den Zugriffszuordnungen hinzu. Also möchten wir
zum Beispiel hinzufügen, nach
rechts und links bewegen. Da es sich um
ein 2D-Spiel handelt, bewegen
wir uns auf diesem Platformer nach
rechts und links. Und hier unten
müssen Sie Schlüssel zuweisen , was Sie verwenden möchten, um sich
nach rechts und links zu bewegen. Sie können entweder hier klicken und hier
klicken und den Schlüssel finden. Eine andere nützliche
Methode ist jedoch, auf diese Schaltfläche zu klicken und dann auf
die Taste auf Ihrer Tastatur zu klicken. Also klicke ich
auf meiner Tastatur auf D. Dadurch wird der
Charakter nach rechts verschoben, und ich klicke
auf diesen Plus-Button, schaue auf diese
Tastatur und klicke auf meine Tastatur,
um nach links zu gehen. Und Sie müssen die Skala für die Linke
auf minus eins einstellen. Sie können es sich also als
zwei verschiedene Richtungen vorstellen. Es ist also plus eins, wenn
Sie sich nach rechts bewegen und es ist minus eins, wenn
Sie nach links gehen, genau wie ein Diagramm
mit X- und Y-Achse. Okay, also schließen wir die Projekteinstellungen
und gehen wir hierher zurück. Wenn Sie nun
die Achsenzuordnung dort hinzugefügt haben, können
Sie jetzt mit
der rechten Maustaste
hier klicken und denselben Namen wie den Namen in den
Projekteinstellungen schreiben der rechten Maustaste
hier klicken und denselben Namen wie . Also nenne ich es nach
rechts und links bewegen. Und Sie können hier sehen, dass ich die Achsenereignisse sehen
kann. Sie möchten also dieses
namens Access-Ereignisse hinzufügen, nicht die Achsenwerte. Und Sie können sehen, dass Ereignisse immer dieses Icon
haben. Also kann ich drauf klicken. Schon wieder. Ereignisse werden immer als gelesen
markiert. Sie wissen also, dass dies ein Ereignis ist. Jetzt können Sie es hier mit
dem Bewegungseingang verbinden. Das nächste, was Sie über
Funktionen lernen
müssen , ist dieses Ziel. Sie sind sehr wichtig. Und Sie können hier sehen,
dass hier oben steht, das Ziel ist ****. Es möchte also einem Bauern
Bewegung verleihen. Und denk an unseren Charakter. Wir befinden uns
hier im Charakter, der Spielerbasis. Und diese Blaupause, die wir gemacht haben, ist ein Charakter, Es ist ein Papiercharakter. Und genau wie vor dem, was ich
hier in der Blueprint-Klasse gesagt habe , ist
ein Charakter eine Art Teiche. Es ist also eigentlich
eine Art Telefon. Man wird einen Charakter erzeugen , bei dem wir bereits
das richtige Ziel haben. Man kann sehen, dass es sich selbst sagt. Selbst bedeutet diese Blaupause. Sie sind bereits dabei, also
versuchen Sie, dem Entwurf, in
dem wir uns
bereits befinden, Bewegung hinzuzufügen , also ist das richtig. Und
was die Richtung angeht, in die wir Bewegung hinzufügen
möchten, können
Sie hier mit der rechten Maustaste klicken und wählen Sie Steuerdrehung abrufen. Also versuchen wir, die
Rotation unseres Controllers zu erreichen. Und dann können wir sagen,
Get Forward Vector. Und jetzt können wir es
hier mit der Weltrichtung verbinden. Also versuchen wir,
die Vorwärtsrichtung
unseres Controllers zu erreichen . Nun, was den Skalierungswert angeht, können
Sie diesen
Achsenwert hier mit ihm verbinden. Und jetzt hast du die Bewegung. Also lasst uns kompilieren
und speichern und versuchen wir zu bewegen. also auf Jetzt spielen klicke, gehe
ich zu Person D, um nach rechts zu gehen und auf
das
Alter zu klicken und nach links zu gehen. Sie können also sehen, dass die
Bewegung jetzt niederknien.
26. Player: Lasst uns jetzt den
Sprung für die Spieler hinzufügen. Klicken Sie also zurück hier
in der Spielerbasis. Und denken Sie daran, dass wir eine Veranstaltung brauchen. Gehen Sie also zurück zu den Bearbeitungs- und Projekteinstellungen
von hier in Eingaben. Da es
sich bei dem Sprung um ein Ein-Klick-Ereignis handelt, werden
wir es hier
im Action-Mapping hinzufügen. Denken Sie daran, dass es nur
Bewegungen
sind, die wir in Access Mappings hinzufügen. Klicken Sie hier auf das Plus
für die Aktionszuordnung. Lass es uns hier hinzufügen. Nennen wir es springen. Und ich füge hier meine
Leertaste hinzu. Sie können eine weitere
Schaltfläche hinzufügen, wenn Sie möchten. Ich werde es schließen. Und jetzt können wir
mit der rechten Maustaste klicken und springen sagen. Und hier unten
sehen Sie es in den Aktionsereignissen, die Sprünge sagen. Also klicke hier und jetzt haben wir unsere Events. Als Nächstes
haben Sie bereits eine integrierte Funktion innerhalb von Unreal
Engine namens Sprünge. Sie können also von diesem
Ausführungsstift ziehen und Jump schreiben, und Sie haben diese
Funktion bereits Sprünge genannt. Also klicke darauf. Kompilieren Sie jetzt speichern. Und du kannst auf Play klicken. Und du siehst, wenn ich
auf den Weltraum drücke, springst du. Offensichtlich müssen wir
die Animation Slater hinzufügen, und wir müssen auch die Bewegungen
bearbeiten. Wie viel springen wir
und was ist die Schwerkraft, wofür das später ist. Also lass uns
jetzt zurückgehen und ich möchte dir etwas
zur Optimierung
zeigen. Also füge ich hier
eine Druckzeichenfolge hinzu. Also wird es
jedes Mal Hallo sagen, wenn ich auf Sprung klicke, wenn ich auf Jetzt spielen klicke
und auf Leertaste klicke, kannst
du oben links sehen, es heißt Hallo jedes
Mal, wenn ich auf Leertaste klicke, jetzt klicke ich auf Space all
in allem was ich jetzt kann. Und du kannst
dich sehen. Ich kann auf den Weltraum klicken und springen
obwohl ich in der Luft bin. Und das möchte ich nicht um der
Optimierung willen tun. Ich möchte
den Code nicht ständig ausführen. Ich möchte
den Code nur einmal ausführen. Und wenn ich auf dem Boden
lande, erlaube ich dem Spieler, wieder
zu springen. Denn wenn ich dem Spieler erlaube ständig auf Leertaste
zu drücken, können
Sie sehen, dass wir den Code
ausgeben können. Dies ist nicht wirklich optimiert, daher möchte ich nur, dass der Spieler diesen Code
nur ausführt,
wann immer der Spieler kann, wenn der Spieler im Untergrund ist. Und wir haben etwas
namens fällt. Wenn Sie also diese
Charakterbewegungskomponente verwenden, können
Sie sie anklicken und
in dieses Ereignisdiagramm ziehen. Und Sie können sehen, dass dies auch eine Variable
ist. Denken Sie daran, bevor Sie
diese sehr grundlegenden Variablen gelernt haben. Aber diese ist eigentlich auch eine Variable, wenn man sie hierher zieht. Jetzt können wir also etwas
mit der Charakterkomponente machen. Du kannst es herausziehen
und du kannst sagen, dass er fällt. Und jetzt können wir prüfen, ob
dies überprüft, ob der
Spieler in der Luft ist. Und denk daran, dass der rote
Stift hier ein Boolean ist. Sie können also von diesem
booleschen Wert ziehen und auf b klicken, und es kann diesen
als Zweig bezeichnet werden. Ein Zweig ist, prüft nur, ob dieser Wert wahr oder
falsch ist , und Sie können
etwas damit machen. Jetzt sagst du, dass du die
Charakterbewegung nimmst, du überprüfst, ob der Spieler fällt und ob es stimmt, ja, der Spieler fällt. Wir wollen nicht springen, weil der Spieler
bereits in der Luft ist. Aber wenn der Spieler
nicht mehr fällt
, dann überprüft er, fällt
der Spieler? Es sagt nein, der Spieler
fällt nicht. Okay, dann darfst springen, weil du am Boden
bist. Jetzt kannst du sehen,
ob ich kompiliere und auf Play
klicke, lass uns
hier oben
eine Drucksaite hinzufügen , damit du sehen kannst , dass der Spieler fällt
und wir nicht wirklich springen können. Eigentlich ist das hier unten. Das ist ein besseres Beispiel. Es wird also nur
Hallo sagen, wo immer wir gesprungen sind. Also klicken wir auf Sprung.
Jetzt. Klicken Sie auf Space. Du siehst, dass ich meinen Platz nicht
ausgeben kann. Ich kann den Code nur ausführen,
wenn ich vor Ort bin. Das ist also optimiert. Jetzt
ist der Code optimiert und der Spieler kann
den Code nicht ständig ausführen. Lesen zu erleichtern
, kann
ich dies jedoch löschen und die Verbindung aufheben, indem
ich Alt gedrückt halte und
auf diesen Ausführungspin klicke. Anstatt es hier zu tun, möchte
ich es jetzt richtig machen, weil ich es
besser lesen kann , wenn ich diese
Funktion auf true gesetzt habe. Aber jetzt müssen wir hier
noch einen booleschen Wert machen. Also heißt es jetzt, fällt der Charakter? Was wollen wir sagen, wenn wir es mit dem Wahren
verbinden, fällt der Charakter nicht? Wenn das stimmt, fällt der
Charakter nicht, die Zeichen auf dem Boden. Wir können dazu springen, nur
um das Gegenteil zu machen. Wir können hierher ziehen und Nüsse sagen. Und Sie können nicht sehen, dass
dieser nicht gleich ist, wir müssen diesen
nicht boolean verwenden. Und was das sagt ist, wenn der Spieler verrückt fällt, wenn das stimmt, dann mach weiter
und du kannst springen. Und ich denke, das
ist viel einfacher zu
lesen, als dies falsch zu machen. Okay, also das Letzte,
was ich dir
beibringen möchte , ist ein
Erstellen von Funktionen. Bevor Sie also sehen können, haben
wir viele
Funktionen, die wir hinzufügen
können, die vorgefertigt sind, aber Sie können auch
Ihre eigenen Funktionen erstellen. Und ich möchte diese zu
einer Funktion machen und du
kannst diese verkürzen. Und normalerweise tun wir das
, um den Code aufzuräumen. Sie können hier mit der rechten Maustaste klicken. Und Sie können sagen, dass
Kollaps funktioniert. Anstatt hierher zu gehen und die Funktion zu
erstellen, wird
es sie tatsächlich für Sie
erstellen. Wählen Sie also alle diese drei aus, rechten Maustaste und sagen Sie „
Ausblenden“, um zu funktionieren. Jetzt können Sie sehen, dass es eine Funktion
gemacht hat und normalerweise schreibe ich F als
Präfix für Funktionen. Nennen wir das hier. Springt nicht. Das ist also was es ist. Es überprüft, ob du springst. Es heißt nur, dass
du jetzt doppelklicken kannst. Übrigens habe ich es vielleicht
zu schnell gemacht. Sie können auf
diese erstellte Funktion doppelklicken. Und jetzt sehen Sie die
Funktion hier. Es fängt an. Ich ziehe das hier
runter, damit es einfach so
organisierter ist . Das ist also die Funktion. Es fängt hier an, es endet hier und es gibt einen Rückgabewert. Und der Rückgabewert, wenn Sie zum
Ereignisdiagramm zurückkehren, wird hier herauskommen. Dies ist der Wert, der hier überprüft
wird. Das ist also ein bisschen organisierter. Sie verstecken diesen
Code in
dieser Funktion und nur
diese Funktion wird angezeigt. Denken Sie daran, dass Sie
diese dem
Ausführungsstift hinzufügen müssen , da
Sie im Blueprint das
nicht wirklich tun können weil Sie die Verbindung nicht verbunden
haben, eine nicht verbundene
Funktion und dies wird renne nie, wenn du es so
hast. Der beste Weg
wäre also, es wie
hier zu machen und es dann
durch den Code zu führen. Sie können
dies jedoch ein bisschen besser machen. Ich weiß, dass ich Ihnen in
diesem Video viele
Informationen gegeben habe , aber ich möchte Ihnen
die beste Codierungsmethode beibringen. Hier haben Sie
jetzt diese Funktion erstellt und sie läuft korrekt
durch den Code. Sie können also sehen, ob
ich auf Play klicke, nichts
stimmt wirklich nicht mit meinem Code. Ich kann springen und es
funktioniert einwandfrei. Aber Sie müssen es hier nicht wirklich mit
Ausführungspins
verbinden. Weil Sie normalerweise in
diesen blauen Funktionen sehen
können, dass wir
grüne Funktionen haben
und blaue Funktionen haben. Die grünen Funktionen geben Ihnen
nur einige Informationen, die Sie für etwas verwenden
können. Zum Beispiel
haben wir hier die Steuerdrehung. Wir haben den Vorwärtsvektor, also die Vorwärtsrichtung. Und dann bekommen wir
diese Informationen und verwenden sie als
unsere Weltrichtung. So werden grüne Funktionen
verwendet, um Informationen zu erhalten. Und die
blauen Funktionen werden jedoch
verwendet, um Informationen einzustellen. Also haben wir Funktionen eingestellt
und wir haben Funktionen erhalten. Zum Beispiel stellt die
Sprungfunktion den Sprung ein. Und hier verkaufen wir
eigentlich nichts. Wenn Sie also auf
diese Funktion klicken,
die wir erstellt haben verkauft
sie nichts, sondern nur, ob der
Spieler fällt oder nicht. Es bekommt also Informationen. Es macht also keinen
Sinn,
dass es hier blaues Licht ist
und man kann es ändern. So können wir auf diese Funktion klicken und Sie können auf
diese Funktion namens pure klicken. also auf Pure klicke bekomme
ich Informationen
von dieser Funktion. Ich muss es nicht wirklich einstellen. Ich stelle keine Informationen ein,
ich verstehe sie nur. Der Spieler fällt oder nicht. also hier zum
Diagramm zurückkehren, können
Sie es jetzt so verbinden und Sie können sehen, dass es
optimierter ist. Jetzt. Du bekommst nur, ob der
Spieler fällt oder verrückt
ist, und wenn der Spieler nicht fällt, wenn das stimmt, kannst
du springen.
27. Animationen der Spielerbewegungen: Wir sind jetzt bereit,
die Bewegungsanimationen
für den Charakter hinzuzufügen . Ich hoffe, du bist
vollkommen wach, weil ich
dir in dieser Lektion viel zu erteilen habe. Wenn wir also zu unserem Spieler
und innerhalb der Spielerbasis zurückkehren. Also möchten wir
die Animationen hier hinzufügen, also fügen wir die Bewegung hinzu, aber wir möchten auch die Animation
hinzufügen. Aber jetzt wird es ein
bisschen komplexer, aber weil wir jetzt
einen echten Multiplayer bekommen. Wenn ich das zuerst minimiere,
bevor wir irgendetwas tun, möchte
ich Ihnen etwas
über Aufzählungen beibringen, wir mit der rechten Maustaste
hier und lassen Sie einen neuen Ordner namens
Enums für Aufzählungen erstellen. Sie können in diesen Ordner gehen,
Sie können
hier mit
der rechten Maustaste darauf klicken und Blueprints, Sie können diesen
namens Enumeration erstellen. Aufzählung ist, ist nur
eine Liste von irgendetwas. Wenn du es also einfach schaffst
und ich es dir zeigen kann, beginne ich
normalerweise Aufzählungen, Präfixe, indem ich E schreibe, und nenne es uns
Bewegungszustände. Wir erstellen eine Liste
von Bewegungsstatus. Eine Aufzählung ist also
nur eine Liste von irgendetwas. Sie können hier oben auf
diesen Button klicken. Sie können jedes
Mal sehen, wenn Sie darauf klicken, eine Liste hinzufügen oder
ein Element zu dieser Liste hinzufügen. Eine Aufzählung ist also nur eine Liste von allem, von dem Sie eine Liste erstellen
möchten. Zum Beispiel Lebensmittel. Du kannst deinen Apfel, Orangen oder Gurke oder
was auch immer du schreiben willst schreiben. Sie können Autos schreiben, zum Beispiel eine Liste von Autos. Du kannst sie hier schreiben und
vielleicht die Modelle der Autos. Du kannst eine Liste von Waffen
und eine Liste von allem schreiben. Ich werde eine Liste der Gegenstände machen. Aber um dieser willen schreiben
wir hier eher eine Liste
der Lauf- oder
Bewegungszustände. Die erste, die
ich im Leerlauf rufe. Wir haben also eine Animation im Leerlauf und dann haben wir eine
Runrights Animation. Wir haben eine Run Left Animation und dann haben wir
eine Sprunganimation. Und wir haben auch
eine Herbstanimation. Und eigentlich haben wir
nicht wirklich eine gefallene Emission,
weil wir nur gemacht haben, lasst uns zurück zum
Asset-Charakter zurückkehren. Wir haben eine untätige Animation gemacht,
eine Run-Animation. Obwohl es Run heißt, sind
wir beide rechts
und links herum gelaufen. Und dann haben wir die
Jump-Animation hier. Aber wir
haben nicht wirklich eine Herbstanimation. Aber in Maple Story ist
die vollständige Animation
dieselbe wie der Sprung. Also werden
wir diesen Sprung einfach
als unsere vollständige Animation nutzen . Klicken wir also auf Alles speichern. Jetzt haben wir
unsere Aufzählung gemacht, wir haben die Liste erstellt. Gehen wir nun zurück
zur Spielerbasis. Jetzt können Sie hier
die Aufzählung hinzufügen. Wenn Sie also eine Variable erstellen und nennen wir sie
Bewegungszustände. Und Sie können
die Variable hier ändern. Und um Ihre
benutzerdefinierte Variable zu finden, können
Sie sie wie auch immer Sie
genannt haben, die Aufzählungsdatei nennen . Also e als Präfix und du
kannst Bewegungen schreiben, Datum, und du kannst sehen, du kannst deine Aufzählung hier
sehen. Sie haben normalerweise diese
dunkelgrüne Farbe. Diese E Bewegungen geben also an, dass
dies unsere Aufzählung ist,
indem Sie darauf klicken, und jetzt ist es
eine Variable, die Sie kompilieren können. Wenn Sie sehen möchten, wie es
aussieht, können
Sie es immer hier
rausholen und auf klicken, um
die Informationen abzurufen. Sie können hier nachschauen, auf Set
klicken und Sie können sehen, dass
Sie es auf all
diese verschiedenen Listenelemente einstellen können diese verschiedenen Listenelemente , die Sie
hier in der Liste festgelegt haben. Wenn Sie also noch eine
Sache hinzufügen und auf Speichern klicken, können
Sie hier diese neue Sache sehen ich
hier kompilieren muss, kompilieren und speichern. Jetzt kann ich
darauf klicken und Sie können
das neue Listenelement sehen , das hinzugefügt wurde. So fügst du also
Dinge auf der linken Seite hinzu. Sie können es auch hier löschen. Wir können erneut
kompilieren und speichern. Und jetzt können Sie sehen, dass dies
die Liste ist, die wir haben. Okay? Im Grunde wollen wir diesen Achsenwert nehmen. Jetzt lass
es mich auf den Bildschirm drucken damit ich dir zeigen kann,
was los ist. Also lasst uns jetzt drucken. Wenn Sie diesen Achsenwert ziehen und mit
der Druckzeichenfolge verbunden sind. Jetzt wird dieser
Achsenwert immer dann gedruckt, wenn Sie laufen. Wenn du also auf
Play klickst und
rennst, kannst du sehen, dass es
eins ist, wenn ich nach
rechts gewechselt bin und es ist minus eins,
wenn ich nach links gehe.
Denken Sie daran, dass wir dies
in den
Projekteinstellungen geschrieben haben und Eingänge. Eine, die sich nach rechts bewegt. Ich möchte nur nach links gehen und
wenn wir still stehen, ist
es 0. Okay? Aber diese Informationen
, die wir jetzt haben, werden
wir jetzt
viel cleverer. Wenn es also ist, wenn dies gleich 0 ist, stehst du
still, du bist im Leerlauf. Nehmen Sie dies heraus und
schreiben Sie das Gleichheitszeichen, oder Sie können
gleich schreiben, wenn Sie möchten. Sie können diesen Operator
hier dazu bringen, gleich zu sagen. Wenn diese Zahl also gleich 0 ist, kann ich wieder hierher ziehen
und b oder einen Zweig schreiben. Wenn diese Zahl gleich 0 ist, wenn das stimmt, was wollen wir
tun? Und letztendlich was
wir tun wollen. Wir möchten dieses
Listenelement auf Leerlauf setzen da wir jetzt wissen
, dass der Spieler im
Leerlauf
ist , weil der Spieler still steht der Achsenwert gleich 0 ist. Aber wenn es nicht gleich 0 ist, bedeutet
dies, dass Sie sich bewegen. Ja, du bewegst dich. Aber wenn ich
dieses Steuerelement einfach kopiere dann
bewegst du dich nach rechts oder bewegst du dich nach links? Also das müssen wir auch überprüfen. Sie können zum Beispiel von
diesem Achsenwert ziehen , und Sie können sagen, je größeres Zeichen wie
dieses größer ist? Sie können sich also für dieses entscheiden. Es ist dieser Achsenwert, ist er größer als 0? Und wir können dieses Jahr ziehen, ich wäre für die Filiale. Und Whoops, es ist rausgezoomt. Ich weiß nicht, was so
passiert. Wenn dieser x-Wert also größer als 0
ist, bedeutet
dies, dass wir nach rechts
gehen. Verbinden wir das also mit
dem Falschen. Was wir jetzt sagen, ist
dieser x-Wert gleich 0. Wenn ja, dann ist es untätig. Wenn dies nicht der Fall
ist, überprüfen Sie diesen, dann ist der Überwert
größer als 0 hier unten ,
was wir überprüfen . Wenn es größer als 0 ist
, bewegen Sie sich
nach rechts. Wenn Sie sich jedoch bewegen, wenn es weniger als 0 ist, bewegen
Sie sich tatsächlich nach links, weil
es minus eins ist. Okay, das ist also
das Hauptprinzip. Jetzt müssen wir ein
bisschen mehr arbeiten , damit es im Multiplayer funktioniert. Ich werde diesen Sprung bewegen,
Jump IF-Funktion hier, springe Logik hier unten. Also habe ich hier oben mehr Platz. Also dieses möchte ich eigentlich
zu einer Funktion machen. Also gehe ich
hier runter und klicke mit der rechten Maustaste. Und Sie können auch, wie
Sie hier gesehen haben, wenn
Sie Ereignisse geschrieben
haben, eine Veranstaltung auswählen können, die hinzugefügt werden soll, aber Sie können
Ihre eigenen Events erstellen. Wenn Sie also ein Kostüm schreiben, können
Sie sehen, dass Sie ein benutzerdefiniertes Ereignis
hinzufügen können
und es so nennen,
wie Sie möchten. Ich nenne diesen
einen festgelegten
Bewegungsstatus , weil
wir das versuchen. Stellen Sie also den Bewegungszustand ein und
wir haben jetzt dieses Ereignis. Okay, also möchte ich einen davon
nehmen, also klicke ich auf Control X um es auszuschneiden und hier unten einzufügen
. Alternativ möchte
ich, dass Sie meinen Bewegungsstatus
hier und das Ereignis
festlegen. Und eine coole Sache, die
du hier machen kannst. Sie haben gesehen, dass Sie hier Variablen
hinzufügen können, aber Sie können Funktionen auch
Variablen hinzufügen. Kann all diese
vorgefertigten Funktionen sehen. All dies sind
eigentlich Variablen. Sie können also auf
diese benutzerdefinierten Ereignisse klicken. Sie können eine neue Variable hinzufügen, aber Sie können es auch einfach
hinzufügen, indem Sie diesen Pin ziehen
und über
Ihre benutzerdefinierte Funktion ablegen. Sie können sehen, dass diese Variable automatisch für Sie
erstellt wird . Wenn Sie es manuell
hinzufügen möchten, können
Sie
hier immer auf das Plus
klicken und ihm einen Namen geben. Also zum Beispiel name. Sie können sehen, dass es den Namen
ändert und Sie können erneut auswählen E. Bewegungen sind geblieben und Sie hätten
es so auswählen können. Ich
lösche diesen einfach. Ich habe es dir gerade gezeigt. Also Verbindungen Sparen Sie jetzt. Also was du jetzt hier oben machen kannst. Anstatt
diese Aufzählung schreiben zu lassen, können Sie
dies herausnehmen und
den Namen des Ereignisses schreiben , das Sie hier aufgeschrieben haben. So
rufen Sie also ein benutzerdefiniertes Ereignis auf. Legt Bewegungsstatus fest. Und Sie können
hier die aufgerufene Funktion sehen , den Status Bewegungen einstellen. Anstatt diese
Aufzählung direkt ausgeführt zu haben, wird dieses Ereignis tatsächlich
ausgeführt, das diese Variable auf das setzt, was
Sie hier auswählen. Diese Informationen, die Sie hier
auswählen, werden also hier
durchlaufen. Und es setzt
Ihre Variable auf die Informationen ein, die sie hier oben
durchläuft. Okay, also sehr,
sehr coole Sachen, aber wir müssen ein bisschen
mehr tun , weil wir
im Multiplayer sind. Dies ist kein
Einzelspieler-Spiel. Dies wäre im Einzelspieler
perfekt funktioniert worden. Aber im Multiplayer legen wir normalerweise keine Variablen
auf den Clients fest, also haben wir einen Client
und den Server und normalerweise den Server, der Typ
ist, der das Spiel macht. Wenn ich also Counterstrike spiele, erstelle
ich einen Server. Ich bin der Server. IMD, das wahre Spiel. Also habe ich die
Autorität des Spiels. Und man hört manchmal, dass
es Cheats oder Hex gibt, das nennt man
clientseitiger Angriff. Was wir normalerweise tun, ist Variablen über
den Server zu
setzen , weil der
Server das Spiel steuert, Sie müssen immer daran denken,
dass der
Server in Unreal Engine die Kontrolle über das
Spiel hat und was auch immer Sie tun, welche Logik du auch
schreibst, du musst sie
durch den Server laufen. Die Clients sind alle
verbundenen Layer. Sie erstellen also den Server, Sie sind der Server und alle Spieler, die
sich mit Ihrem Server verbinden. Sie werden die Kunden genannt. Und wenn Sie nicht den gesamten
Code über den Server ausführen, also wenn Sie nicht überprüfen,
was Sie tun, z. B. springen oder setzen Sie eine Variable ein. Wenn du es nicht zuerst überprüfst, , dem Client leichter, im Spiel
zu schummeln. Wenn Sie dies also einfach durch
den Client ausführen und
diese Variable festlegen, hat
der Client eine einfache Möglichkeit, innerhalb Ihres Spiels
zu schummeln. Denken Sie also immer daran, dass der Server die Autorität des Spiels
hat, dass der Server das wahre Spiel
ist. Der Server prüft, ob Sie die Waffe geschlossen
haben, dann sagt der Server, ja, dieser Client hat die Waffe tatsächlich
geschossen. Dann mach weiter und füge diesem Charakter
Schaden zu. Der Server muss
diese Informationen also immer überprüfen, um sicherzustellen, dass der Client nichts Illegales tut. Also ein anderes Beispiel, kurz
bevor wir
zum Beispiel den Client fortsetzen , also die verbundene Ebene. Schießt ein Rollenspiel und weitesten entfernte Rollenspiel, die den Server
durchsehen müssen. Der Server prüft. Hat dieser Spieler tatsächlich ein Rollenspiel in der Hand und
schießt die Waffe ab? Dann
prüft der Server und sagt, ja, dieser Client hat tatsächlich ein
RPG in der Hand und schließt es. Dann sendet es
diese Informationen an den Kunden
zurück, der das Rollenspiel gedreht
hat. Und es wird dem Kunden sagen
, dass du diese
Waffe schießen
darfst, weil ja, du hast das Rollenspiel in der Hand. Regel-Engine. Sie haben diese
Berechtigung, bei der der Server die Berechtigung
hat und
was auch immer der Client über den Server überprüft werden muss. Wir können es einfach hier einstellen. Dies ist, Sie können hier sehen dies der Client ist
und Sie können ihn auch hier
überprüfen, wenn Sie mit der rechten Maustaste klicken
und eine Druckzeichenfolge schreiben. Und denken Sie daran, dass die Druckzeichenfolge so mächtig
ist, obwohl sie nur eine Zeichenfolge druckt. Lassen Sie uns kompilieren und speichern. Und du kannst sehen, was ich sage. Anstatt jetzt
auf „Jetzt spielen“ zu klicken, klicken
wir auf diese
drei Schaltflächen und ändern sie in eine
Reihe von Spielern. Jetzt sind wir im
Multiplayer. Lasst uns zwei schreiben. Klicken Sie hier im Netzmodus auf diesen namens
Play als Listen-Server. Klicken wir erneut auf
diese Schaltflächen und ich klicke auf
dieses eine neue Editor-Fenster. Das ist es, was ich jetzt spielen
werde. Ich werde nicht mehr im
ausgewählten Ansichtsfenster spielen. Klicken Sie also auf ein neues
Editor-Fenster. Jetzt können wir sehen,
dass wir den Server haben. Du siehst es oben
hier. Wir haben den Server. Ich habe dieses Spiel erstellt. Und Sie können den
Client sehen, der mit meinem Server verbunden ist, den
ich erstellt habe. Wenn ich hier anklicke,
siehst du, dass ich mich als Server bewegen kann, und ich kann auch als
Client hier rübergehen. Jetzt sind wir also im
Multiplayer. Und wie Sie hier sehen können, druckt
der Client Hallo und der
Server auch Hallo. Dies bedeutet diese Information. bedeutet, dass dieses Ereignis auf dem Server
und dem Client
ausgeführt wird . Sie sagen beide Hallo. Und wenn ich Variablen
setze, möchte ich
sie nur auf dem Server einstellen. Ich möchte sicherstellen, dass
der Kunde nicht betrügt. Also möchte ich niemals
Variablen auf dem Client setzen. Und lasst uns das löschen. wir also mit der rechten Maustaste hier und sagen Sie weitere
benutzerdefinierte Ereignisse. Lassen Sie uns ein benutzerdefiniertes Ereignis hinzufügen. Nennen wir es S RV pro Server. Normalerweise nenne ich sie als R V. und nennen wir es einfach den
gleichen Namen wie diesen hier oben. Sagt Bewegungsstaaten. Einfach so. Um es nur
durch den Server laufen zu lassen, haben
Sie diesen im
Multiplayer namens Replikation. Klicken Sie also hier und
klicken Sie auf „Auf Servern ausführen“. Also wollen wir es nur auf
dem Server ausführen und auf zuverlässig
klicken. Ich werde
dies trennen, indem ich Alt halte, diese
trenne und
das Set hier damit verbinde . Und was wir
hier tun können, ist, diese Ereignisse durchzuführen. Also hier oben
läuft unser v so und verbindet diese
Eingänge einfach so. Okay, jetzt läuft es eigentlich
richtig. Was wir jetzt tun ist, dass wir prüfen,
ob der x-Wert 0 ist, also befindet sich der Spieler im Leerlauf,
wenn das stimmt. Und diese Idol-Information. Jetzt führen wir
dieses Ereignis aus, das als
set move state bezeichnet wird,
welches dieses ist. Also setzen wir diese
Informationen im Süden im Leerlauf. Diese Informationen werden auf den Server
ausgedruckt. Und der Server
setzt diese Variable auf das, was Sie
hier geschrieben haben oder was auch immer Sie hier gewählt
haben. Okay, also das ist die
richtige Methode, um es zu tun. Also, was wir hier tun müssen, also lasst uns diese löschen. Und wieder können Sie
einfach den Namen
dieses Ereignisses hier schreiben , um die Event-Sets
aufzurufen. Bewegungen, Staaten wie
diese und wählen Sie diesen aus, nicht diesen, also diesen hier. Und lass es uns kopieren und hier unten
einfügen. Wenn also der Achsenwert größer als 0
ist, bedeutet
dies, dass wir,
wenn das stimmt, nach rechts
laufen. Das ist falsch. Wir rennen einfach so nach
links. Jetzt ist es also
richtiger. Okay, also haben wir
jetzt die
Variable gesetzt was jetzt? Weil du sehen kannst, ob ich alles
kompiliere , speichere und speichere, wenn ich auf Jetzt spielen klicken kann, passiert wirklich
nichts. Und das ist okay. Denn im Wesentlichen,
was Sie
gerade tun , ist, dass Sie diese Variable
festlegen, aber Sie haben den Supervisor wirklich nicht
definiert. Wenn ich hierher zurückgehe, hast du diese Flip Books nicht wirklich benutzt. Denken Sie daran, dass Sie
diese Variable nur
auf die Informationen setzen diese Variable nur
auf die Informationen Sie hier festlegen. Für Aufzählungen haben wir also etwas namens
Switch on Enumeration. Also nur als Test, wenn ich diese
Aufzählung einfach rausziehe und wenn ich sie
hierher ziehe und switch sage, kannst
du einen Schalter
auf der Enumeration sehen. Was es ist, ist im Grunde, dass es Ihnen nur
Ausführungspins gibt,
je nachdem , was Sie
hier auf der Liste geschrieben haben. Und du kannst
verschiedene Aktionen ausführen. Und Sie können hier sehen,
wenn wir im Leerlauf sind, können
wir dieses Flipbook ausführen. Wenn wir es sind. Ich geh zurück. Wenn wir nach rechts laufen, kann
ich dieses Run
Flip Book ausführen und so weiter. So können wir verschiedene Aktionen ausführen,
je nachdem, was wir sind was wir
diese Variable gesetzt haben. Okay, also können
Sie wieder innerhalb des
Multiplikators auf eine Variable klicken. Und hier im Multiplayer,
genau wie zuvor, wo Sie eine
Replikation für das Ereignis haben,
und sagen, dass auf Servern ausgeführt wird, speziell auf dem
Client ausgeführt wird. Auch für Variablen
können Sie diese replizieren. Wie Sie sich vorstellen können, muss der Client, wenn Sie hier eine Variable
auf
dem Server festlegen, wenn Sie hier eine Variable
auf
dem Server festlegen, irgendwie über
diese Informationen Bescheid wissen. Und das ist es, was Sie mit
diesem Replikationsfork verwenden. Denn wenn Sie diese
Variable auf dem Server festlegen, wie würde der Client darauf hinweisen? Weil der Client keine Chance hat zu wissen, was Sie auch gesagt
haben, weil Sie der Server sind. Sie haben die
Informationen auf dem Server festgelegt, müssen
diese Informationen
jedoch an
den Client zurücksenden, damit der Client weiß, worauf der Server sie eingestellt
hat. Und hier kommt die variable
Replikation ins Spiel. Wenn ich also darauf klicke
und auf repliziert klicke, sehen
Sie diese
beiden Kugeln. Dies bedeutet, dass ich die
Variable auf dem Server setze, und jetzt sende ich diese Informationen an
den Client
zurück, damit der Client weiß wie hoch der Wert
für diese Variable ist. Das ist es, was repliziert wird. Jetzt ein bisschen komplex. Das Letzte, worüber ich dir
beibringen möchte, bevor ich
dir das Gehirn rausblase , ist
dieser namens Rep, benachrichtigen. Und das schafft eine
Funktion für Sie. Wenn Sie also auf Retinas sterben klicken, sehen
Sie hier,
dass diese Unwrap Funktion automatisch
erstellt wird . Und was das tut,
ist, dass diese Funktion jedes Mal ausgeführt wird , wenn
Sie diese Variable festlegen. Jedes Mal, wenn Sie diese Variable
festlegen, wird diese Funktion ausgeführt. Also doppelklicke ich
auf diese Funktion. Und ich
ziehe diese Bewegung hier drin und hielt die Kontrolle, ließ sie hierher fallen und ziehen sie
jetzt hierher, indem ich
sagte, Enumeration einschalten. Einfach so. Jedes Mal, wenn ich diesen Code ausführen werde
, führe ihn hier durch den
Server aus, der diese Variable einstellt. Jedes Mal, wenn
sich dieser Wert ändert, wird diese Funktion ausgeführt. Was ich
mit dieser Funktion machen möchte ist das Flipbook zu ändern. Denn denken Sie daran, dass wir in den Sprites eigentlich nicht hier sind, sind
wir innerhalb
der Spielerbasis. Wenn ich also zum
Spieler Tsarina gehe, erinnere dich an die Sprites, wir haben dieses
Source Flip Books. Es ist also ein Flipbook
, das wir ändern. Was wir hier haben, ist etwas, das Sets Flip Book
genannt wird. Und jetzt wird es
dir sagen, dass es für das Sprite hier ist. Und du wirst
auf Okay klicken, Ja, das ist für das
Sprite und es wird das
automatisch für dich
erstellen. Du hättest es auch einfach
anklicken und
von hier ziehen können und Flip Book sagen können, das ist das Gleiche. Also werden wir dieses
Flipbook hier auf das Idol setzen. Wenn wir im Leerlauf
sind, wenn wir nach rechts laufen, kopiere
ich das Einfügen verbinde es so mit dem
Ziel. Wenn wir
nach rechts laufen, führen
wir die Run-Animation oder das laufende Flipbook aus. Ich kopiere
das ein paar Mal einfügen. Der Lauf links ist eigentlich
auch die Run-Animation. Und der Sprung ist die
Sprunganimation wie diese, Sprung, Lipid wie
dieses und der Herbst. Wir haben nicht wirklich
eine neue Animation, also verbinde ich meinen Fall hier und
benutze einfach dasselbe hier, das Sprung-Flipbook. Okay, denken Sie daran, das hell zu
machen, Sie können entweder
so machen und mit
mehreren Orten verbunden sein oder manchmal ist
es sauberer, nur
mehrere solche zu verwenden. kannst du auch machen. Machen wir das einfach
für diesen hier. Ich
kopiere das ein wenig ein bisschen ein. Und verbinde den
letzten hier. Ich werde das später
sauberer machen, aber lasst uns jetzt einfach damit arbeiten. Zusammengesetztes Speichern, klicken Sie auf Play. Jetzt siehst du hier, wenn ich nach
rechts renne, renne ich. Wenn ich nach links renne, sehe
ich, ich renne aber ich laufe nicht die richtige Richtung
, wenn ich springe. Richtig springen. Und das liegt daran, dass
wir
die Sprunganimation nicht wirklich gemacht haben und das gleich
nach dieser Lektion tun
werden . Aber konzentrieren wir uns auf das Rennen. Laufen funktioniert also, aber ich gehe in die
falsche Richtung , wenn ich nach links renne. Und das liegt daran, dass dies
ein Sprite ist und Sie Ihr Bild
drehen müssen , damit
es richtig läuft. Also möchte ich dieses
Sprite einfach drehen, wenn ich renne. Wenn ich also hier nach links renne, läuft
es nicht in die
richtige Richtung. Was Sie also tun können,
ist dieses Sprite
hier zu nehmen und Sie können Rotation sagen. Denken Sie daran, wenn Sie nicht
wissen, was Sie tun, suchen Sie
einfach nach Rotation
und Sie können versuchen, diese
zu durchlaufen und zu
sehen, was Sie tun möchten. Und die, die wir verwenden,
ist die Einstellung der relativen Rotation. Wir wollen es drehen. Sie können hier etwas minimieren
und auf alles klicken. Zum Beispiel startet dieser
Spieler und klickt auf E für das
Rotationswerkzeug. Und Sie können sehen, dass Sie das Z drehen
müssen. Wenn Sie
also möchten, dass
sich etwas auf die andere Seite dreht, müssen
Sie das Z um 180 drehen. Also klicke ich hier
auf Control Z. Und das Z, du musst das Sprite um 180
drehen. Und Sie können hier verbunden anrufen. Es wird es also drehen,
bevor es das Flipbook setzt. Und denk dran,
für den Lauf müssen wir ihn
zurückdrehen. Kopieren dieses
Codes wird also chaotisch und bewegt
sich auf diese Weise. Also hier drehen wir es zurück. Stellen Sie es also auf 000 ein und
verbinden laufen Sie richtig, so. Jetzt sollte es
richtig funktionieren, wenn ich kompiliere und tatsächlich
vergessen habe, hier ein Ziel hinzuzufügen. Also lasst uns das kopieren so hier
einfügen. Und Sie können sehen, wenn
Sie einen Fehler haben,
es schreibt hier den Pfeil und
es heißt, dass Sie ein Ziel benötigen. Diese kompilieren und speichern. Einfach so. Und jetzt lasst uns spielen und sehen, ob ich nach rechts
gehe, gehe nach links. Weil er jetzt unsere Animation
einwandfrei funktioniert. Und jetzt verpassen wir
die Sprunganimation, und das werden wir
in der nächsten Lektion tun.
28. Player: Lassen Sie uns jetzt die
Jump-Animation machen. Gehen wir also zurück
zur Spielerbasis. Und hier drin, im Event Graph. Hier haben wir diese
Bewegung mit der IAO gemacht, mit dem Lauf nach rechts und
was sie nach links laufen. Was wir nicht wirklich zum Springen
gebracht haben. Und weiter springen,
wenn wir den
Status
„Set-Movements“ erneut ziehen , also ziehen wir diesen hier,
damit der Bewegungszustand so gezogen wird, dass wir ihn zweimal herausziehen können. Also haben wir sowohl den Sprung
hier als auch den Sturz. Wir müssen prüfen,
ob der Spieler springt oder ob der
Spieler fällt. Es ist das Gleiche. Es ist dieselbe Animation
in Maple Story. Es spielt also wirklich keine Rolle. Aber wenn du
dein eigenes Spiel erstellst und
du zwei verschiedene Animationen
für den Sprung und Fold hast. Das wäre wirklich
schön zu wissen. Also nochmal, genau wie
zuvor hier unten, in der Sprunglogik, überprüfst du
in der Sprunglogik, ob der
Spieler fällt oder nicht. Also müssen wir das Gleiche hier machen. Wenn wir zum
Event Graph zurückkehren, müssen
wir das Gleiche hier tun. Bevor wir also idol haben, ich Alt gedrückt und
klicke hier, um die Verbindung zu trennen. Ich werde das
ein bisschen weiter
weg bewegen , denn jetzt
können wir den Sprung hinzufügen. Also nehme ich die
Charakterbewegung und überprüfe, ob der Spieler fällt. Also kriegen wir, wenn ich
feststellen kann , dass es hier fällt, diesen
zu bekommen. Und lasst uns einen
Zweig wie diesen erstellen. Jetzt prüfen wir, ob
der Spieler fällt und ob der Spieler
fällt, springen wir. Also sind wir in der Luft. Und wenn der Spieler nicht
fällt,
was bedeutet, dass der Spieler im Untergrund
ist, sind wir nicht im Sprung. Wir werden
diesen laufenden Code
einfach wie zuvor ausführen. Aber hier springen wir,
wenn wir in der Luft sind. Jetzt müssen wir nachsehen. Springt der Spieler oder
der Spieler fällt? Welches ist es? Wir können das tun, wenn wir die
Geschwindigkeit dieser Akteure erhalten. Also klicke ich
mit der rechten Maustaste und hole
die Geschwindigkeit nach rechts , wie hier. Und wir bekommen die Geschwindigkeit. Und jetzt ist das ein Vektor. Sie können diesen Vektor jetzt brechen. Aber denn woran ich gerade
interessiert bin, wenn wir den Spieler hier haben, bin
ich daran interessiert, ob der Spieler hochspringt oder herunterfällt. Und wieder ist dies das Z, der blaue Pfeil hier ist der z. In der Z-Achse. Ich möchte sehen, geht es
in die Plusrichtung, was bedeutet, dass
der Spieler
nach oben geht oder das
Flugzeug nach unten fährt, was bedeutet, dass das Z tatsächlich
im negativen Wert liegt. Also werde ich am Ende die
Spielerbasis sein, diese Geschwindigkeit. Ich kann diesen Vektor nehmen
und ich kann Break sagen. Sie können diesen Vektor
auf x, y und z aufteilen. Denken Sie an einen Vektor, wenn ich Ihnen hier zeigen
kann, als wir eine
Vektorvariable erstellt haben, besteht
ein Vektor
aus drei Zahlen, genau wie der Ort
hier, drei Zahlen. Wenn ich also zurückgehe, lass mich das
einfach noch einmal löschen. Wir teilen diesen
Vektor also in x, y
und z auf, weil wir nur
an dem z-Wert interessiert sind. Ich möchte überprüfen, ob
das nach oben geht, was bedeutet, dass es im Plus oder nach unten geht, was
bedeutet, dass es im Minus liegt. Also nehme ich
das und sage größer. Ist das also größer als 0? Und erstelle
wieder einen Zweig wie diesen. Wenn es also größer als 0 ist, bedeutet
dies, dass der Spieler
springt, weil Sie
nach oben gehen , wenn er
nicht größer als 0 ist, also ist es im Minus bedeutet, dass
Sie herunterfallen. Und wenn der Spieler nicht
fällt, führen
Sie einfach diesen
normalen Laufcode aus. Okay, also lass mich
das jetzt ein bisschen näher bringen. Jetzt haben wir diese springende
Logik und wir können immer, normalerweise eine ganze Lektion
für eine Säuberung widmen , also mach dir keine Sorgen darüber, wenn
es ein bisschen chaotisch aussieht. Aber hier können wir einfach
kompilieren und speichern. Und jetzt möchte ich es dir
erklären. Klicken wir einfach auf
Play und sehen, was passiert. Wenn ich also auf Play klicke und
gesprungen bin , siehst du, dass ich springe. Es funktioniert. Großartig. Okay, also was passiert ist du hier nachschaust und
dann nach rechts, links gehst. Bevor Sie
diese Move-Animation ausführen, prüfen
Sie, ob
der Spieler fällt. Und wenn der Spieler fällt, bedeutet das, dass du springst. Okay, das ist in Ordnung. Also ja, du springst. Es stimmt. Du fällst. Was dann? Hier nimmst du die Geschwindigkeit
dieses Zeichens und du brechst diesen Vektor weil wir nur
an dem Z-Wert interessiert sind. Wir prüfen, ob der
Z-Wert über 0 liegt. Wenn ja, springst du. Wenn die Geschwindigkeit unter 0 liegt,
was bedeutet, dass Sie sinken, bedeutet
das, dass Sie fallen. Okay, was passiert hier? Sie führen
dieses Event aus und stellen es so ein, dass es diese Informationen überspringt, Sie sitzen hier, wir werden diese Veranstaltung
durchlaufen, weil dies letztendlich das
Ereignis ist, das Sie ausführen. Stellen Sie Bewegungen fest Zustände, an die Sie sich erinnern, dass Sie dieses Ereignis
aufrufen. Es läuft also
durch diese Veranstaltung. Es setzt diese Informationen , die springen, auf die Sie sie gesetzt
haben, hier laufen durch den Code. Es geht durch den Server. Der Server setzt
diese Variable. Und denken Sie daran, dass wir diese
Variable auf eine Wiederholungsbenachrichtigung setzen. Und noch einmal, wenn Sie
sich nicht an eine Benachrichtigung erinnern, denn im Moment
sind Sie der Server und der Server legt die Variable fest. Woher würde der Client
wissen, was diese Variable ist, wenn Sie
nichts tun, weil Sie sich daran erinnern, dass Sie sich auf dem Server befinden und der Client nicht
wirklich sehen kann, worauf Sie ihn einstellen, es sei denn, Sie replizieren
diese Entzündung. Sie replizieren
die Informationen also zurück an den
Client, damit der Client den Wert
dieser festgelegten Variablen
sehen kann . Was auch immer die Benachrichtigung ist, es benachrichtigt alle Kunden,
worauf Sie es eingestellt haben und dies geschieht durch diese
Ribner OnReceive-Funktion. Ein Vertreter benachrichtigt also, wenn Sie eine Variable auf rip benachrichtigen
festlegen, wird diese Entpackungsfunktion erstellt. Und da drinnen,
was auch immer Sie hier programmieren, werden
alle Kunden diese Änderung sehen. diesem Grund stellen wir
das Flipbook hier ein. Weil wir wollen, dass
alle Kunden sehen, dass ich in
meinem Idle Flip Book bin. Ich möchte, dass alle
Kunden sehen, dass ich in meinem
Jump-Flipbook bin und so weiter. Sie senden also all diese
Informationen an den Kunden. Nun, die Information
wurde hier gesetzt, ist Sprung, ging
hier durch den Server, setzte die Variable
und sie wird in die
Entpackungsfunktion gehen, und sie wird in die
Entpackungsfunktion gehen denn jedes Mal, wenn Sie eine
Rep Notify Variable ändern, es wird
die Unwrap Funktion ausführen. Und da Sie diesen
Wert jetzt auf springen setzen, wird er nur durch
diesen Sprungausführungs-Pin laufen. Es wird all dies
ignorieren weil es nur sieht, dass Sie es
jetzt so eingestellt haben, dass es springt. Es wird also
diese Ausführungsnadel ausführen, und es wird das Flipbook dieses
Hellen zum Springen bringen. Wenn Sie also auf Leertaste
klicken und springen, wird Ihr
Flipbook so eingestellt, dass
es springt. Und um es auszuprobieren. Du kannst es sehen, es funktioniert. Ich kann es auch beim
Kunden sehen. Um sicherzustellen, dass es funktioniert. Ich muss auch als Kunde herumlaufen und
als Kunde springen um zu sehen, ob ich der
Kunde bin und springen darf. Denn denken Sie daran, dass
der Server überprüft was Sie als Client
tun. Jetzt kannst du also sehen, dass ich als Kunde springen
kann. Und auch wenn ich das
ein bisschen runternehme, kannst
du sehen, dass der Server das alles machen
kann. Natürlich hat der Server wiederum
die
Berechtigung, irgendetwas im
Spiel zu tun , weil der
Server das wahre Spiel ist, der Server alle
Clients auf das überprüft, was sie tun und den Server
ist in der Lage alles zu tun. Es ist also eher wie der Kunde. Wir müssen uns auch
beim Kunden erkundigen. Wenn der Kunde all das
kann und der
Kunde dies auch in der Lage ist, all dies
zu tun. Es funktioniert also einwandfrei.
29. Benutzerdefinierte variable Eingaben: Jetzt möchte ich Ihnen einige
benutzerdefinierte Variableneingaben zeigen. Wenn wir also zurück zur
Spielerbasis
und hier in deiner
ungelesenen Bewegungsfunktion gehen , kannst
du hier sehen, bevor wir
jetzt das Leerlauf-Flipbook einstellen, wir setzen das Run-Flipbook, wir setzen das Jump Flip
Book und so weiter. Aber was ist, wenn wir jetzt
hierher gehen, um nachzuschauen? Wenn wir spawnen, schauen Sie
sich den Server an. Jetzt können wir also sehen, dass wir als Tsarina
antworten. Und das heißt, das ist großartig. Aber was ist, wenn wir Luke hervorgebracht haben? Luke
hat dieses Flipbook nicht wirklich. Sieh mal. Ist dieses Mädchen nicht umgedreht? Wir müssen noch ein
Flipbook für Luke machen. Und wie benutzen wir Lukes Flipbook anstelle
von Serenas hier? Und deshalb kodieren wir fast
nie Sachen in Spielen. Normalerweise hasse ich
hartes Codieren so. Dies wird als Hardcoding bezeichnet
oder wählen Sie einfach eine Variable aus. stattdessen einfach mit der rechten Maustaste hier und fördern Sie dies in eine Variable. Und jetzt kann man dies
eine Variable nennen , etwas
zum Beispiel, ich kann es als Leerlauf, Flip, nicht so guten
Platz bezeichnen. Ich drehe das Buch um. Jetzt habe ich das
in eine Variable verwandelt. Wenn ich nun kompiliere
und du siehst, ob ich auf diese Variable
klicke, ist
der Standardwert jetzt dieses Flipbook, da ich hier ausgewählt habe, haben
wir
das Run-Flipbook ausgewählt. Wenn ich jetzt mit der rechten Maustaste klicke und eine Variable
bewirbt, wird
dies als Standard festgelegt. Jetzt können wir dies
als Standard für diesen entfernen. Jetzt
klicke ich einfach auf Löschen. Klicken Sie also auf den Leerlauf drehen Sie eine Variable
, die Sie gerade erstellt haben. Sie können auch sehen, dass es
zu einem Papier-Flipbook-Typ gemacht hat. Sie können hier anklicken,
ich klicke auf Löschen. Jetzt
ist der Standardwert nichts. Okay? Woher
wissen wir von hier aus, welches Flip Book
für Serena laufen soll und woher wissen wir,
was wir für Luke laufen sollen? Jetzt, seit du
es in eine Variable verwandelt hast. Und denken Sie daran, dass wir
im Bass des Spielers sind. Spielerbass ist der Elternteil für die for-Schleife und für Serena. Das sind also die Eltern. Jede Variable, die
Sie innerhalb
des Elternteils erstellen, wird auch in den untergeordneten Elementen
angezeigt. Wenn ich also zuerst auf Tsarina klicke und wenn ich zu den
Klassenvorgaben hier rechts gehe, kannst
du sehen, dass ich sowohl
den Bewegungsstatus das Leerlauf-Flipbook habe,
denn in der Spielerbasis haben
wir sowohl das
variablen Bewegungen, Status und das Leerlauf-Flipbook. Hier kann
ich zum Beispiel für Serena die Leerlauf-Animation
für das Leerlauf-Flipbook auswählen. Aber wenn ich jetzt zurück zu Luke gehe, öffne ich den vollständigen
Blueprint-Editor für Luke. Wenn ich zu den Standardwerten der Klasse gehe, kann
ich ein anderes
Leerlauf-Bücher auswählen. Im Moment tue ich es nicht wirklich, wir haben noch nicht importiert, es
sieht Animationen aus. Aber ich kann eine
benutzerdefinierte Leerlauf-Animation auswählen. Und hier könnte ich
Lukes Idle Flip Book auswählen ,
wenn ich es geschafft habe. Anstatt also hier die
Codierungsvariablen hart zu codieren, mache
ich es normalerweise
in eine Variable. Und Sie können
diese Animation jetzt ständig einstellen ,
je nachdem, ob Sie dies getan haben Nehmen wir an, Sie haben zehn
Charaktere jetzt können wir auf
alle zehn Charaktere klicken und
sie hier als benutzerdefiniertes
Flipbook für den Leerlauf festlegen sie hier als benutzerdefiniertes
Flipbook für den Leerlauf Sie können wieder zurückgehen
und mit der rechten Maustaste hier klicken und diese in eine
Variable für den Sprung hochstufen. Und dann kannst du
das Jump-Flipbook
für jeden der Charaktere einstellen . So können wir sehen, ob ich mit der rechten Maustaste auf alle diese klicke und eine Variable
fördert. Und wenn ich mit
der rechten Maustaste hier klicke, wenn ich sie nur in eine Variable bekomme, können
Sie sehen, dass ich viele
Variablen bekomme und Sie können
sich
mithilfe einer Struktur Speicherplatz aus all
diesen Variablen sparen sich
mithilfe einer Struktur Speicherplatz aus all . Darüber werden wir in der nächsten Lektion
sprechen , wir werden
über Strukturen sprechen. Also lösche ich
die hier noch einmal. Wenn ich sie einfach lösche, möchte
ich nicht
zu viele Variablen diese Animationen erstellen. Es heißt, dass Sie
daraus eine Variable erstellen können, aber Sie können tatsächlich eine so
genannte Struktur
verwenden , die effizienter
ist. Und ich zeige dir in der nächsten Lektion, wie man eine
macht.
30. Strukturen: Megastruktur. Lassen Sie uns jetzt mit der rechten Maustaste klicken und einen neuen Ordner
erstellen. Ich erstelle einen
Ordner namens structs. Dies sind für die Strukturen
und Doppelklick darauf, und statt hier können Sie mit der
rechten Maustaste in Blueprints klicken. Sie können diese
als Struktur bezeichnen. Wenn ich das schaffe,
zeige ich dir, was das ist. Fangen wir mit dem
STS an, dem Präfix. Und dafür wird diese
Struktur alle Variablen
für die Spieler
enthalten. Ich nenne
es Spieler-Info. Also alle Informationen
über diesen Spieler. Jetzt können
Sie innerhalb der Struktur beliebig viele
Variablen hinzufügen. Zum Beispiel nennen
wir es die erste Animation im Leerlauf. Ohne ein Leerzeichen.
Eigentlich nenne ich es einfach
so. Ich klicke auf eine neue
Variable und mache eine für
die Run-Animation. Und lasst uns vorerst einfach
damit arbeiten. Also hier ist das Recht. Sie können den
Animationstyp ändern. Und für die
Animationen, denken Sie daran, dass wir mit 2D arbeiten,
also sind es Paper Flip Books. Und wenn ich es hier finde, wenn du nur Papier schreibst,
dieses eine Papierkippbuch und
wähle die Objektreferenz aus. Dasselbe gilt für dieses
eine Papier-Flipbook. Wenn Sie nun
eine neue Variable erstellen, wird
sie automatisch
so eingestellt, dass ein Flipbook geebnet wird,
da dies das ist, was Sie zuvor ausgewählt haben,
die Sprunganimation. Fügen wir auch die
Herbst-Animation hinzu. Okay, also haben wir
diese Animationen jetzt. Also vorher, anstatt
mit der rechten Maustaste zu klicken und
alle diese in eine Variable zu befördern. Und du siehst hier unten hatten wir
viele Variablen. Sie können sich
Speicherplatz sparen, wenn
Sie all diese Variablen
in eine Struktur einfügen. Jetzt heißt die Struktur, die wir
verwenden können, Player-Info. Später können wir es also auch für so
etwas wie den Namen des
Spielers verwenden . Wenn Sie eine Miniaturansicht
für den Player haben, können
wir das Bild hier platzieren. Wenn Sie einige
springende Soundeffekte haben, können
wir auch eine Variable
für die Soundeffekte erstellen. Alle Spielerinformationen befinden
sich also innerhalb dieser Struktur. Um nun eine Struktur zu verwenden, kannst
du zur
Spielerbasis zurückkehren. Und drinnen von hier kannst du
eine neue Variable erstellen und
du kannst sie aufrufen, nennen
wir es Player-Info. Jetzt ändern wir diesen
Typ in das, was Sie hier nennen,
ist die Spielerinformationen. Es sind also keine Spieler-Info
und Sie können es hier sehen. Dies ist die Struktur. Wenn Sie kompilieren und speichern, können
Sie
diese Struktur jetzt hier herausziehen auf Informationen abrufen
klicken. Und Sie können
aus dieser Struktur ziehen. Und was normalerweise geschieht,
ist, auf die Bruchstruktur zu klicken. Indem
Sie diese Struktur aufbrechen, können Sie alle Variablen sehen , die Sie der Struktur
hinzugefügt haben. Und als eine sehr, sehr coole Sache, jetzt, da Sie diese Struktur hinzugefügt
haben, denken Sie daran, wenn Sie Variablen hinzufügen Lassen Sie mich
jetzt dieses
Flipbook löschen, das Idle Flipbook,
das wir zuvor erstellt haben Hier oben lösche ich es. Jetzt haben wir das nur noch. Was Sie jetzt tun können, sehr cooles Zeug ist, dass Sie diese jetzt in den Leerlauf
stecken können. Also dieses war das Idol hier, und das ist die Run-Animation. Also werde ich den
Lauf hier anschließen, den Lauf hier. Dies ist die Sprunganimation hier. Und die Herbstanimation
ist die gleiche wie der Sprung, aber wir können sie einfach hier einstecken. Okay? Jetzt kann ich sehen, dass Sie
all diese Variablen
in einer Struktur haben und es
sieht jetzt viel besser aus. Und genau wie das, was ich
Ihnen zuvor gesagt habe, können Sie, wenn Sie der übergeordneten Klasse eine Variable
hinzufügen, auch
die untergeordnete Klasse erben. Wenn Sie also jetzt zu Serena gehen und
auf die Standardwerte der Klassen klicken können, können
Sie diese
Player-Infrastruktur sehen. Und wenn Sie darauf klicken, können Sie alle diese
Variablen
sehen und Sie können sie auf
das Flipbook
einstellen , das
Sie hinzufügen möchten. Für Luke können wir das Gleiche
auch tun, wenn wir Loops und
Animationen hinzufügen , wir können auch hier
Lukes
Papier-Flip-Bücher hinzufügen . Damit es funktioniert,
gehen wir zurück zu Serena und Sie können hier
auf Leerlauf klicken, um die Animation im Leerlauf zu erhalten. Für die gesamte Run-Animation können
Sie Run,
den Sprung auswählen , Sie können Java auswählen. Und für den Herbst ist es genau derselbe wie
dieser Sprung wie dieser. Also kompilieren und speichern, alles
speichern. Probieren wir es aus.
Lasst uns auf Play klicken. Und jetzt, wenn wir herumlaufen, können
Sie sehen, dass alle
Animationen funktionieren und wir
verwenden jetzt diesen Bruch.
31. Fertigstellung der Figurenbewegung: als letztes die Lassen Sie uns als letztes die Bewegung
für den Spieler tatsächlich
abschließen und weitermachen. Von hier aus gehen wir zurück zum
Spieler, der Spielerbasis. Und was ich tun möchte, ist einfach die Charakterbewegung zu
bearbeiten. also auf die
Charakterbewegungen klicken, stellen
wir die Skala Schwerkraftskala auf eins ein. Jetzt, als ich gesprungen
bin, denke ich, dass meine Charaktere
ein bisschen zu hoch fliegen. Es ist also, als wäre die Schwerkraft
nicht hoch genug. Also werde ich
die Schwerkraftskala
hier in der
Bewegungskomponente auf 1,9 erhöhen die Schwerkraftskala . Denken Sie daran, dass im
Pleuraraum, wenn Sie ihn ändern,
es auch für Serena
und Luke gelten wird und Luke weil sie Kinder
der Spielerbasis sind. Also hier in der Graustufe 1.9 und S für die Bewegungsgeschwindigkeit für
Maple Story habe ich es getestet. Ich habe das Spiel gespielt
und denke irgendwo etwa 155 in der Gehgeschwindigkeit. Und du siehst, ob
ich auf Play klicke, jetzt arbeiten wir viel langsamer. Und es ist eher wie Maple Story. Dies ist die Geschwindigkeit, mit der
Sie damit laufen werden. Wenn ich es also größer mache, kannst
du es hier sehen. Das ist also eher
wie Maple Story, der Sprung, aber ich denke, wir sollten ein bisschen höher
springen. Also gehe ich zurück zu den Bewegungen der
Spieler-Basischaraktere . Und hier unten im
Sprung Z Velocity werde
ich es senden und stattdessen auf 500
setzen. Okay, also kompilieren und speichern wir. Und ich denke, das ist
es für die Bewegung. Wenn ich also auf Play klicke und sehe, dass dies die Bewegung ist
und es kann springen. Im Moment
werden wir auch
von dem Charakter geblockt . Wir müssen
das entfernen, damit Sie
sehen können , dass es unseren Charakter
ausbricht, gedrängt, unseren Charakter Bec. Aber lasst uns tatsächlich zur Spielerbasis
zurückkehren und auf die
Kapselkomponenten klicken. Das macht also die Kollision. Und lasst uns nach unten scrollen und Sie können sehen, wie diese Kollision
genannt wird. Klicken wir auf diese
Kollisionsvoreinstellung , um zu sehen, was los ist, und das ist die ganze
Kollision. Also jetzt klicken wir hier und klicken auf Kostüm,
weil wir das bearbeiten möchten. Jetzt können wir die
Pons sehen. Das ist was es ist. Das ist ein Bauer. Die Teiche blockieren
sich gegenseitig. Und das wollen wir nicht. Wir wollen, dass sich die Punkte vorerst gegenseitig
ignorieren, ignorieren
wir uns einfach gegenseitig. Lass uns kompilieren und
mal sehen, ob der Job ist. Also klicke auf Play
und renne herum. Ich sehe, dass ich mich jetzt nicht
blockieren kann. Also wenn ich diesen Kunden nehme, ist das jetzt behoben, okay? Die Teiche können sich also nicht mehr
gegenseitig blockieren. Das wollen wir also. Und du kannst sehen, dass
alles gut funktioniert. Der Sprung, ich glaube, ich
springe hoch genug. Aber auch hier ist das dein Spiel. Wenn du schneller laufen willst, wenn du willst, ist die
Kamera näher. Denken Sie daran, dass Sie die Kamera
bearbeiten könnten wenn Sie zu Tsarina gehen und wir sie
tatsächlich falsch hinzugefügt haben. Ich kann sehen, dass ich die
Kamera in Tsarina hinzugefügt habe, aber wir müssen
die Spielerbasis hinzufügen , da
Luke auch die Kamera braucht. Das ist also eine schnelle Lösung. Lassen Sie mich diesen Federarm löschen. Lösche die Kamera. Lass mich stattdessen
zur Spielerbasis gehen. Klicken Sie auf die Kapsel und fügen Sie den Federarm hinzu. Sie in der Kamera einfach nach der Kamera. Jetzt haben wir den
Federarm und wir haben die Kamera. Und klicken Sie erneut auf die Kamera, gehen Sie hier hoch und ändern Sie sie
in die orthogonale Ansicht. Und denken Sie daran, Sie
können ändern, wie nah und weit die Kamera entfernt ist,
indem Sie diesen Wert ändern. Und genau so war es
auf 130. Jetzt haben sowohl Luke als auch
Tsarina diese Kamera. Bevor wir das beenden,
gehen wir den Code einfach schnell durch weil ich die Dinge
aufräumen möchte , damit es kein echtes Durcheinander ist. Also schaue einfach hier nach, so sieht es aus. Und um den Code zu bereinigen, können
Sie auch
auf diese Pins doppelklicken. Durch Doppelklick erstellen
Sie diesen Umleitungsknoten, den Pin umleiten. Und Sie können
hier doppelklicken und
es etwas sauberer aussehen lassen. Und ich denke, das sieht
gut aus und schaue hier, vielleicht einfach, wenn du
es einfach hier aufstellst, so. Ein weiterer Trick ist, dass Sie
hier
auswählen können , was Sie wollen, und klicken Sie auf Warteschlange. Dadurch werden alle
diese Notizen, die
Sie ausgewählt haben, begradigen . Wenn Sie sie auswählen, klicken Sie auf Q, werden sie
begradigt. Also haben wir den Sprung und wir haben den Fall hier nebeneinander. Und lassen Sie uns das ein
bisschen weiter wegbewegen. Und wir haben auch
die Walk-Animation. Ich denke das ist, das ist gut. Was wir jetzt tun können,
kann ich das nach unten bewegen, und ich kann
das auch nach unten bewegen. Auch hier können Sie all diese
auswählen und auf Cue
klicken, um
sie so zu begradigen. Und Sie können es möglicherweise auch damit
machen. Oder ich denke vielleicht so und wir können das
weiter nach unten bringen. So
sieht das wahrscheinlich viel besser aus. Und wir können das
weiter wegbewegen, damit sie nicht so
übereinander gruppiert sind. Und vielleicht kannst du das
auch hier oben verschieben. So können Sie auch
Umleitungsschneit
für Ausführungspins erstellen ,
wenn Sie möchten. Aber ich glaube, ich lasse
es tatsächlich so sein. Ich bringe es näher. Ich denke, das sieht ein
bisschen komisch aus wie hier. Okay, jetzt haben wir das
korrigiert. Und eine andere Sache ist, dass Sie alle diese Knoten mit der
Maus bewegen können. Sie können auf sehen klicken
, um einen Kommentar zu erstellen. Also klicke auf „sehen“. Du kannst diese
eine Spielerbewegung nennen. Sie kann auch
genauer sein, was Sie meinen. Also Claire Bewegung, ich nenne es
nur etwas Kurzes
für den Kurs damit die Videos nicht
zu lang werden. Langsame Bewegung WAR eigentlich, es ist kein 3D-Spiel, also rechts und links zum Beispiel so
etwas. Und dafür sind
dies auch die
Bewegungsphase, daher können wir
sie in den Kommentar aufnehmen. Ich klicke und ziehe
den Kommentar so nach unten. Und jetzt haben
wir hier unten den Sprung. Ich klicke
auf „Sieh“ und sage „Sprung“. Und leg es hier runter. Okay, also ist es jetzt etwas
organisierter. Und Sie können auch
zur Unwrap Funktion gehen. Vergessen Sie nicht, dass Sie
auch zu den Funktionen gehen und diese Funktionen organisieren können. Dieser sieht wegen dieser Zeilen ein
bisschen chaotisch
aus, aber wir müssen
wirklich viel dagegen unternehmen. So können wir also nicht wirklich Strukturen wie diese erstellen. Also denke ich, das sieht gut aus, aber man kann immer
versuchen,
sie ein bisschen weiter
voneinander zu trennen . Versuche sie so
untereinander zu stellen. Okay, ich denke, das
sieht vorerst gut aus. Sie können jederzeit, wenn
Sie es versuchen möchten, Umleitungsnotizen erstellen. Wenn du willst. Hören Sie für einen
Doppelklick, versucht es, ich kann sogar Notizen
umleiten, wenn Sie versuchen
möchten , es
so weit wie möglich zu reinigen. Aber ich denke, ich lasse es vorerst
hier sein , wir wissen, was
es gerade macht. Sie können auch einen
Kommentar abgeben, wenn Sie möchten. Und lasst uns kompilieren und speichern. Und jetzt funktioniert alles. Und klicke auf Play hier. Und es wird dunkel und ich weiß warum ich vergessen habe, die Kamera zu
drehen. Wenn ich also zuerst im Frühjahr wieder zur Spielerbasis gehe, werde
ich wieder entfernt. Sie führen Kollisionstests durch. Und klicken
wir in den Ansichtsfenstern auf den Federarm. Klicken wir auf E, um uns zu drehen. Und lass uns diese
90 minus 90 Grad drehen, also ist es davor, damit
wir den Charakter sehen können. Und jetzt klicken wir auf Play. Und jetzt
funktioniert alles richtig. Wir können springen, die
Bewegung funktioniert. Und wieder müssen Sie
es auch beim Kunden überprüfen. Wenn ich das also kleiner mache, musst
du
es beim Kunden überprüfen. Und der Kunde kann
auch
springen und rennen , damit du jetzt zusammen
spielen kannst. Und jetzt funktioniert alles und lass uns
zur nächsten Lektion übergehen.
32. Erstellen der zweiten Figur: Wir sind jetzt bereit,
Luke als Charakter zu erschaffen. Jetzt habe ich das
Wichtigste für dich in deinen
Kursmaterialien. Wenn du wieder zu
deinen Kursmaterialien, Charakteren Luke und
in Luke gehst, möchte
ich, dass du diese hier importierst. Gehen wir also zu den
Asset-Charakteren hier. Lass uns einen neuen Ordner erstellen
und ihn Luke nennen. Jetzt importieren wir alles, was
sich in diesem Ordner befindet. Und du wirst wahrscheinlich
mehr Animationen hier haben. Ich füge
Animationen hinzu , während ich
mit diesem Kurs fortfahre. Ziehen Sie sie also in Ihren Inhaltsbrowser und
Sie haben sie importiert. als Übung, was
ich von Ihnen tun soll, Versuchen Sie als Übung, was
ich von Ihnen tun soll, diesen ganzen Prozess
selbst durchzuführen , da dieser Prozess entspricht, was wir
zuvor in den
vorherigen Lektionen gemacht haben . Versuchen Sie also,
Papier-2D-Einstellungen anzuwenden,
versuchen Sie, die Sprites zu extrahieren,
versuchen Sie, selbst
Flip-Bücher zu erstellen. Versuchen Sie, sie in den von uns erstellten
Papiercharakter von
Luke Blueprint zu importieren . Und versuche das alles
selbst zu machen und schau, ob es dir gelingt. Und wenn es dir immer
noch schwer fällt, lass uns hier zusammen gehen
und weitermachen, aber versuche es selbst zu machen. Es ist sehr gut
, das auszuprobieren. Es tut niemandem weh. Du kannst einfach wieder hierher kommen
und wir machen es zusammen. Wenn Sie sich also nicht
sicher sind, wie es geht, ist
es immer noch, wir können
versuchen, es gemeinsam zu tun. Also
klicke ich noch einmal auf alle von ihnen. rechten Maustaste auf Produktion,
wenden Sie Papier auf die Einstellungen und gehen Sie dann jedes einzelne durch. Also im Leerlauf werde ich die
Sprites extrahieren. Ich werde ein
bisschen schneller gehen, weil wir das
vorher gemacht haben, jetzt werden wir Tsarina. So steigt Raster die 180 um 180 um 180, um die
Sprites so zu extrahieren. Und wieder benenne ich sie
um. Okay, also habe ich
sie alle in Sprites
extrahiert . Und ich habe auch Flip Books
erstellt. Denken Sie also daran, dass Sie zum Beispiel auswählen, ausführen und mit der rechten Maustaste klicken
und ein Flipbook erstellen können. Also habe ich diese
drei Flip Books erstellt und muss jetzt die
Frames pro Sekunde ändern. Und für den Lauf oder eher
für den Sprung machen
wir einfach einen
Frame pro Sekunde. Und für den Leerlauf waren
es zwei Frames pro Sekunde. Und für den Lauf
glaube ich, dass es sechs sind. Ich erkundige mich nur
bei Tsarina hier. Ja, sechs Frames pro Sekunde. Also machen wir das Gleiche. Sechs Frames pro Sekunde wie diese. Jetzt erstellen wir hier einen
neuen Ordner. Klicken Sie also mit der rechten Maustaste, erstellen Sie einen neuen
Ordner namens Textures. Und ich nehme
all das hier,
sowohl diese Brights als auch die
Texturen hier drin, wir haben nur die Flip Books. Als Nächstes können wir
zum Blueprints Player gehen , Luke. Jetzt
fügen wir das Flipbook hinzu. Öffnen Sie also den vollständigen Blueprint-Editor. Und lasst uns zu den Ansichtsfenstern gehen. Und drinnen hier klicken Sie auf die Sprites und
fügen Sie dann schauen Sie hier hinzu. Also die ungenutzte Animation hier drüben. Wir müssen
diese Kapsel wieder anpassen , damit sie
nicht mit unseren,
all unseren Kacheln kollidiert . Ich werde mich einfach auf
Serena beziehen, um zu sehen, was ihre war. Oder vielleicht
ist es besser, dass wir es in der Spielerbasis tun
können . Es gilt also für
alle Spieler Wenn du mehr Spieler hast. Also 33 von 16 gehe
ich zurück zur Standardeinstellung und erinnere mich nur an
die Zahlen 3316. Also mache ich das
innerhalb der Spielerbasis, also müssen wir das nicht ständig
machen. Vielleicht fügen wir später noch viel mehr
Charaktere hinzu. Also klicke auf die
Kapsel und schreibe 33. Und wir müssen diese
Nummer hier unten tatsächlich
zuerst ändern , sonst
wird es Ihnen erlauben. Also 16 von 33. Und wenn wir
diese untergeordneten Blueprints kompilieren ,
werden alle diese Größe haben. Okay, also sollte das getan werden. Und denken Sie daran, dass
wir in der Spielerbasis innerhalb unserer Unwrap Funktion diese Struktur hinzugefügt haben. Denken Sie also daran
, dass Sie
einen Blick darauf werfen müssen , welche Animationen
der Charakter hat. Und denken Sie daran, wenn Sie Variablen innerhalb
einer übergeordneten Blueprint-Klassen erstellen , werden diese
hier in
Klassenvorgaben im untergeordneten Standard angezeigt . Also hier musst du genau wie
Serena
auswählen , wo wir
diese Animationen ausgewählt haben. musst du
auch machen, oder Luke. Jetzt kannst du sehen,
wie cool das ist. Jeder Charakter, den wir
haben können, unser Idol, unseren Custom Run, unseren benutzerdefinierten Sprung und unseren benutzerdefinierten Fall. Weiter weiter. Lass uns das machen. Und für den Sprung haben wir einen
Sprung und für den Herbst
benutzen wir auch das Gleiche hier. Okay. Also glaube ich nicht, dass wir irgendetwas
verpassen. Versuchen wir zu spielen und zu
sehen, was passiert. Und lasst uns zuerst zu den
World-Einstellungen gehen. Denken Sie daran, dass wir
Serena
gerade als
Standardklasse ausgewählt haben Serena
gerade als
Standardklasse , da wir noch
keinen Zeichenauswahlbildschirm haben. Also lasst uns
hier klicken und es so ändern , dass es stattdessen aussieht, damit
du ihn testen kannst. Und klicken wir auf Play. Jetzt schauen die Befragten nach und Sie können sehen, dass Luke auch arbeitet. Alles funktioniert gut. Also schauen wir beide jetzt an und
wir haben Tsarina im Spiel.
33. Hinzufügen von Jump: Okay, also für den
Sprungeffekt habe ich wieder in den Kursmaterialien innerhalb von Audio
importiert. Ich habe diesen
namens SF6-Sprünge importiert. Also haben wir den Sprungeffekt
und lassen uns einen neuen Ordner erstellen. Ich klicke auf
diesen Inhaltsordner. Und hier draußen, machen wir
einen neuen namens Audio. Und drinnen gehen
wir zurück zum Audio und ziehen es
uns in diesen Ordner. Und wir können es spielen und
sehen, ob es zu laut ist. Ich denke, die Lautstärke ist nett. Wenn du also einen Sound importierst, lass uns versuchen,
dieses Ding zu codieren , und ich
zeige dir, wie das im Multiplayer geht. Also letztendlich, was Sie hier in der Blaupause machen möchten
, Gehen wir zurück zum
Spieler, der Spielerbasis. Wenn wir nun
zum Event Graph zurückkehren, sind Sie
vielleicht
versucht, dies zu tun. Also hier für den Sprung. Jetzt mache ich es falsch damit du daraus lernen kannst. Hier im Sprung vergleiche
ich
im Einzelspieler Single Player und
Multiplayer, vergleiche
ich
im Einzelspieler Single Player und
Multiplayer damit Sie die guten Praktiken
sehen können. Im Einzelspieler
soll
es also wie
hier im Sprung sein. Wenn ich Jump präsentiere, werden
wir diesen
Soundeffekt hier natürlich machen, aber das ist
im Multiplayer falsch. Und ich zeige dir warum hier. Um ein Geräusch zu machen,
können wir sagen „Spielton“. Und Sie können entweder
Ton an einem Ort abspielen oder Ton an d abspielen. Wenn Sie also möchten, dass die
Leute den Ton hören, was der Unterschied ist, wenn Sie einen Ton an einem Ort
abspielen. Wenn Sie also ein Spieler sind, hier
auf diese Seite stehen und springt, wird
der Ton
von dieser Seite hier zu hören sein. Wenn also ein Spieler hier steht
und hier dein Sprung hier ist
, wird er hier das
Geräusch aus diesem Bereich hören. Wenn Sie jedoch Sound 2D abspielen, wenn Sie
also Delay Sound 2D wählen, wird er nicht an
einem bestimmten Ort liegen, aber es wird
wie ein 2D-Effekt abgespielt. Normalerweise verwenden wir dies
als UI-Elemente. Und wenn Sie möchten, dass ein Ton an einem
bestimmten Ort gehört wird, verwenden
wir den
Play-Sound vor Ort. Es hängt alles davon ab, ob du willst, dass die
Leute dich springen hören. Und sagen wir, wir
wollen das machen. Letztendlich möchten Sie also, dass es Sound an einem Ort
abspielt. Sie möchten den Ton auswählen. Und anstatt
die Schallwelle auszuwählen, gehen
wir tatsächlich
zurück zum Audio. wir mit der rechten Maustaste darauf. Und lasst uns eine Warteschlange erstellen. Und nennen wir es als C
für Sound Cue und Jump. Sie können jetzt
darauf doppelklicken, um es zu öffnen. Und das ist ein Sound-Cue, also kannst du hier oben
auf Play klicken. Und es kann das Geräusch hören. Eine sehr coole Sache ist, wenn
du hier Variation willst, kannst
du davon ziehen. Sie können sehen, dass dies die
Tonnoten sind, die Sie verwenden können. Sie können hierher ziehen
und Modulator sagen. Sie können
den Modulator auch hier sehen. Wenn Sie also auf den Modulator klicken
und was das tut,
ist, dass er hier
jedes Mal klingt, wenn er gespielt wird. Also wählen wir hier die Tonhöhe, Minimum und Maximum. So zum Beispiel 0,9 bis 1.1. Und jedes Mal, wenn Sie auf Jetzt abspielen
klicken, wird
die Tonhöhe des Sounds geändert sodass es jedes Mal so klingt, als wäre es ein
anderer Sound. Sie können also sehen, dass es eine kleine Variation ist, die Sie manchmal machen
können. Aber ich möchte, dass der Sound
derselbe ist, also
lösche ich ihn einfach und mache das. Also denke ich, dass das vorerst in Ordnung ist. Und schließen wir diesen
Sound Cue nach unten. Hier spielt sich also vor Ort ab. Wählen wir unseren Sound-Cue aus. Und wie ist der Standort? Und genau dort ist
der Charakter. Also lassen Sie uns mit der rechten Maustaste klicken und sagen, wie folgt den
Schauspieler-Standort abrufen und hier verbinden. Also bekommen wir diesen
Schausteller-Standort wo immer du bist und du
spielst dort den Sound. Okay, also
versuchst du das zu tun, und dann klickst du auf Play und
springst hierher. Es funktioniert. Und das ist der
falsche Weg, dies zu tun. Weil denken Sie daran, dass Sie gerade
im Mehrspielermodus sind. Wann immer du das tust, werden
die anderen es nicht
hören. Denken Sie also daran, dass wir diese Server
- und Clientbeziehungen haben. Sie haben
das also als Server und Sie haben
dies als Client. Und Sie möchten den Sound
abspielen und ihn
dann an
alle Kunden weiterleiten. Also platziert der Server den Sound und wirft
ihn an den Client. Gehen wir also hin und wieder zurück, genau wie das, was ich dir zuvor
gesagt habe, müssen
wir alles mit
dem Server überprüfen , damit die
Clients nicht betrügen. Der Server ist das wahre Spiel. Der Server hat die
Berechtigung , alles
in diesem Spiel zu tun. Jeder Code, den Sie
benötigen, muss also
vom Server überprüft und dann auf die Clients
repliziert werden. Sehen wir uns also ein Beispiel dafür an. Gehen wir zurück zum Spieler. Lassen Sie uns dieses einfach löschen. Vielleicht bist du also
auch versucht zu sagen,
okay, also bevor wir
diese Bewegung hier gemacht haben
und
die Bewegungszustände durchlaufen haben, dann
ging dieser Bewegungszustand durch den Server. Und der Server hat
diese Variable festgelegt. Und es wird eine
On-Ramp-Funktion ausführen, weil Sie daran denken, dass diese Variable als Wiederholungsbenachrichtigung
repliziert wurde. Also
wird der Server alle Clients über
die
Änderung dieser Variablen informieren . Innerhalb dieser Unwrap Funktion. All dies wird an alle Kunden
repliziert. Vielleicht
versuchen Sie also zu sagen, okay, all dies wird auf die Clients
repliziert. Also kann ich hier meinen Place
Sound hinzufügen und er
wird an alle Kunden repliziert. Also haben wir einen Sprung hier. Wir haben das Jump Flip Book. Und vielleicht werden Sie stattdessen
versucht,
den Play-Sound hier
drüben hinzuzufügen . Das kannst du machen und
es wird funktionieren. Alle Kunden
werden dich springen hören. Wenn Sie also der Server sind, wenn Sie der
Client sind, ist das okay. Sie werden alle
hören, wie du reinspringst. Dies funktioniert auch richtig. Aber es gibt einen kleinen
Fehler und ich werde dir
beibringen, dass dies das
Letzte im Multiplayer ist, und wir haben etwas, das man Multicast
nennt. Wenn ich also zum Event gehe
und ich Ihnen
den Unterschied zwischen
einer On-Ramp-Funktion
und einem Multicast mitteilen werde den Unterschied zwischen . Wir wissen also, dass wir
etwas haben, das als Multicast bezeichnet wird. Wenn Sie also auf
das Serverereignis klicken, legen
wir fest, dass es auf dem Server ausgeführt wird. Aber du hast auch etwas, das man Multicast
nennt. Versuchen wir also zuerst,
den Code zu erstellen, und ich kann ihn Ihnen danach
einfacher
erklären. Lassen Sie uns diese
Sprunglogik also hierher verschieben. Und hier werde ich ein neues individuelles Ereignis
erstellen. Fügen wir dieses benutzerdefinierte
Ereignis hinzu und
nennen wir es MC für Multicast. Und ich nenne es
einfach Jump weil wir
den Sprung-Sound-Effekt erzeugen wollen. Okay? Jetzt können Sie auf diese Replikation klicken und Multicast
auswählen und dann zuverlässig auswählen. Und hier, fügen wir diesen hinzu namens Play a sound an Ort. Lassen Sie uns jetzt für diesen Sound
statt ihn so fest zu codieren. Denken Sie daran, wir haben eine Struktur hinzugefügt. Im Grunde genommen
enthält die Struktur alle
Spielerinformationen, sodass wir hier sogar
Sounds hinzufügen können. Also
kann ich in dieser Variable hier auf Add Variable klicken und es einen Sprung-As-Effekt
für den Sprung-Soundeffekt
nennen. Und lasst uns einen Sound-Cue hinzufügen, denn letztendlich war dies
ein Sound-Cue, den wir erstellt haben. Es ist also ein Sound-Cue. Lass uns nach Sound Cue suchen. Und es ist hier, Objektreferenz. Okay, jetzt haben wir
einen Sprung-Sound-Effekt und das können wir
aus unserer Struktur verwenden. Also kannst du wieder zu gehen, lass uns zurück zum
Spieler gehen. Für Luke. Seit wir dies hinzugefügt haben, kann
jeder einzelne Charakter seinen eigenen Soundeffekt haben, aber
das haben wir in Maple Story nicht wirklich. Fügen wir also diesen
Sprungeffekt hinzu, oder Luke. Für Serena
füge ich hier denselben Sprungeffekt
oder Soundeffekt hinzu. Okay, also haben wir diese jetzt in der Struktur
hinzugefügt. Und gehen wir zurück
zur Spielerbasis. Und jetzt möchte ich Ihnen
erklären, was ein Multicast ist,
bevor wir fortfahren. Es war also nicht falsch
, das hier zu tun. Also setzt der Server diese
Variable hier und du gehst zurück zur Unwrap Funktion und fügst
dann den
Soundeffekt hier hinzu. Dies funktioniert so, als würden die älteren
Kunden Sie springen hören. Der Server wird dich springen hören. Das wird also klappen. Der
Unterschied besteht jedoch zwischen einer ungepackten Funktion
hier und dem Multicast. Der Multicast hier
macht das Gleiche. Also der Multicast, man
kann sich vorstellen dass es alle Informationen an den Kunden
zurückkostet. Die Informationen gehen also an den Server und der
Server legt eine Variable fest. Und dann können Sie
einen Multicast ausführen, um
diese Informationen
an alle Kunden zurückzukosten diese Informationen
an alle Kunden zurückzukosten damit die Kunden wissen,
was passiert. Hier kannst du also den Multicast
ausführen. Also klicken wir hier und
fügen hier einen DMC-Sprung hinzu. Und das
Wichtigste, was Sie hier wissen sollten, ist Multicast-Ereignisse nur über den Server ausgeführt
werden können. Sie können das hier nicht ausführen, zum Beispiel wird das
nicht funktionieren. Denken Sie daran, dass wir es immer noch
nicht wissen. Wenn Sie auch wissen
möchten, ob Sie sich
gerade auf dem Client
oder auf dem Server befinden , können
Sie einfach eine Zeichenfolge drucken. Das ist also sehr einfach, eine Zeichenfolge zu
drucken. Und Whoops, ich ziehe
das versehentlich. Und hier, klicken wir auf Play. Jetzt können Sie sehen, dass sowohl der Server als auch der
Client niedrig sagen. Ich weiß also, dass ich nicht
nur auf dem Server bin, sondern auch auf dem Client bin, also bin ich sowohl auf dem Server als auch auf
dem Client bei diesem Ereignis. Aber wenn ich die
Zeichenfolge hier unten drucke und da wir
dieses Ereignis auf dem Server ausführen, wird nur der Server
Hallo sagen. Also drucke ich String ist sehr nützlich , um zu wissen, wo du gerade
bist. Und ein Multicast
kann nur durch den Server ausgeführt werden. Sie können keinen
Multicast auf dem Client ausführen. Das wird nicht funktionieren. Und das
sagt dir auch hier oben. Server. Das wird also nur
funktionieren, wenn es der Server
ist, von dem
Sie es ausführen. Jetzt können wir den Sprung-Soundeffekt an alle Kunden weitergeben, damit sie hören
können, dass ich springe. Was ist der Unterschied zwischen dieser und der Unwrap Funktion? Weil sie beide
dasselbe tun. Dieser
funktioniert auch so, als würde es auch funktionieren, wenn Sie den Sprung-Soundeffekt
hinzufügen. Was ist letztendlich
der Unterschied zwischen diesem und diesem? Der Unterschied besteht darin, dass
Sie,
wenn Sie weit weg stehen eine
große offene Weltkarte haben. Wenn Sie weit weg stehen und einen Multicast spielen, ist
dies der richtige Weg, dies hier für den Sound zu
tun. Denn wenn der Spieler,
der weit weg
steht , dir nahe
kommt, wird er
den Ton nicht mehr hören weil du vielleicht vor zehn Minuten
gesprungen bist. Also, aber wenn du es hier
in der Unwrap Funktion und der Spieler beim Springen weit
weg steht machst
und der Spieler beim Springen weit
weg steht, ist das okay. Der Spieler kann es nicht hören. Wenn der Spieler jedoch zehn Minuten später in Ihre Nähe
kommt, wird
der Spieler
den Soundeffekt hören, wird
der Spieler
den Soundeffekt hören obwohl
Sie vor zehn Minuten gesprungen sind. Funktion „Entpacken
“ aktualisiert den Player. Obwohl du
das Ding vor
einer Stunde oder vor zwei Stunden gemacht hast
oder wie lange es her ist. Angenommen, ein Spieler hat sich
noch nicht mit deinem Server verbunden und du springst, der Spieler verbindet sich
zehn Minuten später. Dann kann der Spieler, der sich
verbindet, dich springen hören. Obwohl du nicht springst, als ob du still stehst,
aber vor
zehn Minuten aufgesprungen bist , wird
dieser Sprung-Soundeffekt vom
verbindenden Player gehört. Und das ist nicht richtig , weil du vor zehn Minuten
aufgesprungen bist. Du bist gerade nicht gesprungen. Dies passiert, wenn Sie
es dem ausgepackten hinzufügen. Was ich möchte, dass Sie
daraus ziehen, ist die Unwrap Funktion für visuelle Änderungen
verwendet wird. So können Sie hier das
Flipbook sehen, in dem ich bin, zum Beispiel wenn ich renne oder IM bin, sagen
wir tanzen,
springen, was auch immer. Alle visuellen Effekte
werden im Unwrap ausgeführt. Nehmen wir an, ich habe
eine Ampel und sie wechselt von rot zu grün oder rot zu gelb zu
grün, diese Ampel. Du willst hinzufügen. Der visuelle Effekt ändert sich
innerhalb des ausgepackten. Denn wenn ein Spieler
fünf Minuten später eine Verbindung herstellt
und sagen wir, Sie sind ein Licht,
dauert es fünf Minuten,
um die Farbe zu ändern. Sagen wir, es geht
von rot nach gelb. Spieler, der
sich mit dem Server verbindet kann sehen, dass dein
Licht jetzt gelb ist. Aber wenn Sie hier visuelle
Änderungen hinzufügen,
wird der Multicast, diese gelbe Farbe für den
verbindenden Player immer noch
wie rot aussehen . Weil der Multicast nur für verbundene Spieler
aktualisiert wird. Es wird nur für Spieler aktualisiert
, die dir nahe stehen. Wenn also ein Spieler weit weg
steht und das Licht
von Rot zu Gelb wechselt, und dieser Spieler wird
immer noch sehen, dass das Licht ist kommt der Spieler
, der weit
weg steht, dir jetzt nahe, und dieser Spieler wird
immer noch sehen, dass das Licht lese, weil du
das durch einen Multicast führst. Dies wird nur
für Spieler in
deiner Nähe und für Spieler aktualisiert , die
mit dem Server verbunden sind. Was wir also normalerweise
unreife Funktionen für
unsere visuellen Änderungen verwenden , da dies für Spieler, die sich verbinden, visuell aktualisiert werden
sollte. Nehmen wir an, ich
verbinde mich zehn Minuten später und zehn Monate später, ich kann
sehen, dass Sie sich hier
im Laufzustand befinden , oder vielleicht halten Sie
eine andere Waffe in der Hand. Wenn wir also mehr
Flip Books hier haben, aber ich dich nicht
hören will oder ich den Sprungeffekt
, den du vor zehn Minuten gemacht hast, nicht hören
möchte du vor zehn Minuten gemacht hast, ,
ergibt das keinen Sinn. Also jeder Soundeffekt,
alle visuellen Effekte. So zum Beispiel ein
Partikeleffekt, ein Feuereffekt und so weiter. Ich möchte, dass all diese
im Multicast sind. Dies ist der richtige
Weg, dies zu tun. Alle visuellen Änderungen
werden im Unwrap vorgenommen. Also hier sind wir
durch den Server, wir betreiben den Multicast. Und wieder kann der Multicast
nur durch den Server laufen. Und anstatt
den Sprung hier rüber zu setzen, verbinde ich
ihn einfach hier. Eine sehr gute Vorgehensweise
im Multiplayer ist es, diese Variablen
bis zu
den ersten Ereignissen auszuführen bis zu ,
damit sie korrekt funktionieren. Ziehen Sie diesen Ton also
und fügen Sie ihn hierher hinzu, untermauern Sie ihn hier, damit es automatisch
eine Variable für mich erstellt . Wenn ich also auf diesen Multicast klicke, kannst
du sehen, dass er
diese Variable erstellt. Und ich
nenne es einfach hier statt Sound-Sprung-S-Effekten. Und ich ziehe
diesen Ort auch, lege ihn hierher und nenne es
vielleicht Spielerstandort. Jetzt kann ich den
Soundeffekt hier machen. Und denken Sie daran, dass
wir für
den Soundeffekt unsere Spielerinformationen hatten. Ziehen wir also unsere Struktur. Und von hier aus
brechen wir den Strukturstift auf, damit
wir die Variablen sehen können. Ich werde
das ein bisschen verschieben damit wir mehr Platz haben. Okay? Also hier klicke
ich auf diesen
Pfeil, um meine Variablen zu sehen. Sie können von diesem
Sprung-Soundeffekt ziehen und er wird
automatisch alles
abspielen, was Sie haben. Fügen Sie hier in den
Sprung als Effekte für Serena und
vier Look ein. Denken Sie also daran, diese zu tun. Und ich gehe zurück. Für diejenigen, die
Sie nicht verwenden, können
Sie hier auf Nicht verbundene Pins
ausblenden klicken und sie für Sie ausblenden. Das ist ein bisschen
sauberer, damit zu arbeiten. Und wie ist der Standort? Wieder, bekommt Spieler oder nicht
Spieler bekommen, Schauspielerstandort abrufen. Und so. Jetzt wird
es also richtig funktionieren. Jetzt, da wir das getan haben, versuchen
wir alles zu kompilieren
und zu speichern. Und lasst uns auf Play klicken
und sehen, ob es funktioniert. Okay, um dies zu vervollständigen, jetzt, anstatt es hier oben zu
tun, dies
jetzt, anstatt es hier oben zu
tun,
ständig spielen, denn im Moment wird ständig spielen, denn im Moment dies durch
den Bewegungszustand gesetzt, die ganze Zeit hier platziert ist. Anstatt das zu tun, wird
das deine Ohren verletzen. Nehmen wir das also und machen
wir
einen neuen namens Server. So springen benutzerdefinierte Palettenserver. Und das wird so
durch den Server laufen. Und lasst uns miteinander verbunden sein. Der Server wird diese Multicast-Ereignisse
ausführen. Und denken Sie daran, dass wir
diese Struktur hatten. Lassen Sie uns es herausnehmen und
daraus ziehen und
sagen Bruchstruktur. Also können wir die Pins sehen. Hier. Sie können auf
diesen kleinen Pfeil klicken. Ich werde das ein bisschen in die
andere Richtung bewegen , damit wir
sehen können, was los ist. Und jetzt kann ich
diesen Sprung als Effekte
in diese Variable ziehen . Und denken Sie daran, dass in Tsarina in den
Klassenvorgaben Sie
in Tsarina in den
Klassenvorgaben den
Soundeffekt hier hinzufügen müssen, damit er funktioniert. Wie auch für Luke die Klasse hier den
Soundeffekt standardmäßig an. Stellen Sie einfach sicher, dass sie hinzugefügt werden. Das funktioniert also auch. Für die Pins, die Sie
nicht mehr verwenden, können
Sie auf diese klicken und auf
Nicht verbundene Pins ausblenden klicken. Das wird viel sauberer sein. Und der Spielerstandort klickt und
zieht
wieder hierher und sagt,
erhält den Standort des Schauspielers. So wie das. Jetzt hast du
dieses Jump, Jump Event hier. Jetzt
führen Sie dieses Event nirgendwo durch. Denken Sie also daran, dass Sie es nicht tun, Sie haben dieses Ereignis nicht wirklich
kalt. Also phi und
bevor wir fortfahren, klicken
wir darauf. Repliziert zuverlässig,
bevor ich es hier vergesse, und nur um sicherzustellen, dass
die anderen riskieren. Wenn ich also auf Jetzt spielen klicke,
siehst du, dass es nicht
wirklich ein Geräusch macht. Und das liegt daran, dass wir das
nie definiert haben. Wir haben diese
Funktion oder dieses Ereignis nie hier aufgerufen. Um dieses Ereignis aufzurufen, rufen
wir es im Sprung
hier unten auf. Jetzt können wir das machen. Also Serversprung. Was sind wir jetzt gesprungen? Es wird
durch den Server gehen und wir können
das hier runter bringen , nur damit
es besser organisiert ist. Gruppen. Ich ziehe
das so nach unten. Okay, was jetzt
passieren wird, ist, dass
ich auf Sprung klicke. Der Sprung-Sound-Effekt wird
durch den Server gehen. Und dann
wird das durchgehen. Und eigentlich möchte ich
meine Variablen hier
durchziehen. Also klicke ich auf Control X, um sie auszuschneiden und hier
einzufügen. Und lass mich das auch so
durchmachen. Ich führe sie gerne bis zum Quell-Event hier aus. Jetzt können wir hier unsere Aktionen
auswählen. Also lasst uns das hier drin verbinden, so. Also jetzt wird das durch den Server
gehen. Der Server wird prüfen, darfst du das tun? Und wenn das stimmt, wird
es durch
den Multicast laufen , wo es die Informationen
kostet,
den Soundeffekt für
alle Kunden. Und dann denken Sie daran, dass der Multicast für alle Clients gedacht
ist, die in Ihrer
Nähe sind , bereits
mit dem Server verbunden sind. Für die Spieler, die dir nicht nahe
stehen, werden
sie dies später nicht
spielen lassen , wenn
sie dir nahe kommen. Und für die nicht verbundenen Spieler, wenn sie sich mit dem Server verbinden, werden
sie dies nicht hören, wenn Sie dies vor fünf Minuten getan
haben. Das ergibt also Sinn. Und letztendlich die Spieler
, die dir nahe kommen, oder die Spieler, die sich
zehn Minuten später verbinden. Sie werden
die Änderungen nur hier sehen. Und wir wollen, dass sie das sehen. Wir möchten, dass sie unser
aktualisiertes Buch sehen. Das ist in Ordnung. Aber wir wollen nicht, dass sie
ein Geräusch hören , das vor
zehn Minuten gespielt wurde. Das ist also etwas, das wir stattdessen
durch einen Multicast laufen . Klicken wir also auf kompilieren und stellen Sie sicher, dass
alles in Ordnung ist. Versuchen wir auf Play zu klicken
und zu sehen, was passiert. Und du kannst sehen, dass der
Sound gut abläuft. Okay, lass uns das Spiel hier verlassen
. Machen wir es ein
bisschen organisierter. Für diesen Sprung werde ich alle diese
Knoten hier zusammen
aufnehmen. Denn jetzt springt
das alles. Und dafür hier, machen
wir das so
kleiner. Lassen Sie uns kompilieren und speichern alles und lassen Sie uns mit dem Kurs
fortfahren.
34. Blueprint: Bevor wir also
zum nächsten Abschnitt übergehen, möchte
ich über
Blueprint-Interfaces sprechen. Blueprint-Interfaces werden verwendet
, um Ihr Projekt zu organisieren. Und es ist auch einfacher
zu arbeiten, wenn Sie über
Blueprint-Kommunikation
sprechen. Und was meine ich mit
Blueprint-Kommunikation? Was ich meine ist manchmal hier in der
Spielerbasis, zum Beispiel, wenn wir hierher zurückkehren, manchmal innerhalb
der Spielerbasis, müssen
Sie etwas
aus den Spielmodi verwenden. Im Moment haben wir hier nicht wirklich etwas
getan. Und wenn ich in den
Spielmodus gehe und ihn geöffnet habe, programmieren wir
irgendwann
etwas drin. Irgendwann in
der Spielerbasis benötigen
wir also einige Informationen, die in unserem Spielmodus
gespeichert sind. Diese Informationen, auf die wir
durch etwas namens
Blueprint-Kommunikation zugreifen können . Dieser Blueprint-Schauspieler
kommuniziert also mit
diesem Blueprint-Schauspieler. Diese beiden Blueprints
werden also gemeinsam kommunizieren. Und hier kommen Blueprint
Interfaces ins Spiel. Aber im Moment möchte
ich nicht zu viel über
Blueprint-Kommunikation sprechen , weil
wir sie noch nicht benutzt haben. Aber wir werden unsere Ereignisse
aussortieren. Also hier in der Spielerbasis, was wir früher gemacht haben, ist dieser
eine gesetzte Bewegungsstatus. Anstatt benutzerdefinierte
Ereignisse wie diese zu erstellen, machen wir weiter und ein
Blueprint-Interface. wir also mit der rechten Maustaste
hier und lassen Sie uns zu
Blueprints gehen und
ein Blueprint-Interface erstellen. Eigentlich muss ich einen Ordner für
erstellen, also lasst uns einen Ordner
namens Interfaces erstellen. Und
lassen Sie mich drinnen mit der rechten Maustaste auf Blueprints
und Blueprint Interface klicken. Normalerweise fange ich mit
int oder interface an. Und jetzt wollen wir
einen für die Spielerbasis machen. Also nenne ich sie normalerweise den
Namen der Blaupause. Ich möchte sie dafür benutzen. Ich möchte es für
die Spielerbasis verwenden. öffne ich jetzt. Und Sie können sehen, dass es sich im Grunde um
eine Funktionsbibliothek handelt. Also drin hier in der Grafik kann
man eigentlich nichts tun. Du kannst das nicht schleppen. Und du kannst alles tun. Sie können sehen,
dass Sie Ihre Funktionen
hier haben , damit Sie
eine neue Funktion hinzufügen können. Und Sie können die Details zu dieser Funktion hier unten sehen. Beginnen Sie also einfach mit, lassen Sie uns diesen Status
„Set-Moctions“ erstellen. Anstatt es hier
wie ein benutzerdefiniertes Ereignis zu erstellen, gehen wir zur Benutzeroberfläche
und
lassen Sie es uns hier
schaffen Bewegungszustände wie diesen festzulegen, alles zu
kompilieren und zu speichern. Um nun ein
Blueprint-Interface hinzuzufügen, musst
du zu
diesem Blueprint gehen, also werden wir ihn verwenden und die Spielerbasis geht
zu den Klasseneinstellungen. Und hier sehen Sie
implementierte Schnittstellen. Lassen Sie uns so danach suchen und wir können
die Schnittstelle hier auswählen. Jetzt kompilieren und speichern wir. Und jetzt gibt es
dir einen Fehler. Und das liegt daran, dass Sie
gerade eine Schnittstelle erstellt haben. Sie können es hier sehen, den Status „Bewegungen“ gesetzt
haben, und jetzt liegt es daran, dass
Sie zwei davon haben, also gibt es einen Fehler. Wir werden diesen löschen. Aber denken Sie daran, wenn dies
nicht für Sie erscheint,
denken Sie daran, zur Benutzeroberfläche zurückzukehren und auf Kompilieren zu klicken. Sehr, sehr wichtig, dass Sie Ihre Blueprints
immer kompilieren. Gehen wir also zur
Spielerbasis. Lassen Sie uns nun diese festgelegten
Bewegungsstatus löschen und kompilieren. Und jetzt gibt es
uns viel mehr Fehler. Und es sind tatsächlich diese , weil wir sie ersetzen müssen. Aber machen wir uns vorerst keine Sorgen um
diese Pfeile. Nun, diese Schnittstelle,
haben wir einen Bewegungsstatus erreicht. Wir können dies nennen, indem wir mit der
rechten Maustaste klicken und sagen, dass Bewegungsstatus gesetzt wird. Und jetzt können wir sehen, dass wir
dieses Ereignis haben wird
Bewegungen Status gesetzt. Wenn Sie also darauf klicken und sich
dieses Symbol am Pier befindet, bedeutet
dieses Symbol, dass es
von einem Blueprint-Interface stammt. Denn denken Sie daran, dass
wir es hier geschafft haben , den Status
der Bewegungen zu setzen. Wann immer Sie
das Interface in
Ihrem Blueprint hinzufügen , wird
sie hier angezeigt und Sie
können es als Ereignis aufrufen. Und du kannst auch hier sehen, wir können es nicht wirklich rausziehen. Das funktioniert also nicht. Wir müssen also mit der rechten Maustaste klicken
und nach dem Namen suchen. Das Coole an Interfaces
ist, wenn Sie ein neues erstellen, nennen
wir es einfach zufällig. Ich wollte dir nur zeigen
, wann es so ist. Und du gehst zurück zum
Blueprint oder zur Spielerbasis, du kannst dieses
zufällige Ereignis hier sehen. Wenn ich mit der rechten Maustaste klicke und
zufällig schreibe und die Ereignisse finde, und du kannst hier sehen, das
Ereignis zufällig hier. Aber wenn ich hier
eine Ausgabe lege,
also wenn ich auf Zufall klicke
und hier eine Variable hinzufüge, klicke ich auf diesen Plus-Button und füge hier einfach eine
zufällige Variable hinzu. Wenn ich jetzt kompiliere und speichere und zurück zu meiner Spielerbasis gehe, kannst
du jetzt sehen, dass sie
nicht mehr gelb ist. Wenn ich also, wenn Sie einem Ereignis hier eine
Ausgabe hinzufügen, wird es in eine Funktion. Jetzt können wir dieses Jahr tatsächlich
doppelklicken. Und Sie können sehen, dass es sich stattdessen um
eine Funktion handelt, genau wie beim Erstellen Funktionen hier
oben nicht springt. Zum Beispiel haben wir das früher
erstellt. Sie können auch Funktionen
innerhalb von Schnittstellen erstellen und verwenden. Wenn Sie also eine Ausgabe hinzufügen, zwei Funktionen im Inneren von hier, werden
sie zu Funktionen. Und wenn Sie keine Ausgabe hinzufügen, werden
sie zu Ereignissen. Also sehr, sehr gut, sich daran
zu erinnern. Ereignisse sind gelb, die
Funktionen haben diese Farbe, also löschen wir diese zufällige. Wir brauchen es vorerst nicht wirklich. Lassen Sie uns kompilieren und speichern. Und lasst uns hierher zurückkehren und diesen festgelegten Bewegungszustand
verbinden. Jetzt hatten wir hier die
Bewegung geblieben. Und genau wie zuvor bei
den Kundenereignissen können
wir die Variable nicht automatisch anklicken und ziehen und hinzufügen. So kannst du hier sehen,
wenn ich klicke und ziehe, kann
ich es nicht automatisch hinzufügen, also muss ich das selbst machen. Blueprint Interfaces
benötigen also etwas mehr Zeit, um sie einzurichten, aber es sind optimierte. Dein Spiel wird viel schneller laufen. Gehen wir also zurück zum
Blueprint-Interface. Klicken Sie auf diesen und fügen
wir die Eingaben hinzu. Und es hieß
E Moctions State. Das war also unsere Aufzählung. Also lasst uns hier anklicken und nennen wir es einfach so
Bewegungsstaaten. Und jetzt kannst du sehen,
dass es mich das nicht machen lässt. Also muss ich kompilieren
und es mich noch einmal versuchen lassen. Manchmal ist es, es
nervt so aus. Ich muss das Projekt wahrscheinlich schließen
und wieder öffnen. Okay, ich habe das Projekt gerade geschlossen
und geöffnet. Versuchen wir es also noch einmal, klicken Sie
hier, Bewegungsphase. Es lässt mich das nicht
immer noch hier machen. Ich denke, es liegt daran, dass wir es in der
Spielerbasis bereits haben. Gehen wir zurück zu einer Spielerbasis. Lasst es uns herausfinden. Ich denke, es liegt daran, dass wir diesen sogenannten
Bewegungsstaat bereits haben. Lassen Sie mich all
diese löschen. Vielleicht kannst du ein Foto für
dich machen , damit du dich daran erinnern kannst
, was es gesagt hat. Aber jetzt
kompilieren wir hier, speichern, zur Schnittstelle
zurückkehren und nun versuchen wir es zu
ändern Bewegungsstatus. Und jetzt hat es mich geführt, es liegt wahrscheinlich an
den anderen Funktionen dort. Jetzt, da wir es haben, können
Sie sehen, dass es dies
zu unserer Schnittstelle des Ereignisses hinzugefügt hat. Und wieder, genau wie
zuvor, können wir es verbinden. Und jetzt können wir es hier aufrufen. Also muss ich mich erinnern,
was hier war. Es war untätig, als
die Bewegung 0 war. Wenn Sie also den Namen
Ereignisbewegungen hier ausführen, so werden Bewegungsstatus festgelegt. Und Sie können hier sehen, Sie diese Funktion aufrufen können, indem Sie int player base
sagen. es also von
der Schnittstelle aus rufe, kann
ich es hier oben machen. Aber ich habe herausgefunden, als ich
gearbeitet habe, dass es viel
besser ist , diesen
unter der Int-Player-Basis auszuwählen. Wenn Sie es
durch den Innenraum
anstelle der Kohlefunktion auswählen , diese automatisch aktualisiert. Wann immer Sie es
hier in der Benutzeroberfläche aktualisieren, wird
es Ihnen einen Fehler geben wenn Sie den anderen auswählen, nur ein Update automatisch. Also wähle ich immer dieses aus. Also das Idol hier, ich kann
einfach hier klicken und kopieren Paste und verbundene Taschen. Also waren es Laufrechte
und lief dann nach links. Und hier oben war es Sprung. Als es also nicht plus war,
war es Müll und es war Herbst. Also einfach so. Jetzt haben wir
das Blueprint Interface implementiert und
wir haben die Funktion hier. Und es ist viel sauberer
und du kannst alle
deine Funktionen für
die Spielerbasis haben . Vielleicht hast du es schon erraten. Später werden wir weitere
Blueprint-Interfaces
erstellen, eine für den Spielmodus, eine für den Spieler-Controller usw., wenn wir Dinge dort
getötet haben. Okay, jetzt kann ich keine benutzerdefinierten Ereignisse
mehr sehen , die wir hier gemacht haben, also ist alles gut
und das war's vorerst. Lasst uns also zur
nächsten Lektion übergehen.
35. Einführung in die Einführung in die Widget: Es ist jetzt an der Zeit, über
das Laichsystem zu sprechen und zunächst über die
Widget-Blueprints zu sprechen
und Widget Blueprint ist der Ort,
an dem Sie die Benutzeroberfläche erstellen. Also, womit wir anfangen wollen, erstellen
wir
hier im Inhalt einen neuen Ordner. Ich klicke mit der rechten Maustaste,
um einen neuen Ordner zu erstellen und nennen
wir ihn UI
für die Benutzeroberfläche. Hier drin klicken
wir mit der rechten Maustaste. Und hier unten in
der Benutzeroberfläche können
Sie einen
Widget-Blueprint erstellen. Erstellen Sie dieses und wählen Sie hier oben Widget
Blueprint aus. WB für Widget Blueprint schreiben. Und das erste, was
wir
erstellen werden, ist die
Charakterauswahl. Also Charakterauswahl. Okay, also kannst du jetzt
darauf doppelklicken. Und zunächst
möchte ich über
die Schnittstelle oder den Überblick darüber sprechen ,
woraus das besteht. Anstatt hier in der Mitte sieht
man den Graphen. Und wieder können Sie
mit der rechten Maustaste klicken und
herumschwenken ,
um sich im Diagramm zu bewegen. Hier entwerfen Sie die Benutzeroberfläche. Und der zweite Teil davon
besteht aus dem Graph. Sie haben also, dass der Designer
die Benutzeroberfläche entwirft. Und dann haben Sie
das Diagramm, in dem Sie der Benutzeroberfläche Funktionen
hinzufügen. Sie können also sehen, dass uns
das bekannt ist. Dies ist der Ort, an dem wir kodieren. Hier. Wir können unsere Variablen
und Funktionen sehen und so weiter. Sie können auch die
verschiedenen Details über
beispielsweise eine
Variable sehen , auf die wir klicken. Das ist uns jetzt sehr vertraut. Und im Designer ist das, was Sie hier haben, der Graph. Sie haben die Elemente, mit denen
Sie Ihre Benutzeroberfläche entwerfen können. Und dann sehen Sie alle Elemente ,
die
Sie hinzufügen, hier unten. Auch hier haben Sie ein
Detailfenster, in dem Sie Details
zu den Elementen
ändern können . Sie können beispielsweise den Schriftstil,
die Schriftgröße, das Bild
ist Stil und so weiter
ändern . uns nur für eine kleine Übung
vor dem Ende versuchen, Lassen Sie uns nur für eine kleine Übung
vor dem Ende versuchen, etwas hinzuzufügen. So
haben Sie zum Beispiel einen Textblock, daher haben wir hier die gemeinsamen,
gemeinsamen Vermögenswerte. Sie können versuchen, sie
durchzuklicken und sehen, was Sie hier haben. Fühlen Sie sich nicht frei,
Dinge in die Benutzeroberfläche hinzuzufügen. Du kannst es. Es ist immer schön, es auszuprobieren. Was Sie also tun können, ist,
womit ich normalerweise
beim Erstellen einer Benutzeroberfläche beginne beim Erstellen einer Benutzeroberfläche Normalerweise erstelle
ich ein Canvas-Panel. Wenn Sie also
hier nach Canvas suchen, haben
Sie dieses eine Canvas-Panel. Also kannst du es rausziehen
und hier unten platzieren. Es wird es einfach so zur
Benutzeroberfläche hinzufügen. Und Sie können sehen, dass die
Leinwand hinzugefügt wurde. Das ist eine sehr grundlegende Sache. Sie fügen eine Leinwand hinzu, die Leinwand, Sie fügen verschiedene Elemente hinzu. So
können wir zum Beispiel diesen Text hinzufügen. Sie können
es entweder hinzufügen, indem Sie auf die Leinwand klicken und es
nach unten ziehen. Und Sie können sehen, dass der
Text hinzugefügt wurde. Oder Sie können es an einer
beliebigen Stelle in der
Leinwand klicken und
ziehen und platzieren. Normalerweise
ziehe ich es gerne hier runter und klicke
dann darauf. Löschen wir also einfach einen von ihnen indem wir
auf meiner Tastatur auf Löschen klicken. Sie können beispielsweise auf diesen
Text klicken und verschiedene
Details zu diesem Text sehen. Sie können also
die Position ändern, damit es klicken und ziehen kann und
Sie die Position ändern können. Zum Beispiel können wir
einhunderteinhundert und das y schreiben einhunderteinhundert und das y und Sie können die
Farbe des Textes ändern. Sie können die Schriftart hier ändern,
indem Sie auswählen, welche
Art von Finanzierung ist, wie groß der Fonds
ist und so weiter. Sie haben also verschiedene Details. Sie können sich
über die Elemente ändern. Die häufigsten
Elemente sind hier. Im Allgemeinen können Sie beispielsweise
versuchen, eine Schaltfläche zu
ziehen, und Sie können sehen welche Dinge Sie an einer Schaltfläche
ändern können. Also immer schön,
sie einfach hierher zu ziehen, ein Bild. Wir verwenden immer Bilder, damit Sie versuchen
können, sich mit ihnen
vertraut zu machen. Sie können sehen, dass Sie
sie hier mit diesen
hübschen Zusammenbausachen skalieren können, damit Sie es
anklicken und ziehen können. Sie können beispielsweise auf diesen
Pinsel klicken, um ein Bild
zu erhalten, und Sie können auswählen, um
welche Art von Bild es sich handelt. Wenn ich zum Beispiel hier klicke, kann
ich auswählen, Lass uns mein Sprite
sehen. Und Sie können sehen, dass das Sprite als Bild hinzugefügt
wurde. Und Sie können die Größe
für das Bild hier ändern. Sie können auch die
Farbe des Bildes ändern. Sie haben also viele
Möglichkeiten,
mit denen wir später arbeiten werden. Andere coole Sachen, bevor
ich das hier beende, hast du etwas, das
man als horizontale Box bezeichnet. Ein horizontales Feld hier, das können
wir hier hineinziehen. Und lasst uns vorerst
alle löschen. Klicken Sie auf Löschen. Also haben wir diese horizontale Box. Ich ziehe es
hier rüber und skaliere es. Also
wird in dieser horizontalen Box, wo immer ich hier drin platziere, horizontal platziert. Wenn ich also diesen Text nehme und ihn hier unten in die Box
lege, kannst
du sehen, dass er sich jetzt in
diesem horizontalen Feld befindet. Und wenn ich noch einen Text hinzufüge oder stattdessen
ein Bild hinzufügen. Fügen wir ein Bild im
horizontalen Feld hinzu. Jetzt können Sie sehen,
dass Dinge
horizontal hinzugefügt werden, damit sie sich
nicht überlappen. Und wenn ich einen weiteren Text hinzufüge, können Sie
jetzt sehen, dass er
Elemente horizontal hinzufügt. Jetzt habe ich hinzugefügt, ich habe
dies versehentlich
hier unten hinzugefügt , damit ich es anklicken und in dieses Feld
ziehen kann. Und Sie können sehen, fügt
Elemente horizontal hinzu. Es gibt. Das Gleiche gilt für
eine vertikale Box. Es fügt Dinge vertikal
untereinander hinzu. Und wenn du willst, dass Teile
zusammen überlagern. So
haben wir zum Beispiel einen Button und wir haben ein Bild auf dem Button. Wir benutzen etwas, das
man Overlay nennt. Also kann ich hier ein Overlay hinzufügen. Und lass mich einfach einen Button hinzufügen. Wenn ich also auf die Schaltfläche klicke
oder nach einer Schaltfläche suche, füge sie dem Overlay hinzu. Sie können sehen, dass sich mein Button im Overlay
befindet, und jetzt kann ich nach dem
Bild suchen und es hier
auf den Button legen. Jetzt kannst du sehen, dass ich Dinge
übereinander überlege. Ich habe einen Knopf und ich habe
ein Bild auf den Buttons. So
kann ich zum Beispiel
hier ein Bild auswählen und Sie sehen, dass ich
jetzt ein Bild
auf meinem Button habe , damit Sie
sehen können, dass es nicht gut aussieht weil ich auf
mein Overlay klicken und die
Größe ändern muss und so weiter. Aber wir werden
mit all dem arbeiten. Ich möchte
dir nur die Benutzeroberfläche vorstellen. Fühlen Sie sich frei, hier einfach
nach Dingen zu suchen, versuchen Sie diesen
Fortschrittsbalken einzusetzen. Sehen Sie, was passiert, wenn Sie den Prozentsatz
so
erhöhen und versuchen, mit der Benutzeroberfläche
herumzuspielen.
Es ist immer schön, herumzuspielen. Und wenn Sie fertig sind, löschen
Sie
alle, einschließlich
des Canvas-Panels,
kompilieren und speichern Sie. Und dann gehen wir zur
nächsten Lektion über und beginnen mit der
Erstellung der Benutzeroberfläche für die
Charakterauswahl.
36. UI für die Figurenauswahl: Beginnen wir mit der Erstellung der
Zeichenauswahl-Benutzeroberfläche. Also hier drüben im
Widget-Blueprint , den wir zuvor erstellt haben, klicken
wir hier drauf. Also, was wir kreieren wollen, habe ich es vorher
erstellt damit ich Ihnen zeigen kann, was
wir schaffen wollen. Und es ist immer schön
, dieses Ziel zu sehen, das wir anstreben. Wir streben danach, diesen Charakter zu
erschaffen. Und dann haben wir zwei
Tasten, mit denen Sie
entweder eine Schleife oder Serena spawnen können ,
je nachdem, worauf Sie drücken. Das ist also die Sache, die
wir erschaffen wollen. Und dann haben wir einen Hintergrund
, der verschwommen ist. Dies ist also das Ziel
, das wir schaffen müssen. Und es ist immer schön, sich
das in Ihrem Kopf vorzustellen und zu
versuchen, es zu brechen. Also habe ich in der früheren Lektion wieder über
eine vertikale
Box und eine horizontale Box gesprochen . Und zum Beispiel befinden sich diese
beiden Tasten in
einer horizontalen Box, weil sie zu spät nebeneinander
liegen. Das Bild und die Schaltfläche befinden
sich in einem Overlay ,
da Sie Dinge
übereinander legen. Also sehr grundlegende Dinge, also sehr gut, sich vorzustellen,
was Sie
herstellen möchten , damit Sie wissen, welche
Elemente Sie verwenden werden. Aber lasst uns rübergehen und unser eigenes Ding
erschaffen. Zuerst müssen wir also einige Vermögenswerte
importieren. Lassen Sie uns zuerst hier in der Benutzeroberfläche
klicken, klicken Sie mit der rechten Maustaste und
gehen Sie zu Neuer Ordner. Machen wir einen
sogenannten Hintergründe. Lassen Sie uns einen weiteren
Ordner namens Buttons hinzufügen. Fügen wir
eine weitere hinzu namens Fonts. Und das letzte, nennen
wir es Bilder. Vielleicht brauchen wir später eines
namens Icons, aber das ist für später. Also hier im Hintergrund habe
ich Ihnen diese
Kursmaterialien hier zur Verfügung gestellt. also in den Kursmaterialien Springe also in den Kursmaterialien voraus und finde die Benutzeroberfläche. Und auch hier
sind das die Ordner. Im Hintergrund
kannst du das also hier hineinziehen. dazu nicht
mit der rechten Maustaste und
wenden Sie 2D-Einstellungen an. Dies ist kein Pick, das ist nicht pixelig. Dies ist im Grunde nur ein Bild. Gehen wir also zurück und
in die Knöpfe. Importieren wir hier
alle diese Schaltflächen. Wir werden
also nicht alle verwenden, aber Sie haben eine Vielfalt,
wenn Sie in
Ihrer Version des Spiels verschiedene Farben
verwenden möchten . Und dann gehen wir zu den Schriftarten, und gehen wir immer wieder hin, gehen Sie zu den Fonds und
fügen Sie all diese Mittel hinzu. Und dann werden Sie gefragt,
ob Sie erstellen möchten diese Gelder hier erstellen möchten und klicken Sie
einfach auf Ja, Alles wird
Geld für Sie schaffen. Und das Letzte sind die
Bilder oder die Bilder. Und lasst uns zurückgehen
und die Bilder hinzufügen, was ein Zufall und Serena ist. Wenn ich sie hier hinzufüge, werde
ich mich auf
diese Einstellungen anwenden , da
es sich tatsächlich um eine Menge handelt. Klicken Sie also mit der rechten Maustaste darauf und
wenden Sie die 2D-Textureinstellungen für Papier Einfach so. Wenn Sie sich fragen, wo
Sie solche Schriftarten erhalten können, können
Sie jederzeit nach Google-Schriftarten
suchen. Ich benutze das, um
meine Videospiele zu machen. So lustig. Google Fonts suchen danach. Hier haben Sie tolle kostenlose Schriftarten, die Sie
kommerziell verwenden können, um sie auf
Steam oder einer anderen Plattform zu veröffentlichen. All diese sind also kostenlos. Was auch immer Sie hier finden
, Sie können versuchen, nach einem Fonds zu
suchen, verschiedene Stile
speziell zu finden und so weiter. Also sehr coole Website,
wenn du es
willst, finde
sie in Google-Schriften. Natürlich können Sie Schriftarten
für Geld kaufen und
diese auch hier importieren. Also klicken wir auf Datei
und speichern alles. Jetzt, da wir alles haben, gehen wir zurück zum
Widget Blueprint und wir
können hier anfangen. Also
möchte ich zuerst eine vertikale Box hinzufügen. Suchen wir nach Vertikal
und fügen Sie es hier hinzu. Und bevor wir das machen, habe ich
tatsächlich vergessen, das Canvas-Panel
hinzuzufügen. Fügen Sie also das Canvas-Panel
immer als erstes Element hinzu. Und dann fügen wir
das vertikale Feld hinzu. Wir brauchen immer zuerst eine Leinwand. Jetzt haben wir diese vertikale Box , in der alles drin sein wird. Also haben wir wieder, wenn ich das hier zurücknehme, haben
wir die vertikale
Box, in der wir
diesen Titel hatten , und darunter haben
wir die Knöpfe. Deshalb
benutzen wir eine vertikale Box. Und im ersten Jahr müssen
wir
dieses Stück in der
Mitte des Bildschirms zentrieren . Und um dies zu tun, verwenden Sie
hier Ankerpunkte. Sehr wichtig, Ankerpunkte zu
verwenden und sie für alle Ihre
Elemente festzulegen. Klicken Sie also auf diesen Anker
und stellen Sie ihn so in
die Mitte des
Bildschirms. Wenn Sie jetzt 00 schreiben, können
Sie sehen, dass es hier
an diesem oberen Teil ausgerichtet ist, aber wir möchten, dass es in der Mitte ist. Und hier kannst du mit der Ausrichtung
spielen. Sie können die Ausrichtung im X und
die Ausrichtung im Y sehen . Und es sieht so aus, als ob
Sie jeweils 0,5 schreiben, wird
es in der
Mitte ausgerichtet, genau so. Okay, also fangen wir hier an. Lassen Sie uns ein Overlay erstellen
und es hier
in den vertikalen Fehlern platzieren , da
Sie jetzt in
einem Overlay Elemente überlagern. Also möchte ich ein Bild
und einen Text darüber überlagern. Also lasst uns nach einem Bild suchen. Ziehen Sie es hier raus, platzieren Sie es in das Overlay und Sie können
sehen, dass wir jetzt ein Bild haben. Wählen wir aus, welches
Bild wir verwenden möchten. Dies ist nur der Hintergrund
, den Sie verwenden möchten. Ich benutze einfach
diesen „Button“. Eigentlich dieser eine flache
Taste, Black Square Flat. Also benutze ich dieses und ich werde es
dazu bringen, diese
ganzen Segmente zu füllen. So können Sie hier sehen, dass Sie eine
horizontale und
vertikale Ausrichtung haben . Horizontal möchte ich
es hier mit dem Ganzen füllen. Also jetzt, je nachdem wie
groß Ihre vertikalen Boxen sind. Im Grunde werde ich das Ganze
füllen. Dies sind vertikale und
horizontale Ausrichtungen. Dann verwende ich etwas Text und lasse die
Texte oben auf das Overlay fallen. Hier. Ich will den
Text in der Mitte haben. Also werde ich
diesen Text hier in der Mitte ausrichten ,
hier in die Mitte. Und nennen wir es
hier im Text. Wähle ein Zeichen aus. Einfach so. Jetzt können wir die
Farbe auswählen, ich denke, es ist in Ordnung. Dann können wir
Dinge über die Schriftart auswählen. Was ich machen möchte, ist, verwenden
wir diesen
Source Sans Bold. Also benutze das hier. Und ich
schaffe es 14 in der Größe. Wenn ich mir anschaue,
wann ich die Benutzeroberfläche erstelle, ist es normalerweise am
korrektesten , wenn Sie
Zoom Plus zwei hier oben haben Wenn Sie sich das ansehen.
Wenn Sie also verkleinern und hineinzoomen, ist es
normalerweise um
Zoom Plus zwei, aber manchmal korrigiere ich sie, nachdem ich
sie dem Spiel hinzugefügt habe. Wähle also Charakter aus und
lass uns ein paar Schatten machen. Ich habe gerne ein paar
Schatten auf meinem Text. Also hier unten in
der Schattenfarbe muss
man Alpha aktualisieren, muss
man Alpha aktualisieren das Alpha ist im Grunde die
Deckkraft des Schattens. Wenn Sie also einen schreiben, können Sie
sehen, dass Sie Schatten für unsere
0,5 Trübungen wie 50% haben , ich schreibe 0,35. Also 35 Prozent Schatten und den Schatten-Offset schreibe
ich 22. Es ist also ein bisschen weiter
vom Text entfernt , so etwas. Was ich
jetzt machen werde, ist, dass
ich
hier auch ein Bild nur zum Styling hinzufügen werde. Also füge ich hier unter Overlay wieder ein Bild
hinzu. Jetzt
überlagerst du dich übereinander. Ich wähle jetzt
den blauen aus, den Button, das blaue Quadrat flach. Was Sie jetzt tun können,
ist, dass Sie
die Größe hier im Y verringern können ,
damit es kleiner wird. Und ich möchte es auch
horizontal so füllen. Ich werde die Größe nur
fünf Pixel machen , einfach so. Und wenn Sie
Ihre Benutzeroberfläche ohne
diese gestrichelten Linien visualisieren möchten , können
Sie hier oben klicken. Und ich denke manchmal ist
es cool, das zu tun, damit ich sehen kann, wie meine Benutzeroberfläche
tatsächlich aussieht. Ich habe das gerade zum Styling gemacht. Sie können hier auf
dieses Bild klicken. Sie können es auch kleiner machen. Wenn ich also hier auf
dieses Bild klicke, kannst
du kleiner machen und das Y. Nur falls du
denkst, dass das zu groß ist, werde
ich es so
etwas machen. Nun, dieser Text scheint nicht
vollständig in der Mitte zu sein, denn wenn man ihn kleiner
macht, kann
man sehen, dass er
diese Zeile fast schneller erreicht als hier unten. Wenn ich auf 61 zurückgehe, werde
ich diesen
Text ein wenig nach unten schieben. Hier oben in der Polsterung können
wir die Dinge an die Seiten schieben. Also
werde ich es von oben schieben. Du kannst dir vorstellen, dass jemand es von oben
schiebt. Ich kann es auf Pixel schieben. Du siehst also, wenn ich zehn geschrieben habe,
siehst du, dass es abläuft. Jemand schiebt
es von oben. Hier rechts
schiebt es jemand von rechts. Das bedeutet
es also. Und die Paarung hier aus der Wanne wollte
ich nur auf Pixel drücken
, also ist es so weiter unten. Okay, als nächstes mache ich eine horizontale Box, damit ich diese beiden
Knöpfe hier unten
haben kann . Also auf der Suche nach Horizontal. Und ich werde es
auf meinen vertikalen Dollar fallen lassen weil ich unter diesem
Ding hier wollte, das ich geschaffen habe. Also diese horizontale Box wollte
ich zwei Knöpfe haben. Lassen Sie uns unser erstes erstellen. Der Button besteht aus
einem Button und einem Bild. Lassen Sie uns also zuerst ein
Overlay erstellen, da wir zwei
Elemente übereinander überlagern möchten. Wir wollen einen Button, ersten Knopf, und lassen Sie uns
diese Schaltfläche auf das Overlay setzen. Und dann brauchen wir ein Bild oben
auf dem Button, genau wie dieses hier. Also setze es bis zum Overlay. Wir haben also zwei Elemente, die sich
überlagern. Klicken Sie also auf die Schaltfläche, wählen
wir den Stil aus. Also hier drüben im
Stil, im Normalfall, lassen Sie uns den Button auswählen und ich möchte den
blauen Knopf hier verwenden, Button, blaues Quadrat, diesen. Nun können
wir einige Einstellungen ändern. Die Tönung ist großartig. Ich will nicht, dass es das tut. Also werde ich
den Farbton auf vollständig
breit ändern, damit ich die
wahren Farben meines Buttons verwenden kann. Und dann kann
man anstelle
von abgerundeten Bugs sehen, dass es eine seltsame
Linie um meinen Knopf gibt. Und das liegt daran, dass
es eine abgerundete Box ist. Stattdessen ändere ich
es in eine Box. Ich kann sehen, dass es etwas niedrig
aussieht, es ist verschwommen. Und das kann man tun, indem Sie
die Marge erhöhen , um
sie klarer aussehen zu lassen. 0,5 ist also die maximale
Marge, die Sie erreichen können. Es liegt also zwischen 0,10123450. Also 0.5, der beste zu verwenden. Wenn ich in diesem Fall einfach so
etwas herauszoome, sieht der
Button so aus. Ich muss hier das
Gleiche für
den Hubbard machen und drücken. Anstatt also immer wieder dieselbe
Schaltfläche zu
finden,
als kleiner Trick, können Sie rechten Maustaste klicken und diese kopieren,
und dann können
Sie mit der rechten Maustaste klicken
und ihn hier einfügen. Eine Abkürzung dafür.
Sie können sehen, ob Sie die Umschalttaste auf Ihrer Tastatur gedrückt halten und
mit der rechten Maustaste klicken, können Sie kopieren. Halten Sie also die Umschalttaste gedrückt, klicken Sie mit der
rechten Maustaste
und kopieren Sie dann die Umschalttaste gedrückt
und Und du kannst es hier einfügen.
Damit kann es das also machen. Das kannst du auch mit
der Tönungsfarbe machen. Klicken Sie also mit der rechten Maustaste auf
Umschalttaste, und klicken Sie mit der rechten Maustaste, um die
Umschalttaste zu kopieren , Darauf. Dasselbe mit den Rändern
ist hier ein sehr schneller Workflow. Was die Tönung angeht, wenn ich schwebe. Wenn also jemand
über meinen Knopf schwebt, möchte
ich, dass er es tut, wollte ich ein bisschen Farbe
ändern. Also so etwas. Okay, wenn du
damit zufrieden bist, kannst
du auf Okay klicken. Und hier in depressiv möchte
ich eine etwas
dunklere Farbe haben , wenn
jemand den Knopf drückt. Und jetzt haben wir den Button
hier und hier für dieses Bild, legen
wir ihn hier in die Mitte
des Buttons so. Lassen Sie uns das Bild auswählen. Und was ich verwenden
möchte, ist hier in den Bildern, die wir Serena dafür
verwenden möchten. Ich werde es tun, du findest Tsarina
entweder hier in den Bildern wie diesem oder
du kannst anklicken und ziehen. Manchmal ist es schneller
wie in diesem Jahr. Okay, also haben wir das Bild hier. Ich werde es
ein bisschen nach oben drücken weil du sehen kannst, dass
wir das
hier unten haben und ich muss
es ein wenig
nach oben drücken , damit es so aussieht, als wäre es in
der Mitte des Knopfes. Also nochmal, was ich dir über das Padding
beigebracht habe, wir drücken es von
unten, von der Taste aus kann
ich es einfach so auf Pixel nach
oben drücken. Was ich hier machen möchte, möchte
ich auf
dieses horizontale Feld klicken und auf Ausfüllen klicken. Jetzt kann ich sehen, dass
die horizontale Box tatsächlich
das Ganze füllt. Und das Gleiche
mit dem Overlay möchte
ich
auf das Loch füllen klicken. Overlay füllt hier unten den
ganzen Bereich aus. Und soweit diese Schaltfläche hier angeht, klicken wir darauf
und klicken wir einfach so horizontal und
vertikal ausfüllen . Und dann brauchen wir einen
Abstand zwischen diesen beiden. Sie können sehen, dass sie
zusammengestellt sind und das wollen wir nicht. Hier oben kannst du also nach Abstandshalter
suchen. Dies möchte ich zwischen Ohr und vertikaler Box zwischen dem Overlay und dem
horizontalen Feld hier drüben legen. Und Sie können sehen, dass es jetzt zwischen
diesen beiden Elementen liegt, indem Sie das auswählen, und das
ist das x
und das y, und es ist im y, wir
brauchen etwas Abstand. Ich schaffe
es zehn, so. Und Sie können sehen, dass wir einen
gewissen Abstand zwischen ihnen haben. Du denkst vielleicht,
warum hast du
das Ganze hier unten gefüllt ? Und ich mochte, dass meine Benutzeroberfläche dynamisch war. Was ich damit meine
, ist, wenn ich
jetzt auf
dieses vertikale Feld klicke , um die Größe zu ändern, können
Sie sehen, dass die
Größe meiner Benutzeroberfläche dynamisch geändert wird. Größe ändern Ich mache hier drüben. Anstatt also zu definieren, wenn ich auf die Schaltfläche klicke, anstatt die
Größe durch dieses Bild zu definieren. Und später finde ich heraus, dass es
mir gefällt, größer zu sein. Anstatt hierher zu gehen
und die Größe der Dinge zu ändern, möchte
ich einfach auf
mein oberstes Element klicken und es einfach ändern und
es gut aussehen lassen. Das ist also eine Woche, die wir machen müssen. Und ich denke, es ist auch
sauberer, es so zu machen. Wir haben diesen Button jetzt brauchen
wir noch einen Knopf. Wenn ich also auf dieses Overlay klicke
und auf Control D klicke, oder du kannst mit der rechten Maustaste klicken
und auf Duplizieren klicken. Das ist das Gleiche. Jetzt haben wir zwei Knöpfe. Jetzt möchte
ich für dieses Bild den roten Knopf benutzen. Diese rote
Schaltfläche, rotes Quadrat, klicken Sie mit der
rechten Maustaste, während Sie die Umschalttaste
gedrückt halten, klicken Sie mit der linken Maustaste, während Sie die
Umschalttaste gedrückt Okay, jetzt habe ich das
und für dieses Bild muss
ich es ändern. Also werde ich jetzt auf dieses Bild
schauen. Ich füge einen Abstandhalter
zwischen diesen beiden Tasten hinzu. Also ein Abstandshalter zwischen diesen
beiden Overlays wie diesem. Und jetzt ist dieser Abstandhalter im x. Ich werde für diesen um
15 steigen. Jetzt habe ich zwei Knöpfe und sie sind gut zusammengestellt. Jetzt kann ich das rausziehen
und vergrößern. Ich kann es auch hier ändern. Ich denke, so etwas
wäre sehr passend für mich. Wenn Sie nun
auf das vertikale Feld klicken,
stellen Sie sicher, dass es in der Mitte ist. Man sieht, dass es nicht
ganz in der Mitte ist. Jetzt werde ich diese Position
im x und y auf 00
ändern ,
genau so. Und jetzt ist es in
der Mitte. Also lasst uns alles kompilieren und
speichern. Also das Letzte, was wir
hier tun müssen , da wir unsere Buttons
haben, müssen
wir einen Hintergrund hinzufügen. Und das ist einfach
nur ein Bild. Wenn Sie dies also hier minimieren und wenn ich einfach ein Bild
hinter alles ziehe, möchte
ich, dass es
den ganzen Bildschirm ausfüllt. Auch hier können
Sie auf den Anker klicken
und auf diesen klicken, um den gesamten Bildschirm
auszufüllen. Und jetzt können wir einfach
0 in die Offsets schreiben, 00. Jetzt füllt es den ganzen Bildschirm und Sie können
den Hintergrund ändern. Innerhalb des Ordners meines
Hintergrunds kann
ich meinen Hintergrund ziehen. Und jetzt füllt es
den ganzen Bildschirm hier. Jetzt möchte ich das
Bild verwischen. Und das kannst du machen. Wenn Sie
hier oben Unschärfe schreiben und diese Hintergrundunschärfe
genannt haben, füge
ich das
hier ein und Sie
müssen den Grad
der Unschärfe erneut angeben, Sie müssen auf
die Ankerpunkte klicken lass es den ganzen Bildschirm füllen, rechts 00 und die Offsets. Und Sie können den
Betrag schreiben, mit dem Sie es verwischen möchten. Jetzt können wir zum Beispiel
zehn schreiben, und Sie können sehen, dass
nichts passiert. Und das liegt daran, dass die
Hintergrundunschärfe
unter dem Bild liegen muss , um
oben drauf zu sein, so hier. Jetzt können wir die Unschärfe sehen. Und so verwischen Sie Bilder. Und ich denke, eine Unschärfe von zehn
funktioniert gut dafür. Was ich Ihnen jetzt
empfehlen würde, können
Sie zum Beispiel hier auf diesen Text
klicken. Wenn ich ein ernsthaftes Projekt mache, ändere
ich hier tatsächlich die
Namen von all diesen. Denn wenn Sie
zum Diagramm gehen, können Sie sehen, Sie tatsächlich die
Elemente sehen können, die Sie erstellt haben. So können Sie alle Bilder
und die beiden Schaltflächen sehen , die Sie erstellt haben. Gehen wir zum Beispiel
zu dieser Schaltfläche, wenn Sie hier darauf
klicken, und Sie können ihn auch hier auswählen, Sie können diese
Schaltfläche in BTN ändern. Normalerweise verwende ich das
als Präfix für Schaltflächen. Und ich nenne es für Serena. Und ich klicke auf den anderen und
nenne es n. Schau, das ist sehr gut zu tun, denn wenn du jetzt
zur Grafik gehst, können
wir tatsächlich sehen, was
diese Elemente sind. Dies ist der Button for Loop. Dies ist der Button für Serena. Ich habe keine Ahnung was das wenn ich ihnen keinen Namen
gebe, also ist es unmöglich für mich
zu wissen, was das sind. Und manchmal
brauchen wir keine Variablen. Sie können also sehen,
dass dies tatsächlich Variablen
sind , die Sie hier
im Ereignisdiagramm verwenden können. Aber manchmal
brauchen wir sie nicht als Variablen. Zum Beispiel, dieses
Titelfeld hier drüben, werden
wir niemals etwas daran
ändern. Also brauche ich
es nicht wirklich, um eine Variable zu sein. Hier können Sie diese Option mit dem Namen ist variable deaktivieren . Es kann also das Häkchen deaktivieren. Ich
kann das Gleiche machen mit diesem hier oben ist variabel. Und ich denke, wir können es
auch damit machen. Lass es uns tatsächlich machen. Halten Sie also Strg gedrückt,
wählen Sie beide aus, entfernen Sie diese Variable,
Kompilieren und Speichern. Und Sie können in
der Grafik sehen, jetzt
haben wir all diese entfernt. Jetzt haben wir ein einziges
Bild, das übrig ist. Wir können versuchen, diese
Bilder zu erraten , und das ist
wahrscheinlich der Hintergrund. Wenn man es sich also hier anschaut, Bild 1026, heißt es
das Gleiche, 1026. Und wir müssen
es auch nicht wirklich ändern. Also werde ich das entfernen
ist variabel. Und das lässt das
Ganze viel sauberer aussehen. Deshalb bleibe ich gerne
innerhalb meiner Projekte sauber. Und es sind wahrscheinlich
nur die Tasten , die wir als Variablen benötigen weil wir sie
verwenden wenn der Spieler die Tasten
drückt. Also das waren es Jungs für den
Charakterauswahlbildschirm. Ich hoffe, du hattest Spaß
beim Erstellen dieser Benutzeroberfläche und lass uns
zur nächsten Lektion übergehen.
37. Hinzufügen von UI zum Viewport: Also lasst uns fortfahren und
unsere Benutzeroberfläche zum Bildschirm hinzufügen. Also haben wir diesen
Zeichenauswahlbildschirm und möchten ihn
hier zum Ansichtsfenster hinzufügen. Wenn wir also
jetzt auf Play klicken , passiert wirklich nichts. Wir sind wieder
mit unserem Charakter hier, aber wir möchten den
Charakterauswahlbildschirm hinzufügen. Um dies zu tun, fügen
wir normalerweise eine Benutzeroberfläche
im Player-Controller hinzu. Gehen wir also zu den Blaupausen und nutzen wir nun
unsere Spielerkontrolle. Ich glaube, wir haben es noch nicht
benutzt, also ist es immer noch leer, öffne den vollständigen Blueprint-Editor. Und innerhalb des
Spieler-Controllers ist Ort, an dem wir UR hinzufügen, ist so
wichtig, sich daran zu erinnern. Lassen Sie uns diese
Standardereignisse löschen. Wir können
sie immer hinzufügen, wenn wir wollen. Nun, sehr wichtig
zu verstehen, ist die
Benutzeroberfläche etwas clientseitiges. Es sind also nur du als Spieler, der deine eigene Benutzeroberfläche sehen wirst
. Also jeder Spieler
im Spiel als UI. Vielleicht hast du hier unten eine
erfahrene Bar. Du hast hier unten etwas
Nivellierung. Ich weiß nicht, irgendeine zufällige Benutzeroberfläche. Die gesamte Benutzeroberfläche, die Sie
haben, ist clientseitig, also ist sie nicht serverseitig. Die gesamte Benutzeroberfläche ist also
für jeden Spieler individuell. Gehen wir also hier zurück zum
Spieler-Controller. Und das erste, lasst uns ein individuelles Ereignis machen. Machen wir also ein benutzerdefiniertes Ereignis und nennen es Initialisierungs-Widgets. Und noch einmal habe ich Ihnen vorher gesagt, anstatt
diese benutzerdefinierten Ereignisse zu erstellen, ist
es gut, ein
Blueprint-Interface zu verwenden, aber lassen Sie
es uns zuerst erstellen und danach mit einem
Blueprint-Interface wechseln . Machen wir also noch ein anderes, ein anderes benutzerdefiniertes Ereignis
und ich nenne es CL, initialisieren Widgets. Dies wird also eine kundenseitige
Person
sein , die keinen
kundenseitigen verwendet hat. Das einzige, was wir verwenden, wenn wir jetzt zur
Spielerbasis zurückkehren, das einzige, was wir
bisher verwenden, ist eine serverseitige, also auf dem Server ausgeführt. Aber für die Benutzeroberfläche
laufen sie auf dem Client. Klicken Sie also auf Ausführen auf
Client besitzen und dann zuverlässig. Und jetzt, um eine Benutzeroberfläche zu erstellen, sagen
wir, dass Widgets erstellt werden. Ui heißt Widgets. Wir erstellen Widgets.
Erstellen Sie also ein Widget. Und so erstellen Sie
eine Benutzeroberfläche innerhalb von Blueprint. Also lasst es uns hier verbinden. Und jetzt müssen Sie auswählen
, welche Benutzeroberfläche Sie erstellen möchten. Und offensichtlich haben wir
nicht viel. Wir haben nur diese,
Charakterauswahl. Dies ist also diejenige, die
wir hinzufügen möchten. Jetzt, da Sie es hinzugefügt haben, ist
es immer schön, mit der rechten Maustaste
hier zu klicken und es
in eine Variable hochzustufen, damit Sie diese
Variable später verwenden können, wenn Sie das Fenster erneut ein- oder
ausblenden möchten. Fördert also eine Variable. Nennen wir es WB,
das ist mein Präfix. Sie können wählen,
was immer Sie wollen. Und ich nenne
es Charakterauswahl. Dies ist also die Variable
Widget Blueprint für die
Zeichenauswahl . Jetzt zum Ansichtsfenster,
also ist es sichtbar. Sie können hier sehen, wenn
ich auf Jetzt spielen klicke, passiert
nichts und
das liegt daran, dass Sie es dem Ansichtsfenster hinzufügen
müssen. Wenn ich also hierher zurückgehe, muss
ich aus
der Variablen ziehen und zwei Ansichtsfenster hinzufügen
sagen. Und Sie können diesen
Namen „Zu
Ansichtsfenster hinzufügen“ sehen . Genau so. Wenn Sie also auf
Play klicken und nichts
passiert, denn denken Sie daran, dass Sie
die Event aufrufen müssen ,
weiß LCD-Engine nicht, was Sie tun. Wenn Sie also von
diesem benutzerdefinierten Ereignis ausgehen, haben Sie es
vielleicht schon erraten. Wir müssen unsere
clientseitige Veranstaltung hier anrufen. Also hat CL Widgets initialisiert. Es geht von einem
normalen Ereignis, das auf dem Client läuft. Vom Client aus erstellen
Sie also die Benutzeroberfläche und sie wird angezeigt. Aber natürlich müssen wir dieses Event auch
ausführen da die Engine nicht weiß, was wann Sie dieses Event ausführen
möchten. Und ich will es einfach am Anfang
hier laufen lassen. Wenn ich also auf das Spiel
spiele klicke, möchte
ich hier meine
Charakterauswahl zeigen. Rufen wir dieses Ereignis also hier initialisieren Sie Widgets
genau so. Wenn ich jetzt auf Play klicke, wird dieses Event ausgeführt. Dieses Ereignis führt dieses Ereignis aus
, das auf dem Client ausgeführt wird. Und dann erstellen wir
die Benutzeroberfläche und fügen
sie dann dem Ansichtsfenster hinzu. Lasst uns alles retten. Klicken wir auf Play. Und du siehst, wenn
ich auf Play klicke, jetzt ist meine Benutzeroberfläche auf dem Bildschirm. Sie können jedoch sehen, dass ich den Mauszeiger auf die Tasten bewegen
kann, aber meine Maus ist nicht sichtbar. Dies liegt daran, dass
Sie im
Player-Controller die Standardwerte der Klasse haben. Sie müssen auf diesen Mauszeiger anzeigen klicken. Klicken Sie also hier,
Kompilieren und speichern und
sehen, was passiert. Jetzt kann ich meinen Cursor sehen, und du kannst jetzt sehen, dass ich meine Benutzeroberfläche sehen und auf die Schaltflächen
klicke. Du siehst, wir haben hier einen
kleinen Bug. Ich kann den Mauszeiger über den
Button bewegen, der Farben ändert. Aber wenn ich den Mauszeiger über das Bild fahre, kann
ich es nicht mehr bewegen. Sie können sehen, dass der
Hover-Effekt verschwindet. Dies liegt daran, dass mein Bild
meinen Button blockiert. müssen wir beheben.
Gehen Sie also zurück zur Benutzeroberfläche, und das ist sehr wichtig. Dieses Bild
blockiert derzeit diesen Button, daher kann ich ihn nicht drücken. Und lasst uns sowohl dieses
Bild als auch dieses Bild auswählen. Lass uns runter gehen und das
musst du ändern. Die Sichtbarkeit in
ihrem Verhalten. Behinderung, ändere es
auf „Keine“, klicke auf Testable. Und das bedeutet, dass es keine Rolle spielt, dass
dieses Bild da ist. Ich möchte es einfach ignorieren. Die Maus
wird es also ignorieren. Du kannst hier sehen, indem du jetzt spielst, und ich fahre mit dem Mauszeiger über das
Bild, es spielt keine Rolle. Ich schwebe immer noch
auf dem Knopf. So müssen Sie also festlegen, dass
Elemente nicht testbar getroffen wenn Sie nicht möchten, dass sie
Ihre Interaktion mit
Schaltflächen und der Welt blockieren . Okay, bevor wir fertig sind, machen
wir es, anstatt diese benutzerdefinierten
Ereignisinitialisierungs-Widgets zu machen, tatsächlich einem Blueprint-Interface
und dann können
Sie daraus auch einige Übungen machen. Also lasst es uns minimieren und versuchen es selbst zu machen,
wenn du willst. Dies ist die gleiche
Methode wie vor dem Aufrufen des
Interface-Ordners. Jetzt hatten wir eine
für die Spielerbasis gemacht, also müssen wir einen neuen
für den Spieler-Controller erstellen. Also klicken wir mit der rechten Maustaste, gehen Sie hier zu Blueprints und wählen Sie
Blueprint-Schnittstelle aus. Und wieder
nenne ich es normalerweise den Namen des Blueprints, in dem ich ihn verwenden
möchte. Also wollen wir es so
im Player-Controller verwenden und
darauf klicken. Und jetzt geben wir dieser Funktion einen Namen und rufen sie erneut auf, initialisieren Sie
einfach so Widgets. Kompilieren und speichern. Und gehen wir zurück
zum Spieler-Controller. Denken Sie noch einmal daran, hier
zu kompilieren, sehr wichtig, speichern Sie zu kompilieren. Gehen wir zurück zum
Spieler-Controller. Und drinnen
gehen wir zu den Klasseneinstellungen. Und hier in den Schnittstellen fügen
wir unser Interface
für den Player-Controller hinzu. Und jetzt siehst du
es hier erscheinen. Sie können dann
Initialisierungs-Widgets schreiben. Und Sie können sehen, wie das Ereignis Widgets
initialisiert wird, und es stammt von einem
Blueprint-Interface. Das bedeutet das Icon. Jetzt können wir es hier verbinden. Und wir können das Ereignis auch
hier aufrufen und Widgets initialisieren. Und wieder
wähle ich diesen unter int Player Controller aus,
einfach so. Jetzt funktioniert es also einwandfrei. Schon wieder. Wenn ich auf Play klicke, wird
es jetzt so funktionieren, wie es sollte.
38. Character: Gehen wir jetzt
zurück zu unserem Widget. Gehen wir in die Benutzeroberfläche und
den Widget-Blueprint. Und drinnen
möchten wir nun der Benutzeroberfläche Funktionen hinzufügen. Denken Sie daran, dass
dieser Widget-Blueprint
in einen Designer und ein Diagramm unterteilt ist, um der Benutzeroberfläche Funktionen
hinzuzufügen dieser Widget-Blueprint
in einen Designer und ein Diagramm unterteilt ist . Und in der Grafik
fügen wir unsere Funktionalität
für die Buttons hinzu. Wenn Sie also auf den Designer klicken, können
Sie auf
eine der Schaltflächen klicken. Fangen wir also damit an, dass Serena auf diesen Button
klickt. Und wenn Sie
auf die Schaltfläche gehen, können
Sie sehen, dass Sie einige
Ereignisse haben, die Sie hinzufügen können. Was sollte zum Beispiel passieren, wenn ich auf diesen Button klicke? Was sollte passieren, wenn ich den
Mauszeiger über den Knopf fahre? Was sollte passieren, wenn
ich den Button aufdecke? Wir haben also verschiedene Ereignisse, die
wir für den Button hinzufügen können. Jetzt möchte ich
dieses vorerst benutzen,
was sollte passieren, wenn
ich auf den Button klicke? Klicken Sie also auf das Plus und fügen Sie diese Veranstaltung hier hinzu. Jetzt können Sie diese löschen
, wenn Sie möchten. Dies sind die Standardeinstellungen. Wir können sie hinzufügen, wenn wir wollen. Wählen Sie sie aus und klicken Sie
auf meiner Tastatur auf Löschen. Also werde ich das vorerst nur
haben. Der Workflow, bevor ich beginne, der Workflow, mit dem wir arbeiten werden ist, wenn Sie den Player
spawnen möchten, drücken
Sie diese Taste. Mit dieser Schaltfläche
gelangen Sie zu einem Event im
Spieler-Controller. Also müssen wir
hier ein Event haben und der Spieler-Controller für das Laichen
wählt den Charakter aus. Und wenn du
den Charakter
auswählst, durchläuft er den Spielmodus. Und sehr, sehr
wichtig, sich daran zu erinnern , dass der Spielmodus nur auf dem Server
läuft. Sie können also nicht hierher kommen und
ein benutzerdefiniertes Ereignis erstellen und
es auf Run-On-Client einstellen. Das funktioniert nicht. Nur der Spielmodus existiert
nur auf dem Server. Und das ist sehr gut
, weil wir
den Spielmodus verwenden können , um zu überprüfen,
was der Client macht. Denken Sie noch einmal daran, dass der Server
in Unreal Engine oder nur im Multiplayer im Allgemeinen überprüft, oder nur im Multiplayer im Allgemeinen überprüft,
was
die Clients tun, also verhindern wir das Cheaten. Und der Spielmodus ist dafür sehr
gut zu verwenden, da er nur
durch den Server läuft. So können wir hier Dinge
durchlaufen und dann
einen Spieler im Spielmodus hervorgebracht haben, der
es uns ermöglicht, den Spieler zu spawnen. Gehen wir also zurück
zum Widget-Blueprint. Wenn Sie ein Event im
Spieler-Controller haben, wird uns
der Controller in den Spielmodus versetzen. Der Spielmodus, wenn
es das sieht, Ja, du darfst den Spieler
spawnen, wird er
diese Informationen an
den Spieler-Controller zurückwerfen . Sie könnten fragen, warum fügen
wir
diesen Code hier nicht hinzu ? Warum fügen wir es anstelle
der
Spielerbasis in den Player-Controller hinzu? Da dies der
Spieler ist, möchten wir einen Spieler
ausgeben und
er ist spielerspezifisch. Da wir kein Plenum
haben,
denken Sie daran, dass wir den Spieler
hervorbringen. Dieser Code
existiert also nicht, wenn Sie sich
hier im Auswahlbildschirm befinden hier im Auswahlbildschirm da Sie den Player noch nicht
hervorgebracht haben. Sie können also hier keinen Code hinzufügen. Es wird nicht funktionieren, da
dies tatsächlich noch nicht
existiert, wenn Sie den Spieler nicht hervorgebracht
haben. Sie können also nicht, wir können
den Code hier nicht machen, also müssen wir es im Player-Controller tun,
da
der Player-Controller immer dann spawnt, da
der Player-Controller immer dann spawnt wenn der Player eine
Verbindung zum Server herstellt. Wenn ich also Counter-Strike spiele oder wenn ich Maple Story spiele, wenn ich mich mit dem Server verbinde, erstellt
er automatisch einen Spieler-Controller
für jeden Spieler. Der Spieler-Controller
existiert obwohl mein **** noch nicht geantwortet hat. Gehen wir also zum
Widget-Blueprint. Und drinnen wollen wir eigentlich
mit einer Plake-Kontrolle beginnen. Ich denke, es wird dir hier
einfacher sein. Lasst uns also hier ein neues Event
machen, hier eins machen und nennen
wir es. Nennen wir den Select Character. Jetzt, manchmal, wenn ich
verwirrt bin, wie ich einen Mechaniker machen
soll, beginne
ich normalerweise von hinten, also
denke ich manchmal, dass es sehr schön ist. Manchmal kann man von hinten
anfangen. Was versuchst du am Ende
zu erreichen? Was ich versuche zu erreichen, ist dieser Spawn-Schauspieler. Dies ist der, den wir benutzen
werden. Letztendlich. Wir wollen einen Schauspieler spawnen, du willst den Charakter spawnen. Und hier ist dies der
Charakter, den wir spawnen möchten. Und lassen Sie mich
hier unten ein Ereignis machen, das Spawn-Layer genannt wird. Dies ist das ultimative Ereignis, bei dem wir am Ende ein Ergebnis erzielen
möchten. Du kannst also von hinten anfangen. Und anstatt hier anzufangen, ist es manchmal
viel einfacher zu verstehen. Das Zurückgehen ist also
viel einfacher, manchmal wieder den Spieler zu spawnen. Dies sollte
aus dem Spielmodus kommen, denn wie ich bereits sagte, wenn du hier klickst, geht
es hier zum
Spieler-Controller, der Spieler-Controller
wird uns hineinwerfen
des Spielmodus, und der Spielmodus wird
uns hier rauswerfen, reagiert auf den Spieler. Ich ziehe
Is-Variablen für das Ereignis hier. Und statt der Klasse ändern
wir den Namen davon,
nennen wir ihn Player und
spawnen Transformation. Wir können es einfach
Spawn-Transformation nennen, das ist in Ordnung. Also haben wir das
Spawn-Spieler-Event hier. Dies wird
aus dem Spielmodus kommen. Gehen wir jetzt zurück in
den Spielmodus. Also arbeiten wir jetzt rückwärts, um in den Spielmodus zu
gehen, ich werde dieses
Event löschen, damit du mit dem
Spielen beginnen kannst , weil wir sie gerade nicht
brauchen. Zusammengesetzte Speicherung, und
ich werde hier
eine neue Veranstaltung erstellen , benutzerdefinierte Ereignisse. wir es
Anforderungs-Spawn-Layer. Fordert einfach so einen Bond-Spieler an. Und es wird unseren
Spawn-Spieler vom Player-Controller aus ausführen . Aber im Moment haben wir keine,
wir haben keine Variable
für den Player-Controller, daher kann ich dieses Event hier nicht aufrufen. Denken Sie daran? Jetzt wird es etwas
weiter fortgeschritten, weil wir diesen
Event Spawn-Spieler verwenden
müssen
, der sich im
Spieler-Controller befindet, wir müssen ihn
im Spielmodus verwenden. Und das heißt
Blueprint-Kommunikation, wie ich Ihnen bereits sagte, dafür verwenden
wir
Blueprint-Interfaces. Aber im Moment können
wir einfach auf dieses klicken wir
können den
Player-Controller hinzufügen. Und dann können
wir als Variable den Player-Controller auswählen und wir nennen ihn PC. Ich glaube, PC Maple Story, wir nannten es ja,
einen PC Maple Story. Und dann lassen Sie uns
tatsächlich vom
Player-Controller erstellen . Wenn Sie es nun ziehen,
denn jetzt, da die Variable hier diese Blueprint-Klasse
ist, können
wir
diese Spawn-Layer jetzt aufrufen. Wenn Sie also von diesem ziehen
und Spawn-Layer sagen, Okay, jetzt können wir
dieses Ereignis hier aufrufen. Und genau wie zuvor ziehe
ich
die wieder zurück. den Spieler also hierher ziehen weil dieser eine
Anforderungsspieler spawnt, werden
wir ihn vom
Player-Controller wieder hierher
rufen . Und S4, der Standort. Normalerweise breche ich das auf. Denken Sie also an eine
Transformationsvariable Wenn ich eine erstelle und Ihnen hier unten
zeige, ist
eine Transformationsvariable eine Variable, in der wir
die Position, Rotation
und Skalierung sehen können , genau wie
in unserem Ansichtsfenster hier wenn wir auf etwas klicken, sehen
wir die Transformation. Dies ist die Transformationsvariable. Das brauchen wir also immer, um festzulegen wo der Spieler spawnen soll, wie der Spieler beim Laichen
gedreht werden soll, wie groß der Spieler ein Laichen sein
sollte. Lassen Sie mich
dieses also vorerst löschen. Und anstatt
die umgekehrte Transformation zu haben, können
Sie von hier aus ziehen
und auf diese klicken, machen Sie dies, wir werden sie in diese drei
aufteilen. Also die Position, die
Rotation und die Skala. Und normalerweise lasse ich
das einfach im Spielmodus sein. So
bevorzugen Sie es auch als Programmierer, manche Leute machen es anders, aber normalerweise mache
ich den Transformator und zerreiße ihn so. Und dann verbinde ich einfach
den Standort hier draußen weil die Rotation
gleich ist und die Skala gleich ist. So sieht es also aus. Wir können es auch anstelle
des Ortes als Spawn-Standort bezeichnen. Nur damit du
später nicht verwirrt bist, was das ist. Okay, jetzt habe ich diesen
„Request Spawn Player“ genannt. Jetzt hier draußen
im ausgewählten Spieler
wird es
sein, da der ausgewählte Spieler uns hier rüberwerfen
wird. Und um
mit einem Spielmodus zu kommunizieren. Noch einmal sagte ich schon, der Spielmodus
läuft nur auf dem Server, also musst du
das auf dem Server ausführen. Also wissen wir jetzt, wie das geht. Machen wir also ein benutzerdefiniertes
Ereignis und nennen es S RV, wählen Sie den Charakter aus. Und schon von hier oben können
wir dieses Event durchführen. Also wähle SRB Charakter aus und vergiss nicht,
es auf dem Server auszuführen,
diesen, wähle Charakter aus
und klicke auf „zuverlässig“. Jetzt haben wir dieses
selektierte Zeichen. Es wird
durch den Server laufen. Und denken Sie daran, wir
werden
den Request Spawn Player anrufen . Und wieder müssen wir mit unserer Blaupause
kommunizieren. Wir müssen den Decay-Modus
hier innerhalb des
Player-Controllers verwenden , ich werde Ihnen beibringen, wie
Sie welche Blueprints kommunizieren können. Das
haben wir vorher noch nicht angefasst. Um mit
dem Spielmodus zu kommunizieren. Man muss sagen, bekommt den
Spielmodus. Sehr einfach. Jetzt hol den Spielmodus. Das ist nicht
dein Spielmodus hier. Dies ist nur ein allgemeiner
Spielmodus in der Engine. Wenn du sagst „Spielmodus abrufen“, musst
du definieren. Sie können hier sehen, wenn Sie die Maus darüber
halten, heißt
es zurück zur
aktuellen Spielmodusbasis. Wenn du jetzt den Spielmodus bekommst, musst
du definieren, von welchem
Spielmodus du sprichst, denn dies ist nur
der allgemeine Spielmodus. Und wir haben etwas
namens Casting. Also wenn Sie das
rausziehen und Kosten sagen um zwei zu kosten, bedeutet dies, über
welchen Blueprint ich spreche. Ich spreche von
TM Maple Story. Also kostet Maple
Story, diese hier. Okay? Als Maple Story bedeutet
das, dass ich jetzt alles benutzen
kann , was sich in
dieser Blaupause befindet. Jetzt kann ich zum Beispiel den Spawn Player verwenden oder nennen. Wenn ich also rausziehe und „Spawn-Spieler
anfragen“ sage, kannst
du sehen, dass ich dieses Event jetzt
anrufen kann. Oder sagen wir, wenn ich
ein Ereignis namens „Hallo
“ erstellt ein Ereignis namens „Hallo
“ und es eine Transformation ist, kann
ich zu meinem
Controller zurückkehren und sagen: Hallo. Ich kann jetzt sehen,
dass ich diese Variable auch bekommen kann. So
kommunizierst du zwischen Blueprints, damit ich
den allgemeinen Spielmodus erhalte. Und ich erzähle es, ich spreche
speziell von GM Maple Story, weil man in Spielen
manchmal mehrere Spielmodi
hat, sodass man manchmal nicht nur einen
hat. Davon spreche ich. Was den Spieler-Controller angeht, können Sie hier den Player-Controller holen. Und du kannst sehen, du kannst
den Spieler-Controller nach dem
gleichen Prinzip bekommen . Dann können Sie sehen, dass dies jetzt
ein allgemeiner Player-Controller ist und Sie können auch Kosten sehen, weil ich speziell
über diese BC Maple Story spreche . Bc Ahorn. Sie können sehen dass Sie so
mit Blaupausen kommunizieren. Diese gute Plake-Kontrolle
liegt für Einzelspieler. Ich erkläre
es dir ein bisschen. Also lasst uns das hier löschen. Und anstatt zu kosten, wissen Sie
jetzt, was Kosten sind. Anstatt zu kosten, verwende ich
gerne Blueprint Interfaces. Das Problem beim Casting
ist, dass es
harte Referenzen erzeugt und Ihr Spiel
verzögert, viele davon. Wenn Sie also ein großes
Spiel haben,
an dem Sie seit einem Jahr arbeiten , und Sie haben eine Menge Casting, wie Sie
dazu führen, dass Sie das kosten. Und du machst es
tausendmal in einem Spiel, es wird dein Spiel
verlangsamen. Jetzt sage ich nicht, dass
es schlecht ist zu benutzen. Ich benutze es manchmal und du
solltest es manchmal benutzen. Aber wann immer Sie
ein Blueprint-Interface verwenden können, empfehle
ich Ihnen,
ein Blueprint-Interface zu verwenden ,
damit Sie diese harten Referenzen nicht erstellen, was Ihr Spiel verlangsamt. Also
musst du zuerst darüber nachdenken, worauf du dich beziehen willst? Worauf wir versuchen, auf den Spielmodus zu
verweisen. Also können wir dieses Ereignis hier tatsächlich
nutzen. Okay, also müssen
wir für den Spielmodus tatsächlich
ein neues Blueprint-Interface
für den Spielmodus erstellen . Gehen wir nun zu Interfaces, erstellen hier ein neues
Blueprint-Interface und nennen Sie es dann beendet den Spielmodus. Jetzt heißt diese hier, die Funktion, die wir machen wollen,
heißt, ich schaffe es. Dann kann ich dir zeigen
, wovon ich rede. Ich denke, es ist viel einfacher. Also nennen wir es
Get's Game Mode ref. Also versuchen wir,
die Spielmodus-Referenz zu erhalten. Und das ist eine Funktion, also erstellen wir eine Ausgabe. Hier. Die Variable, die Sie auswählen
möchten, ist alles,
auf das Sie verweisen möchten. Ich versuche,
auf meine GM Maple Story zu verweisen. Also mein Spielmodus, und nennen wir es
einfach Spielmodus. Okay, jetzt habe ich die
Funktion und lass uns nochmal hinzufügen. Er kam zu unserem
Tarn-Blueprint heraus, der Schnittstelle zu einem
Spiel oder einer Blaupause. Gehen wir also zu den
Klasseneinstellungen und wählen Sie. Er ist hier rausgekommen
und hat Save zusammengesetzt. Und wieder können Sie sehen, wie das
Interface hier erscheint. Und wie der Spielmodus. Jetzt müssen wir definieren,
was dieser Spielmodus ist. Und ich werde mich einfach selbst
ziehen und sagen, was ich selbst bedeutet, in welcher
Blaupause ich auch bin. Moment bin ich in
der GM Maple Story. Jetzt weiß es also g, m, k Modus oder dieser Spielmodus
bedeutet GM Maple Story. Also das ist es, was „Selbst“ bedeutet. Also selbst bedeutet einfach was, in
welcher Blueprint Class
ich gerade bin. Okay, jetzt wo wir das erstellt
haben, können
wir jetzt zurück
zum Controller gehen. Und anstatt Casting zu machen, können
wir diese Funktion jetzt
hier namens Get Game Mode Rough aufrufen . Ziehen wir also von hier
und sagen Get Game Mode ref. Und als Funktion, wenn
es Nachricht sagt, bedeutet
dies, dass es von
einem Blueprint-Interface stammt und
dies das richtige ist. also immer, ob eine
Nachricht angezeigt wird, bevor Sie sie auswählen, ob sie von einem
Blueprint-Interface stammt. Also wähle es hier aus. Wir haben jetzt
den Spielmodus und wir können tun, was wir wollen,
genau wie zuvor, zum Beispiel diese
zufällige Hallo Variable aufrufen. also Hallo sagst, kannst du jetzt
sehen, dass es auch funktioniert. Um es schnell zu erklären, was passiert ist, bekommst du
den allgemeinen Oky-Modus und dann
sagst du Game Mode rref. Und das ist die Funktion
, die wir hier geschaffen haben. Und es weiß, was der Spielmodus ist, denn hier legen
wir die Spielmodus-Variable
als Selbstreferenz fest, was bedeutet, dass sie sie weiß. Gm Maple Story. Das ist also GM Maple
Story, die wir verwenden. Okay, das ist also der
Spielmodus, den wir jetzt verwenden möchten. Lassen Sie uns diese
Variable tatsächlich löschen, bevor ich es vergesse. Nennen wir diesen Namen
Requests Spawn Player. Fordern Sie also hier drüben einen
Spawn-Spieler an. Und ich muss meinen Spieler definieren. Und das will ich noch nicht machen. Ich möchte meinen Spieler
hier definieren , denn wenn ich auf Tsarina
klicke, wird
mein Spieler Tsarina sein. Und wenn ich auf den Button klicke, Luke, möchte ich
meinen Charakter-Look definieren. Also lass mich
das einfach ziehen und hier weitermachen. Und was den Standort angeht, können
wir auch weitermachen
und ihn hierher ziehen. Und dann
siehst du es hier drüben. Wähle den Charakter aus,
ich werde sie dort einfach weiter anschließen. Jetzt können wir diesen
Namen Select Character nennen. Und hier möchte ich im Widget Blueprint
anrufen. Jetzt, den Widget Blueprint, muss
ich dieses
Auswahlzeichen nennen. Jetzt werden wir also wieder
mit unserem Blueprint Interface üben . Im Widget-Blueprint können
Sie also sagen, dass er
Spielercharakter bekommt. Nun ist dies gut im
Einzelspieler zu verwenden , da Sie den Spieler
sehen können und
dieser Index 0 ist. Aber du, wenn du dich als
Spieler und das Spiel
im Multiplayer verbindest . Der Spieler, der sich verbindet,
sollte X1 geplant sein. Und dann
verbindet sich der dritte Typ mit dem Server, und es ist geplant x2
und 3406 und so weiter. Wenn sich also mehr Spieler verbinden, haben
sie
verschiedene Indizes. Wir können das also nicht wirklich im Mehrspielermodus verwenden
. Dies gilt nur für
Einzelspieler und Multiplayer. Wir verwenden Get Owning Player. Und wenn Sie den
Mauszeiger darüber bewegen,
wird der Player-Controller mit dieser Benutzeroberfläche
verknüpft. Es wird diesen
Player-Controller,
Ihren Player-Controller,
Sie als Player erhalten Ihren Player-Controller, , den
Sie verbunden haben Er erhält Ihren
Player-Controller
, der
mit dieser Benutzeroberfläche verknüpft ist. Jetzt haben wir den
Spieler-Controller, und wieder müssen
wir sagen, Spieler-Controller ref holen, und wer hat das noch nicht gemacht. Denken Sie daran, dass wir früher
eine Schnittstelle für den
Player-Controller erstellt haben. Wir können diesen Klick hier benutzen. Und genau wie zuvor
klicken wir auf Funktion hinzufügen und sagen, erhält Layout-Controller ref. Und jetzt können wir eine Ausgabe hinzufügen. Und genau wie das, was
ich vorher gesagt habe, worauf versuchst du zu verweisen? Das sollten Sie als Variable
haben, die ich versuche, auf
meinen Player-Controller PC zu verweisen. Wir nennen die PC Maple Story hier und nennen sie
Player-Controller. Okay, also denken Sie jetzt daran, in
den Controller zu gehen und Sie müssen den
Player-Controller definieren. also wie zuvor Ziehen Sie also wie zuvor aus dem Jahr und sagen Sie sich selbst. Der Player-Controller ist also als diese PC Maple Story
definiert. Was wir jetzt im Widget
tun können, können
wir den Owning Player bekommen. Jetzt haben wir den
Player-Controller, und jetzt muss ich
angeben, über welchen
Player-Controller sprechen Sie konkret? Ich spreche davon und wir haben diesen namens Gets
Player Controller ref jetzt hier
gemacht . Jetzt haben wir den Spieler-Controller und das, was wir hier
machen wollen, wir möchten diese Ereignisse nennen , Spieler
auswählen, Charakter auswählen. Und wir können es
hier wählen Charakter nennen. Und du siehst, dass wir den Charakter
auswählen können. Wenn du also auf Tsarina klickst, möchten
wir, dass der Charakter
Serena ist. Wenn wir auf Luke klicken, wollten
wir angenehm aussehen. Hier, anstatt
den Select Character zu verwenden ,
hat das normale Ereignis, genau wie das, was ich Ihnen zuvor
gesagt habe, machen
wir es tatsächlich zu
einem Blueprint-Interface. Also zurück, das ist
der Spieler-Controller. Gehen Sie also zum
Spieler-Controller, Machen wir hier eine neue Funktion, nennen Sie es Select Character. Und lasst uns zwei
neue Variablen erstellen. Einer ist der Spieler und der andere sind
die Anleihestandorte. Also lösche ich
diesen hier vorerst. Ich kompiliere. Gehen wir zum Hier, zur Schnittstelle
und
zum Select
Character, den wir gerade erstellt haben. Lass uns hier einen Schauspieler machen. Die Variable ist also Akteur, und es ist eine Klassenreferenz weil
wir sie spawnen werden. Also eine Klassenreferenz, und nennen wir es Spieler. Und der andere ist
der Spawn-Standort
und es ist ein Vektor. Also Vektor-Spannen-Standort,
genau so. Und wir können jetzt wie Controller
enden, nennen Sie es wählen Charakter. Und es kommt von
einem Blueprint-Interface. Und wir können es miteinander verbinden. Jetzt, da wir diesen haben, können
wir jetzt
hier
zum Widget Blueprint zurückkehren und
ihn erneut auswählen nennen . Es ist also sehr gut zu üben. Normalerweise schaffe ich
es nicht direkt innerhalb
des Player-Controllers oder
in der Schnittstelle, weil ich dir
den Unterschied beibringen
möchte. Also lasst uns das machen. So wie der Charakter
ist dies die Funktion hier. Einfach so. Und du wählst
Serena als Charakter aus. Okay, also geh jetzt zurück
zum Designer. Klicken Sie auf Luke, den Button hier, gehen Sie zurück nach unten, klicken Sie
auf Ungeklickt. Und als Luke kopiere
ich einfach den ganzen Code
noch einmal ein , kopiere Einfügen. Und ich werde es so einstellen, dass
es stattdessen hier aussieht. Wenn wir also auf die Schleife klicken, wird
es spawnen. Wenn wir auf
Serine klicken, wird das
gehen und die Arena sponsern. Also lasst uns den Code durchgehen. Wenn ich also klicke, wähle ich
meinen Charakter aus. Ich führe diese Funktion aus. Diese Funktion ist am
Ende der Spieler-Controller. Also werde ich diese
Funktion ausführen, dieses Ereignis hier, wählt Charakter wird
durch den Server gehen. Die Server
gehen dann durch den Spielmodus. Und es wird einen Spieler
anfordern. Und wieder möchte ich dies
zu einer
Blueprint-Interface-Funktion machen , wie Sie hier
im Spielmodus sehen können, dies ist vorerst nur eine normale
Funktion. Wir können also sehen, dass es
ein wenig Zeit braucht um die
Schnittstellenfunktionen zu erstellen, aber es ist sehr schön, das zu tun, und es hält Ihr Projekt
optimiert und sauber. Fordern Sie also Spawn Player an, Gehen wir zurück
zur Interface-Funktion oder Schnittstelle des Spielmodus. Nennen wir es einen
Request-Spawn-Spieler. Genau so. Und dazu haben wir hinzugefügt: Gehen wir zurück in den Spielmodus. Wir haben den Spieler-Controller hinzugefügt. Wir haben den Schauspieler
als Spieler hinzugefügt. Wir haben die Spawn-Standorte hinzugefügt. Lassen Sie es mich also vorerst löschen, speichern
kompilieren und gehen wir zurück. Ich lösche
sie nur, bevor ich
sie mache , damit es nicht abgehört wird. Lassen Sie uns also drei
verschiedene Variablen erstellen. Der eine war der
Spieler-Controller, der andere war der Spieler. Und der dritte war
der Spawnstandort. Auf der Spawn-Position befindet sich ein Vektor und der
Spieler war Schauspieler. Und es ist die Klassenreferenz weil wir den Spieler
hervorbringen wollen. Der Spieler-Controller
ist unser PC Maple Story. Jetzt diese eine Anforderung
Spawn-Layer, ich nenne
es hier Anfrage Spawn Layer, Indie-Spielmodus. Und dann können wir es jetzt
wieder so verbinden. Das Ziel ist also der Spieler-Controller und
dieser am Standort. Okay? Bevor
wir also auf Serena klicken, wird
es den Spielmodus
durchlaufen. Hier ist der
Player-Controller, tut mir leid, diese elektrische Ladung
wird durch
den Server gehen und jetzt müssen wir hier den richtigen
aufrufen. Wenn ich es lösche, müssen wir
den Request Spawn Player anrufen ,
weil wir es gerade gemacht haben. Und ich wähle
diese eine Nachricht aus. Denken Sie daran, Nachricht auszuwählen, wenn es sich um eine Interface-Funktion handelt. Sie können dieses Symbol auch sehen, wenn es auf eine Interface-Funktion trifft. Und dann verbinde sie wieder. Und jetzt musst du definieren,
was der Spieler-Controller ist. Denn obwohl du im Spielmodus
das
Plaque-Steuerelement hier
aufgerufen hast und diese Funktion hier aufrufst. Sie haben nicht wirklich definiert,
was der Player-Controller ist. Und lass uns zurückgehen. Jetzt. Das ist momentan leer. Also lasst uns einfach davon ziehen. Denken Sie daran, dass wir
im Player-Controller sind. Wir können einfach ziehen und selbst sagen. Wir sprechen hier nur über
Display-Controller. Also wird es diese Veranstaltung
durchlaufen. Und dann
fordern Sie im Spielmodus den Spawn-Spieler an,
es wird gehen. Und wir führen es durch
den Spielmodus weil wir nicht wollen, dass
der Client betrügt. Wir überprüfen das alles und es geht zurück
zum Spawn-Spieler, zum Spieler-Controller. Es wird den Spieler spawnen. Und es wird hier einen Spieler
hervorgebracht. Jetzt können
wir es wieder anstelle eines kleinen
Players zu einer
Interface-Funktion machen. Es enthält also den Spieler als Schauspieler- und
Spawn-Transformation. Gehen Sie zum Löschen und gehen Sie zur Schnittstelle für den
Player-Controller. Ich weiß, dass viele
Dinge passieren, aber wenn Sie das runterkriegen, versuchen Sie, dieses Video
zweimal oder dreimal anzusehen, Sie werden ein Like bekommen, wenn Sie ein Experte darin
sein werden. Also versuche zu üben und
ich weiß, dass es schwierig ist, aber sobald du das
zweimal oder dreimal siehst, wird
das viel einfacher. Es fiel mir schwer, als ich
damit angefangen habe, all das zu tun. Also lasst uns den Spawn-Spieler machen. Und wir hatten, jetzt habe ich fast vergessen, dass
wir den Spieler als Schauspieler hatten und wir hatten auch die
Spawn-Transformation. Das war also eine Transformation und
der Spieler war Schauspieler, und es war eine Klassenreferenz. Okay, also gehen wir zurück zum Player-Controller und zu sechs
Spawn-Layer-Ereignissen Bond-Layer. Und jetzt können wir es hier verbinden. Ich verbinde die Dosis und
verbinde das hier. Und denken Sie daran, dass dies
aus dem Spielmodus kommt. Sie müssen es also auch
in den Spielmodi ändern ,
wahrscheinlich wird es Fehler machen. Und denken Sie daran, es stammt auch von
den Schnittstellenfunktionen. Also brauchen wir das,
dieses Icon hier oben. Also lass
es mich löschen und spawn sagen. Lassen Sie mich eigentlich von
der
Spawn-Ebene des Spieler-Controllers ziehen . Jetzt kann ich auf diese
eine Spawn-Spieler-Nachricht klicken. Und verbinden wir sie
einfach so hier. Also
spawnen wir den Spieler. Und wir gehen zurück
zum Spieler-Controller und es
wird den Spieler spawnen. Okay, wenn wir also einen Spieler spawnen, müssen
wir etwas Letztes tun. Wir müssen einen
sogenannten Prozess verwenden weil Sie den Player
hervorgebracht haben, aber Sie haben der
Engine nicht gesagt, dass Sie diesen Player
steuern möchten , und das nennen wir besitzen. Verweisen wir also
auf die Spielerbasis. Das müssen wir tun, weil wir uns auf einen Schauspieler beziehen
müssen. Was versuchst du zu kontrollieren? Und wir versuchen dies
zu kontrollieren,
diesen hervorgebrachten Schauspieler, der jetzt
eine Spielerbasis ist , weil wir ihn
jetzt hervorgebracht haben. Hier. Wir haben jetzt den
Verweis auf die Spielerbasis. Und ich glaube, wir haben
dafür kein Interface erstellt. Eigentlich haben wir
eine Spielerbasis. Lass uns hier reingehen. Und
lasst uns noch einmal ein neues machen. Sagen wir, bekommt Layer-Rep. Also erhalten wir die
Spielerreferenz genau wie das was wir mit dem
Spieler-Controller und dem Spielmodus gemacht haben. Und wir versuchen, die BP-Spielerbasis zu
referenzieren. Nennen wir es „Layer“. Denken Sie daran, wieder zur Spielerbasis
zurückzukehren, zurück zu Spieler, Spielerbasis zu
gehen. Und hier finden
wir den Get Player Ref. Wie zuvor,
was ist der Spieler? Der Spieler ist Selbst. Also in welcher Blaupause wir uns befinden. Nun, was wir versuchen, ist hier im
Player-Controller. Also müssen wir uns auf
die Spielerbasis beziehen. Erhält also Layer REF. Und das liegt daran, dass
dies jetzt der Spieler ist, das ist der Schauspieler,
aber Sie müssen dies
definieren, da dies der Spieler
ist. Und als Spieler möchte
ich
diese antwortenden Spieler besitzen. Sie müssen dies also in
Blueprint tun , damit Sie
es dem Motor mitteilen können. Ja, ich habe den Schauspieler hervorgebracht, aber ich möchte diesen Schauspieler auch
kontrollieren. Okay, jetzt haben wir das alles
gemacht. Also viel Code in diesem Video, ich entschuldige mich dafür, dass ich es zu lange
gemacht habe. Ich weiß manchmal wird es hektisch, aber wir konnten
es eigentlich nicht kürzer machen. Und ich habe versucht
alles zu erklären, was ich durchmache. Aber jetzt, da wir
auf Play klicken und auf den Button klicken, spawnen Sie
tatsächlich. Aber diese Benutzeroberfläche
bleibt immer noch auf dem Bildschirm. Und lasst uns
zur nächsten Lektion übergehen
, in der wir diese Benutzeroberfläche entfernen.
39. So entfernst du die UI aus dem Viewport: Nachdem wir nun
unsere Charakterauswahl abgeschlossen haben, entfernen
wir die Benutzeroberfläche für
die Zeichenauswahl. Wenn ich jetzt auf
den Button klicke,
siehst du , dass die Benutzeroberfläche
immer noch hier oben bleibt. Also lasst uns das zuerst entfernen. Gehen wir hier zur Benutzeroberfläche und
zum Widget-Blueprint. Wenn ich also auf Serena klicke meinen Charakter auswähle, möchte
ich die Benutzeroberfläche entfernen. Und das ist sehr
einfach, denn jetzt haben wir alles eingerichtet. Ich kann diesen
Player-Controller nehmen, was ich letztendlich
versuche. Denken Sie daran, dass wir
das Widget hier hinzugefügt haben. Wir haben ein initialisiertes Widget hinzugefügt. Wir haben das
Zeichenauswahl-Widget hinzugefügt. Anstatt zwei Ansichtsfenster hinzuzufügen, gibt es etwas
, das von den
Eltern entfernt wird, und
das versuche ich zu tun. Also muss ich eine
Referenz für diese Variable innerhalb
des Widget Blueprint erhalten. Also haben wir
dieses bereits und wir haben die Get Layer Control
unsere Referenz. Wir haben also bereits die
Player-Controller-Referenz, sodass wir diese Variable einfach
aufrufen können. Wir haben Zugriff auf
diese Blaupause. Wenn ich nun
davon rausziehe und WB sage
und Sie sehen können, dass wir diese Variable
haben , die wir hier hatten, erhält die WB-Zeichenauswahl. Das einzige, was ich tun muss,
ist „Von den Eltern entfernen“ zu sagen. So entfernen Sie die
Benutzeroberfläche aus dem Ansichtsfenster. Also sehr einfaches, sehr kurzes Video. Ich kopiere
das auch für Luke. Kopieren Sie also Einfügen hier unten. Und lassen Sie uns es einfach so
miteinander verbinden. Jetzt bewegen wir Dui. Mal sehen, was passiert. Wenn ich auf Jetzt spielen klicke, wähle
ich den Charakter aus. Du siehst, dass ich
tatsächlich laiche. Wir haben noch nicht wirklich
einen Laichpunkt festgelegt. Und wenn ich meinen
anderen Bildschirm hier öffne, den Client, und wenn ich zum Beispiel
auf die Schleife klicke, kannst
du sehen, dass ich auch laiche, als Luke und ich hier
als Tsarina hervorgebracht haben. Nun, der Standort
für, wie Sie sehen können, sind
die Füße abgehört und das
liegt daran, dass wir noch
keinen Laichplatz festgelegt haben. Und du kannst auch sehen, dass wir hier
als Charakter spawnen. Und das liegt daran, dass
wir jetzt wieder
gehen müssen , habe ich dir schon einmal gesagt, in den Projekteinstellungen und in den Karten und Modi
und im Spielmodus. Jetzt, da wir einen
Zeichenauswahlbildschirm haben, können
wir diese
Standardpunktklasse entfernen. Wir wollen nicht
als irgendein Charakter spawnen. Wir möchten nur Keine auswählen. Und wir wählen unseren eigenen Charakter aus dem
Charakterauswahlbildschirm aus. Wir wollen also nicht
mit einem vorgefertigten Charakter spawnen. Schließen wir es
und ich
speichere alles, um
sicherzustellen, dass das funktioniert. Und ich gehe zu
den Welteinstellungen und stelle nur sicher , dass der Spielmodus hier auch keinen
sagt. Wenn ich nun zum Beispiel auf Play und
Spawnen klicke, können
Sie sehen, dass wir hier keinen Charakter haben
, aber weil wir dort nicht standardmäßig
laichen, funktioniert das
jetzt. Und das nächste, was wir tun wollen ist einen Spawn-Standort zu erstellen, denn jetzt
haben wir keinen wirklich Spawn-Standort. Wir laichen hier nur aus dem Nichts
heraus. Wir möchten also
einen Spawn-Standort hinzufügen, und das werden wir in der nächsten Lektion
tun.
40. Den Spawn Ort erstellen: Also für diesen einen
Ort und wir möchten den Spieler beim
Spielerstart
spawnen. Also bevor es funktioniert hat, weil wir
diese Standard-ON-Klausel auf
eines der Zeichen gesetzt haben . Aber gerade jetzt, wenn
Sie einen Player in
der Benutzeroberfläche spawnen , hier in den
Widget-Blueprints. Wenn du wieder zum
Diagramm gehst, wie du hier siehst, wenn wir den Spieler spawnen, spawnen
wir ihn mit Nullen, Nullen 0. Und deshalb antworten sie
hier. Nach oben links. Wir müssen definieren, um
sie hier beim Spielerstart zu spawnen. Und ich möchte
Spawn-Punkte im Spielmodus erstellen,
denn denken Sie daran, dass der Spielmodus
nur auf dem Server läuft
, so dass der Spieler-Controller betrügt, wenn etwas drin
ist. Dies ist der ganze
Zweck des Mehrspielers. Wir versuchen hier
am Anfang
nicht mehr zu
betrügen. Wenn wir also anfangen, das Spiel zu
spielen, möchte
ich diesen letzten
Punkt als meine Spawn-Punkte definieren. Wir können sagen, du kriegst
Schauspieler des Unterrichts. Und was dieser
Schauspieler der Klasse ist, lässt Sie alles bekommen, was bereits
innerhalb des Levels hervorgebracht
wird. Also sehr, sehr
wichtig, sich daran zu erinnern was bereits
innerhalb des Levels hervorgebracht ist. Dieser Spielerstart ist bereits hervorgebracht und wir können
versuchen, danach zu suchen. Also hol dir Schauspieler der Klasse, wir können alles bekommen, was bereits hervorgebracht wurde und du kannst
nach Spielerstarts suchen. Und du siehst hier, Spieler startet, du kannst es hier auswählen. Es wird also
einen Spielerstart auswählen, es wird
viel schwieriger. Stellen Sie sich vor, wir hätten
mehrere Spielerstatistiken, dann
müssten Sie definieren, welche Sie bekommen möchten, denn im Moment
bekommt es nur einen von einem zufällig. Aber das ist vorerst in Ordnung, diesem
Zweck werden wir
gerade hier draußen vertrieben. Wir haben gerade nur einen
Punktpunkt. Also lasst uns kompilieren und speichern. Wenn dieser Spieler anfängt, bringe ich den
Standort der Schauspieler an Ort. Und dann
mache ich das in eine Variable,
werbe zu einer Variablen auf und nenne
es Player-Spawn-Standort. Okay, jetzt
haben wir diese Variable, Spieler-Spawn-Position
innerhalb des Spielmodus. Jetzt haben wir
diesen einen Ort. Jetzt können wir es
innerhalb des Spielers benutzen. Also innerhalb der Spielerbasis, innerhalb des Event-Graphen hier. Jetzt können wir den Spieler
an dem Ort spawnen , den wir im Spielmodus
erstellt haben. Als wir den
Spieler hier oben hervorgebracht haben, bevor ich irgendetwas mache, sagen
wir Sets. Eigentlich erstellen wir
eine benutzerdefinierte Variable. Nennen wir es „
Spieler-Spawn-Ort einstellen“. Also werden wir
diesen Anleihstandort hier
innerhalb des Spielers festlegen . Und ich möchte das
durch den Server laufen lassen. Es ist also kein Schummeln. Und sagen, dass Server Blendung setzen, Standort
spawnen und
ihn durch den Server laufen lassen, läuft zuverlässig auf dem Server. Und was wir versuchen zu
tun, ist, dass wir versuchen zu sagen, wie wir versucht haben, diesen
„Set Actor Location“ zu verwenden. Dies ist die ultimative Funktion, die
wir verwenden möchten, um Standort der Schauspielerin
festzulegen. Denken Sie daran, dass Sie das
in einer Rippe machen müssen. Benachrichtigen. Denn denken Sie daran,
genau wie das, was wir zuvor in der
Unwrap-Funktion
gesagt haben , dies wird für
alle Clients aktualisiert, da Sie
dies
gerade über den Server ausführen. Also was wir hier versuchen, also lasst es uns einfach machen
und vielleicht ist es viel
klarer , ob wir es hier
zuerst schaffen, was wir versuchen
ist,
diesen letzten Ort
aus dem Spiel zu holen -Modus. Also genau wie das, was ich
vorher gesagt habe, hol dir den Spielmodus. Und dann kann man sagen,
bekommt Chemograph
, den wir früher erstellt haben. Und jetzt als Spielmodus kannst
du diesen
„letzten Bone-Standort“ verwenden. Jetzt haben wir diese
Variable hier drin. Lassen Sie uns tatsächlich mit der rechten Maustaste klicken und in eine neue
Variable in hier aufsteigen. Und ich nenne
es einfach
dasselbe , Spieler-Spawn-Standort. Aber dieses Mal, da
ich auf dem Server bin, lassen Sie es uns jetzt an
die Clients replizieren, denn lassen Sie uns das hier ausführen
und ich kann Ihnen sagen warum. So hat der Serverplayer den
Plasmonenstandort festgelegt. Und lasst uns das Startspiel machen. Und wenn ich anfange, das
Spiel und das Begin Play zu spielen, läuft
es immer dann, wenn du den Charakter
spawnst. Wenn ich also auf Play klicke, wurde
das Anfangsspiel für den
Charakter noch nicht gespielt. Aber was ist, wenn ich
auf den Spieler klicke? Jetzt
wird das beginnende Spiel spielen. Wann immer ich meinen
Charakter spawne, wird dies gestartet. Für das Startspiel möchte ich, wann immer ich
den Charakter hervorgebracht
habe, sofort den Standort
des Spielers festlegen. Legt also Layerposition, Spawn-Position,
eigentlich nicht den Standort fest. Also spawnen Spieler Standort. Und lassen Sie uns dieses auch zu
einem Blueprint-Interface machen. Stellen Sie also den Spieler-Spawn-Standort ein. Löschen wir diesen hier aus der Spielerbasis und lassen Sie uns zur Interface-Player-Basis
gehen. Lassen Sie uns eine neue Funktion namens „ Set Player Spawn Location“ erstellen. Gehen wir zurück zur
Spielerbasis und sagen „ Layer Bond-Standorte
festlegen“. Nennen wir dieses Ereignis. Und hier verbunden. Als ich anfing, das Spiel zu spielen, rufe
ich dieses
Event hier auf. Stellen Sie also den Spawn-Standort des Spielers ein
und
gehen Sie dann durch den Server und
durch den Server. Es wird
die Spielmodi bekommen. Die Spielmodi spawnen den
Standort hier. Und ich setze
die Variable hier. Aber denken Sie daran, Sie führen
das durch den Server. Der Client hat also keine
Chance zu wissen, was diese Variable ist, da diese nur auf dem Server läuft. Also nur der Server, den du hier oben
sehen kannst Ich bin jetzt der Server. Nur der Server weiß,
was gerade los ist, der Client kann
den Spawn-Standort nicht sehen. Und genau wie das, was ich
dir zuvor mit Multiplayer gesagt habe, musst
du diese
Variable wieder auf den Client replizieren. Wenn der Server mit der Logik
fertig ist, muss
die Logik
wieder auf den Client repliziert werden. Die Daten müssen also an die Kunden
zurückgehen. Und genau wie das, was wir
mit dem Stimmungszustand gemacht
haben, haben wir das auf Rampenfunktion gemacht. Wir können auf diese Variable klicken
und sie mit der Benachrichtigung
des Vertreters an die Kunden replizieren . Also werden wir
alle Kunden benachrichtigen. Und noch einmal habe ich es
Ihnen gesagt, bevor wir den Vertreter benachrichtigen, wenn
wir visuelle Änderungen haben, und es ist eine visuelle Veränderung, wir antworten auf den Charakter, wir bewegen den Charakter davon zeigen, wo
auf den Charakter antworten. An dieser Stelle hier drüben ist es
also eine visuelle Veränderung. Sie müssen also
diese visuelle Änderung einstellen , damit alle
Kunden sie sehen können. Ich werde eine Rippenbenachrichtigung machen, damit alle Kunden sie sehen können. Und was wir hier drin machen
wollen und die
Anleiheposition auf der Rampe. Und eigentlich nur für meine OCD sehe
ich, dass es hier
Leerzeichen gibt. Ich
lösche es einfach noch einmal. Ich möchte es ändern,
bevor ich irgendetwas mache. Ich werde
diese Leerzeichen
hier unten in meiner Variablen entfernen . So. Ich werde wieder
auf die Netzhaut drücken ,
einfach so. Nun, hier in der Unwrap-Funktion, lassen Sie uns jetzt
tatsächlich nehmen , dass wir uns bereits innerhalb
des Charakters befinden, also können wir einfach sagen, dass Sie den Standort des Schauspielers
festlegen. Das ist es, was wir tun wollen. Der Standort der Schauspielerin
und der Standort sind also, wir möchten es auf
diesen aktualisierten Ort einstellen, damit dieser Spieler den Standort spawnt. Gehen wir also hier rüber
zur Unwrap Funktion. Ziehen Sie diese Plasmonposition. Ich schließe es einfach an
den neuen Standort ein. Dies ist also der neue Ort, auf den
wir den Schauspieler einstellen möchten. Jetzt können alle Kunden
sehen, dass der Charakter die
Position an diesen neuen Standort wechselt. Klicken wir jetzt
auf Play und sehen, was passiert, wenn wir etwas
vermasselt haben. Klicken Sie also hier auf Play, und Sie können sehen, dass ich jetzt hier unten
spawne,
also funktioniert das. Und wenn ich zurück zu
Luke Lips gehe, um zu schauen, sind das die Kunden. Schauen wir uns zum Beispiel an. Du kannst jetzt sehen, dass das tatsächlich richtig
spawnt
und ich kann spielen als ob sie
zusammen spielen können, immer gut zu testen und zu sehen, ob es nicht
abgehört ist. Bevor wir fortfahren. Sie können sehen, dass dies funktioniert und richtig
reagiert. Also nur um
das sehr schnell durchzugehen, denn manchmal mache ich mir Sorgen, dass
dies verwirrend sein könnte. Fangen wir also hier in der Benutzeroberfläche an. Hier klicken wir zum Beispiel auf
Serena. Lassen Sie mich diese
näher zueinander ziehen. Also hier klicken wir auf
Serena, um Arena zu sponsern. Es geht zum Spieler-Controller und
wählt den Charakter aus. Also wird es
diese Veranstaltung hier durchführen. Und es wird auch
den Zeichenauswahlbildschirm entfernen . Also geht es zu diesem
Auswahlcharakter zum Spieler-Controller. Lasst uns also
zur Plake-Kontrolle gehen und
sehen, was passiert. Im Spieler-Controller,
der hier ist. Es wird dieses
Select Character Event ausgeführt ,
da der ausgewählte Charakter durch den Server
läuft, und dann ruft der Server dieses Ereignis hier
im Spielmodus auf, weil wir verhindern
wollten betrügen, wir wollen prüfen, ob
wir den Charakter spawnen dürfen. Sie ihn erneut durchlaufen
, fordern Sie Bond-Spieler an. Es durchläuft
den Spielmodus. Und dann wirft es uns zurück in den Spieler-Controller. Und im Spieler-Controller werden
wir den Spieler
spawnen. Und wir werden auch
den Spieler kontrollieren. Wann immer Sie den Spieler spawnen, führt
er diesen Startplatz aus. Wann immer der
Spieler gerade spawnt, wird der
Spielerspawn-Standort festgelegt. Es führt dieses Ereignis hier aus, und dieses Ereignis läuft
durch den Server. Auch hier verhindern wir, dass das Betrügen
abgelehnt wurde. Der Server. Muss prüfen, ob das, was
Sie tun, richtig ist. Sie können also sehen, dass die
Methode hier alles ist, was wir immer versuchen,
Variablen über den Server zu setzen. Also springe ich einfach
direkt auf den Server. Und dann endloser Server, ich mache all
diese Codierlogik. Server. Es wird
den Ort festlegen. Eigentlich wird es vom Spielmodus
aus,
den wir hier erfunden haben
, zum Standort des Spielers gelangen Spielmodus
aus,
den wir hier erfunden haben
, zum Standort des Spielers . Also haben wir dieses Schauspielklassenspiel gestartet und wir haben
den Zugangspunkt bekommen und wir haben es in eine Variable verwandelt. Jetzt wissen wir, dass der
spezifische Ort für diesen Spieler hier beginnt. Und jetzt haben wir
das, diesen Ort für diese Spawn-Punkte. Und dann haben wir es
in eine neue Variable
innerhalb der Spielerbasis geschafft innerhalb der Spielerbasis und den
Spawn-Standort des Spielers genannt. Jetzt repliziert es
in eine rip-Benachrichtigung, die Sie dann zur
Entpack-Funktion bringt , da
jedes Mal, wenn Sie
den Wert oder eine
Rep-Notif-Funktion ändern , eine Wrack-Notifing-Variable
ist. Es wird die Funktion „
Rep Notify“ ausführen. Jetzt können Sie sehen, dass wir diese Variable
setzen. Dann
führen
wir diese Unwrap Funktion automatisch aus. Und das einzige, was die Funktion
ausgepackt hat, ist Standort unserer Akteure festzulegen. Auch hier verwenden wir eine
Wiederholungsbenachrichtigung , weil
wir dies im Mehrspielermodus machen. Wann immer Sie
visuelle Änderungen haben und den Standort
eines Spielers von
diesem Punkt bis zu diesem Zeitpunkt
ändern ,
ist eine visuelle Veränderung. Alle Kunden können
den visuellen Wandel dadurch erkennen , genau wie wir es
mit dem Bewegungszustand gemacht haben. Also sagten wir die Flip Books. Dies sind ebenso
visuelle Veränderungen. Wechseln Sie also Flipbooks, damit der Spieler das
geänderte Flipbook sehen kann. Das ist auch eine visuelle Veränderung. Ich hoffe also, dass das klar war. Auch wenn etwas verwirrend
ist und Sie etwas mehr
klären müssen, können Sie gerne
meinem Discord-Server beitreten, und ich helfe Ihnen
gerne weiter. Also lasst uns von hier aus weitermachen. Lasst uns alles retten. Lass mich das schließen und lass uns zur
nächsten Lektion übergehen.
41. Den Camera erstellen: Wie Sie
hier gerade sehen können, bin
ich in Maple Story und der Kamera und
Maple Story dort. Es ist nicht wie bei
uns, dass Sie sehen können,
wenn ich mich bewege, die Kamera
folgt reibungslos. Es ist nicht wirklich
an den Charakter gebunden. Wenn ich mich also hier bewege, kannst
du sehen, dass es mir folgt, aber es ist nicht wirklich
an mich gebunden. Es bewegt sich also wie diese
sanfte Bewegung. Das ist es, was wir also erreichen
wollen. Also zurück hier bei unserem Spiel, anstatt die Kamera
hier und
die Spielerbasis anzubringen. Also haben wir diese
Kamera derzeit an den Player angeschlossen. Wir müssen separate
Kameras herstellen, damit wir dem Player reibungslos
folgen können . Jetzt können Sie die Kamera natürlich so
behalten, wenn
dies der
Ort ist, an dem Sie möchten, aber ich versuche Maple Story so
viel wie möglich zu
replizieren , damit wir auch davon
üben können. Beginnen wir also damit,
den Kamerakteur zu erstellen. Anstatt
die Kamera anzuschließen, machen
wir es stattdessen zu einer
Blaupause. Rechtsklicken Sie also, erstellen Sie
eine Blueprint-Klasse Und lass uns einfach einen Schauspieler machen. Und nennen wir es BP-Kamera. Okay, also klick hier
an, VB-Kamera. Lasst uns wieder hier rauf gehen
und die Kameras hinzufügen. zuerst, genau wie zuvor, Lassen Sie uns zuerst, genau wie zuvor, eine Feder hinzufügen. Das ist also der Halter
der Kamera. Und dann werden wir
die Kamera hinzufügen. Also genau wie zuvor,
nichts Neues. Klicken Sie auf den
Federarm. Ich werde es um minus 90 Grad
drehen, genau wie zuvor,
kompilieren und speichern. Und ich werde diesen entfernen namens Remote do
Kollisionstest. Ich klicke auf die
Kamera und ändere sie eine orthogonale Ansicht und
stelle die Breite auf 1304 ein. Und das ist nicht
wirklich etwas Neues. Das hatten wir auch hier in unserer Kamera
gemacht. sind also genau
die gleichen Einstellungen mit denen
ich versuche zu gehen. Okay, jetzt haben wir die
Kamera und ich gehe zu meiner Spielerbasis und ich werde
diese Kamera jetzt löschen. Jetzt, da wir eine Kamera
erstellt haben, können
wir sie in
der nächsten Lektion spawnen.
42. Die Kamera aufzeichnen: Das, was wir
versuchen, ist, dass wir jetzt
versuchen,
das Kamera-Ecto zu spawnen. Und das Ziel ist es, jedes Mal
in
der Kamera zu spawnen , wenn sich neue Spieler verbinden. Lasst uns also die
Laichlogik innerhalb der Spieler machen. Wenn sich der Spieler also
in das Level bindet, wird
es eine Kamera
spawnen, so dass sie diesem Spieler folgen
kann, genau
wie wir es zuvor hatten. Also wieder hier,
am Anfang, also wird unser
Spieler spawnen. Hier werden wir
sagen Spawn-Schauspieler. Es ist also sehr gut, sich an
all diese Tools zu erinnern. Spawn-Schauspieler wird immer dann benutzt, wenn
man etwas spawnt. Genau wie drüben
im Spieler-Controller, wo
wir den Spieler hervorgebracht haben. Sie können diesen Bone-Schauspieler
erneut verwenden, um die Kamera zu spawnen. Sagen wir also
Spawn-Schauspieler der Klasse. Und vorher habe ich
dir gesagt, dass wir den Spielmodus
durchlaufen müssen , um etwas zu spawnen, damit
wir Betrug verhindern. Dies ist
momentan in Ordnung, damit diese Kamera dies auch direkt
vom Client aus erledigt. Weil diese Kamera nur spielerbasiert
ist. Es ist nicht etwas Globales, wie das Hinzufügen von Spielern
zum Level. Wir fügen nur eine Kamera hinzu, damit der Spieler
verfolgt werden kann. Ich habe hier einen Schauspieler hervorgebracht. Und wir müssen
die Kamera wählen und wir nannten sie BB, BP Kamera. Also suche nur nach einer Kamera. Und diese eine BP-Kamera hier. Wir müssen jetzt die
Spline-Transformation auswählen. Und ich fahre
von hier aus und klicke einfach
so auf „ Transformieren“. Und jetzt müssen wir definieren, an welchem Ort wir diese Kamera spawnen möchten
. Und ich möchte es nur
am Standort des Spielers spawnen. Wir sind also schon
im Spieler. Wir können also einfach sagen,
Schauspielerstandort holen. Und das Ziel ist
Selbst, denn dies ist der Charakter, den wir
derzeit kontrollieren. Also bekommen wir diesen hervorgebrachten
Charakter und
gehen einfach an diesen Ort
dieses Bond-Charakters. Ich verschiebe das
ein bisschen hierher. Die Rotation ist diese
und die Skala ist das. Das spielt momentan keine
Rolle. Und was das Laichen angeht, möchte
ich hier klicken, und klicken wir auf
diesen Punkt, um den Standort
anzupassen,
aber immer spawnen. Dies stellt nur sicher, dass wir,
obwohl wir mit einigen,
irgendwann
kollidieren , sowieso nur
die Kamera spawnen. Und eigentlich denke ich, dass
wir das auch
in der Plake-Kontrolle tun müssen. Wenn Sie es
für den Spieler immer noch standardmäßig haben, denken Sie daran, es
so einzustellen, dass es
versucht wird , den Standort anzupassen,
aber immer zu spawnen. Das wird uns daran hindern, dass der Spieler irgendwann nicht spawnen kann
, aber wir versuchen,
den Standort anzupassen , aber trotzdem den Spieler zu
spawnen. Diese Kollision wird standardmäßig
ein Problem sein, wie dieses, wenn
wir Feinde haben, da es Feinde geben wird
und Sie kollidieren werden. Also immer Bindung, obwohl wir eine Kollision haben,
versucht hat, den Standort anzupassen. Okay, lass uns hier zurück
zur Kamera gehen. Jetzt haben wir die Kamera
hervorgebracht. Jetzt können Sie hier sehen, obwohl wir die Kamera
hervorgebracht haben und ich auf Play klicke. Und denken Sie auch daran,
die Kamera hier zu entfernen die Kamera hier zu wenn Sie dies
in der vorherigen Lektion nicht getan haben. Entfernen Sie also die Kamera und spawnen Sie eine neue Kamera. Versuchen wir auf Jetzt spielen zu klicken. Und jetzt können Sie hier sehen, dass wir, obwohl wir die Kamera
spawnt haben, immer noch
hier in die Sicht eingelassen sind. Und das liegt daran, dass Sie,
obwohl Sie eine Kamera
spawnen, der
Engine mitteilen müssen, dass Sie
diese neue Kamera
als neue Ansicht haben wollen . Wenn Sie also davon herausziehen
und Ansichtsziel festlegen sagen, können
Sie sehen, dass Sie
nichts sehen können, obwohl
Sie danach suchen. Wenn Sie jedoch den
kontextsensitiven Wert entfernen, können
Sie sehen, dass dies
der ist, den wir verwenden möchten. Setze dein Ziel mit Blend. Und warum passiert das? Warum
erscheint es nicht hier drüben? Sie können sehen, ob Sie die
Maus darüber halten. Es besagt, dass das Ziel ein Spieler-Controller
ist. Kontextsensitiv
bedeutet nur für den Kontext hier, für diesen Stift, von dem Sie
ziehen. Dies ist nicht wirklich ein
Spieler-Controller. Das ist die Kamera. Wenn Sie also nach
etwas suchen , das die
Versorgungskontrolle benötigt, werde
ich es Ihnen nicht zeigen es sei denn, Sie entfernen diesen
kontextsensitiven Wert. Aber wenn Sie
den Spieler-Controller bekommen, versuchen
wir es in die andere Richtung. Sagen wir, es ist Controller. So bekommst du
den Spieler-Controller. Im Multiplayer
bist du innerhalb
des Players und
sagst einfach „Controller holen“. Und es heißt, gibt den
Controller für
diesen Schauspieler zurück , weil wir
unseren Spieler-Controller hier haben wollen. Wir haben den Controller
und verwenden wir den Get Black
Controller REF, den wir zuvor mit unserer
Schnittstelle
erstellt haben . Sagen wir also
Player-Controller ref. Jetzt sprechen wir speziell
über diesen Controller. Lasst uns das jetzt miteinander verbinden. Und von hier aus können
wir als
Spieler-Controller sagen, das Ansichtsziel festlegen. Sie können sehen, ich kann es mit
der kontextsensitiven Bearbeitung sehen und das bedeutet es. Jetzt weiß es, wovon
Sie sprechen , denn das Ziel ist
der Spieler-Controller. Also etwas, dessen
du dir bewusst sein musst. Klicken wir nun
auf dieses hier heißt „Ziel mit Mischung anzeigen“. Jetzt braucht es ein neues Ansichtsziel. Und die neue Ansicht Chocolate
ist nur diese Kamera. Nur um alles so zu machen, wie
man das nehmen und sich hier
verbinden kann, ist
das kein Problem.
Das wird funktionieren. Aber manchmal organisiere ich gerne Dinge und möchte sie zu Variablen
machen. Also werde ich
mit der rechten Maustaste hier klicken und auf Variable
werben und es schwarze Kamera
nennen. Und tatsächlich habe ich
es schon von zuvor erstellt , ich
habe etwas getestet. Also lass mich das alte einfach
löschen, kompilieren und lass es
mich nochmal machen. Layer-Kamera. Okay, also lass es mich jetzt verbinden. Und jetzt als diese Variable können
Sie einfach wissen
, dass Sie die Variable haben. Sie können diese
Variable einfach
anklicken und ziehen und so
verbinden. Also kannst du es entweder so
machen oder du kannst es so machen, dass beide funktionieren. Das ist der richtige Weg. Ich mag es einfach manchmal einfach
separat so
zu machen , um alles sauberer zu
machen. Auch hier ist es in Ordnung,
diese Variable festzulegen , obwohl
wir vom Client aus laufen, also laufen wir nicht auf dem Server,
was ich Ihnen zuvor gesagt habe. Wir müssen
Variablen auf dem Server setzen. Ich setze diese
spezifische Variable auf dem Client ein, da dies clientseitig
ist Die Kamera,
die um den Charakter herum folgt,
wird nur von diesem Charakter gesehen. Alle anderen Charaktere, alle anderen Kunden, kümmern
sich nicht wirklich um den Spielercharakter oder
die Spielerkamera. Eher. Die Player-Kamera ist
etwas speziell dich und alle anderen Spieler kümmern sich
nicht wirklich darum. Genau wie die Benutzeroberfläche,
die Benutzeroberfläche, Ihre Benutzeroberfläche, kümmern sich andere
Spieler nicht darum. Sie haben ihre eigenen Schnittstellen. Okay, also haben wir diese Kamera. Wir haben jetzt das
Ansichtsziel mit Mischung festgelegt. Und ich werde
das ein bisschen besser organisieren, bevor
es zu unordentlich wird. Also so etwas
hier und ich werde das so näher bringen. Okay, also
klicken wir jetzt auf Kompilieren, Speichern und klicken Sie auf Play
und wählen Sie einen Charakter aus. Sie können sehen, obwohl
wir den Code haben, ich weiß, dass wir den
Code richtig haben, aber Sie können sehen, dass er
immer noch durcheinander ist. Und warum ist das so? Dies liegt daran, dass es
manchmal dauert, man sieht hier
Fehler oder manchmal dauert es eine Sekunde,
bis ein Charakter im Multiplayer spawnt, es gibt eine kleine, kleine Verzögerung. Und dieser Code, dieser
ganze Code hier, läuft so schnell, er ist verrückt. Man muss also Zeit geben, manchmal damit der
Charakter spawnt. Hier stellen wir also den Standort der Spieler fest,
wann immer die Anleihen des Spielers, ich werde einen Verzögerungsknoten setzen. Versuchen wir also,
hierher zu ziehen und Verzögerung zu sagen. Und manchmal
ist das Versuch und Irrtum. Ich weiß, dass dieser Code korrekt ist, also bin ich manchmal verwirrt. Warum funktioniert das nicht? Und ich könnte denken, dass es
eine kleine Verzögerung gibt , wenn die Spieler laichen, bis zum tatsächlichen
Hinzufügen der Kamera. Es kann also nicht, es kann den Spieler nicht
finden. Das heißt, es versucht es hier
zu spawnen, aber es kann den
Player-Controller nicht finden weil Sie ihm hier etwas Zeit
geben müssen. Lassen Sie uns also um 0,05 verzögern. Also sehr, sehr kleine Verzögerung. Wenn du einen schreibst,
bedeutet das, dass es 1 Sekunde ist. Also 0,05 Sekunden. Also sehr, sehr leichte Verzögerung hier. Klicken wir auf Kompilieren und Speichern
und lassen Sie uns versuchen, auf Jetzt spielen zu
klicken, klicken Sie auf den Charakter und Sie können sehen, wie der
Charakter laichen wird. Die Verzögerung hat hier also sehr geholfen. Versuchen wir, den Kunden zu spawnen. Und der Kunde laichen
auch und nur um sicherzustellen, dass er
sich sieht. Wenn ich das kleiner mache. Ja, also funktioniert alles
und versucht nur zu spawnen. Jetzt bekommen wir einen Fehler. Ich versuche zu sehen, was das ist. Versuchen wir
auf Jetzt spielen zu klicken und als Server zu
gehen
und hier zu schauen. Look kann auch spawnen. Okay, also bekommen wir hier einen
Fehler und ich möchte versuchen zu sehen, warum
wir diesen Fehler bekommen. Okay, manchmal läuft
der Code hier zu schnell, also haben wir ihn stattdessen
hier gespielt, damit wir keine Fehler
haben. Also
funktioniert jetzt alles einwandfrei. Und manchmal läuft der Code hier
schnell und es wird nicht finden können, dass die Blasenkontrolle
andere Variable leer ist. Also hier, was wir tun
wollen, um
sicherzustellen , dass dies nicht
passieren wird. Ziehen wir nun von
hier aus dem Spieler-Controller und sagen, dass es gültig ist. Und Sie können
dieses Fragezeichen auswählen. Wenn der
Player-Controller gültig ist, können
wir diese Kamera
einstellen. Und wenn es nicht gültig ist,
tu nichts. Also können wir versuchen, das hier zu tun, und das wird den Fehler beheben. Also
doppelklicke ich auf diesen Pin. Es ist also nicht zu verwirrend. Nur um Dinge
hier unten zu organisieren, so etwas. Und lasst uns stattdessen versuchen,
mit diesem Code zu laufen. Kompilieren wir also speichern. Wenn dieser
Player-Controller gültig ist, erstellen
wir die Kamera. Wenn nicht, tun wir
nichts, was verhindert, dass es diese Fehler ausgibt,
wenn die Variablen leer sind. Klicken wir auf kompilieren. Und jetzt klicken wir auf Diesen Charakter
erstellen. Lasst uns Luke erschaffen. Sehen Sie, dass alles reibungslos
läuft. Ich klicke auf
Control oder Escape. Sie können sehen, dass wir keine Fehler bekommen. Jetzt auch sehr schön zu prüfen,
ob etwas gültig ist. Sie können das auch manchmal mit
Variablen tun , wenn Sie es müssen. Wenn ich diese
Kamera also nur für die Wissenschaft ziehe, können
wir mit der rechten Maustaste darauf klicken und wir können auf Konvertieren
klicken,
um zu validieren, abrufen. Das funktioniert auch. Also hätten wir
diese Plake-Kontrolllinien tatsächlich zu einer Variablen machen können und wir können sie so
überprüfen. Wenn der Spieler-Controller
gültig ist, können Sie etwas tun. Wenn es nicht gültig ist
, tut das nichts.
43. Die Kameraposition aktualisieren: Jetzt ist es an der Zeit,
die Kameraposition zu aktualisieren. Sie können hier sehen, wenn
wir auf Jetzt spielen klicken, wir können mit dem Charakter gehen,
wir können uns bewegen, aber die Kamera ist statisch und sie
folgt nicht unserem Charakter,
und das ist es , was wir wollen. Gehen wir also zurück
zur Spielerbasis und lassen Sie uns diese
Logik hier machen. Also habe ich zwei neue
Tools, die ich dir beibringen kann. Es geht um Timer und
es geht um eine Zeitleiste. Also zwei sehr wichtige
Dinge in Blueprint. Also lasst uns das hier
am Anfang machen. Also wann immer wir anfangen,
das Spiel zu spielen und wir haben die Kamera
hervorgebracht, und wir befestigen unser Selbst, unsere Sicht an diese Kamera. Lassen Sie uns auch die Ansicht
der Kamera aktualisieren , damit sie dem
Player ständig folgt. Bevor ich jetzt einen Timer mache, möchte
ich tatsächlich ein Event ankreuzen. Ich wollte dir
das zeigen und bevor ich
dir gesagt habe, dass du
dieses Tick-Event niemals benutzen sollst, denn das läuft 60 Mal pro denn das läuft 60 Mal pro
Sekunde und dein Spiel
wird nicht optimiert. Sie können es viel besser machen,
als dies zu benutzen. Ich werde das
jetzt benutzen und wir schalten
es mit einem Timer um. Und das habe ich dir vorher
gesagt. Sie können andere Dinge tun, als manchmal ein Häkchen zu
verwenden. Und was ich damit meine, ist,
dass Sie Timer verwenden können um zu vermeiden, Texte zu verwenden
, die Ihren Code 60
Mal pro Sekunde ausführen. Wir können also Timer verwenden
, um dies zu vermeiden. Aber lass uns jetzt ein Häkchen benutzen. Und ich kann dir zeigen,
wie wir es
später ändern , damit du daraus lernen
kannst. Das, was wir im Wesentlichen
versuchen, ist, dass wir versuchen, eine
Displaykamera zu bekommen, die wir haben. Das ist die Kamera
, die wir hier hervorgebracht haben. Wir versuchen,
diese Kamera zu bekommen und einfach den Standort
festzulegen. Das ist es, was wir
im Wesentlichen versuchen. Wir versuchen,
den Standort des Spielers auf den Standort des
Spielers festzulegen . Wenn wir es also sehr,
sehr einfach machen, können wir einfach
sagen, dass wir den tatsächlichen Standort abrufen. Und der eigentliche Standort ist Selbst, welches dieser Spieler ist. Der neue Standort
dieser Kamera ist also der Standort des
Spielers. Also wird es
dem Spieler die ganze Zeit folgen. Und da dies
60 Mal pro Sekunde läuft, wird
es dem Spieler ständig folgen. Jetzt klicken wir auf Play hier. Und du siehst,
wenn ich herumlaufe, jetzt folgen wir dem
Spieler genau wie zuvor. Das ist also im Wesentlichen
das, was wir versuchen zu tun. Und natürlich wird
Ihnen dies einen Fehler geben, da
Sie dieses Ereignis im Wesentlichen
ausführen bevor Sie
diese Kamera ausgeführt haben, reagieren Sie hier auf
diese Kamera. Und das können Sie wieder vermeiden, genau wie ich
im vorherigen Video gesagt habe, können
Sie dies
in eine Validierung konvertieren, die es bekommt. Wenn es gültig ist, können
Sie die Kamera aktualisieren. Okay? Das läuft also, nimm nicht einmal, das läuft 60 Mal pro Sekunde und es
folgt unserem Charakter. Aber wir wollen diese
reibungslose Bewegung. Wir wollen nicht, dass es
dem Charakter genau wie zuvor folgt . Weil wir das
schon vorher gemacht haben. Wir wollen dem
Charakter reibungslos folgen. Und um
etwas reibungslos zu verfolgen, können
Sie eine Zeitleiste verwenden. Aufgrund der Zeitleiste
müssen Sie
darüber nachdenken , wann immer Sie reibungslos von
1 von Punkt A nach Punkt
B wechseln
möchten . Wenn Sie zum Beispiel eine Doppeltür
öffnen, öffnen
Sie die
Doppeltüren reibungslos
oder sogar nur eine einzige Tür, oder sogar nur eine einzige Tür wenn Sie
die einzelne Tür öffnen. Bewegen Sie die Tür von
Punkt A nach Punkt B, das sind sanfte Bewegungen, die
Sie mit Zeitleisten machen können. Wenn Sie zum Beispiel Maple Story
gespielt haben, wenn Sie Gegenstände fallen lassen oder wenn Sie etwas
töten und
Gegenstände fallen lassen, sie es hier fallen, als ob der Gegenstand in die Luft fliegt
und auf den Boden fällt. Diese sanfte Bewegung ist
auch eine Zeitleiste. Bei jeder sanften Bewegung
von Punkt A nach Punkt B können
Sie eine Zeitleiste verwenden. Suchen wir also nach einer Zeitleiste
und lasst uns etwas darüber lernen. Klicken wir also hier auf die Timeline und geben wir ihm einen Namen
und ich nenne es Layout, Kameraposition. Und doppelklicken Sie
auf diese Zeitleiste. Und innerhalb dieser Zeitleiste können
wir einen neuen Track hinzufügen. Und das, was wir
hinzufügen möchten, ist einfach ein Float. Und ich kann dir zeigen, warum
wir einen Float hinzufügen. Float wieder, genau wie
die Variable hier unten
, ist Float nur ein numerischer
Wert mit Dezimalstellen. Das ist einfach das, was es ist. Also zum Beispiel 25.2
und das ist ein Float. Also lass mich
das hier unten löschen. Also lasst uns einen Float hinzufügen. Und lass es uns versuchen. Nennen wir es Bewegung Alpha. Okay, also lassen
Sie mich an zwei Punkten mit
der rechten Maustaste in die Grafik klicken. Und ich möchte das
zuerst und zum Zeitpunkt 0 auswählen, also wollte
ich, dass es bei 0 Sekunden 0 ist, also 00. Und die Länge dieser
Zeitleiste hier oben möchte
ich, dass du nur eine Sekunde hast. Für die zweite,
zum Zeitpunkt 1 Sekunde, möchte
ich, dass der Wert eins ist. Und Sie können auf
diese beiden Pfeile klicken,
damit sie hier auf den Bildschirm passen. Nach einer Sekunde möchte
ich nur, dass es
der Wert von einer ist. Okay, also kann ich
dir zeigen, warum wir
das machen und wofür wir das benutzen
können. Ich möchte auch, dass du
darauf klickst, benutze den letzten Keyframe wie diesen. Also lass uns jetzt zurückgehen. Jetzt haben
wir diese Zeitleiste und Sie können das Bewegungshalpha sehen, die Last, die wir erstellt haben wird jetzt
hier angezeigt und wir können sie verwenden. Und das, was wir verwenden möchten,
ist etwas, das als Schleife bezeichnet wird. Also ist die Schleife hier. Lineare Interpolation. Und es geht von
Punkt A nach Punkt B. Und es braucht ein Alpha. Und Sie können sehen, dass wir
dieses Alpha erstellt haben und was
es bedeutet, es geht reibungslos von
Punkt A nach Punkt B. Also wird es diese Zeitleiste
spielen. Welchen Wert Sie
hier von Punkt A nach Punkt B anschließen, er wird
von diesem Punkt bis zu
diesem Punkt reibungslos laufen,
weil es bis zum Punkt B gehen wird. Wir können uns
also vorstellen, dass dies der Punkt ist a, das ist Punkt B. Und nach 1 Sekunde geht
es zu Punkt B. So sanfte Bewegung,
das ist das Alpha hier, das
ist es, was es tut. Wir müssen also angeben, was Punkt a ist und
was Punkt B ist.
Punkt A ist überall dort, wo sich die
Kamera gerade befindet. Also lasst uns die Kamera hierher holen. Und lass mich
das einfach ein bisschen runterziehen und sagen, dass es Schauspielerstandort bekommt. Punkt a ist also, wo sich
die Kamera gerade befindet. Eigentlich brauchen wir eine Schleife für den Vektor, weil Sie sehen
können, dass dies ein Vektor ist, ist ein Float, also
ist das nicht vollständig korrekt. Lassen Sie uns also eine Schleife schreiben, und wählen wir diesen
Vektor aus, um diese zu löschen. Also hier, hol dir den tatsächlichen
Standort der Kamera. Punkt A ist also, wo sich
die Kamera gerade befindet, Punkt B ist überall dort, wo sich der
Charakter gerade befindet. Wir versuchen, die
Kamera von dort zu bewegen, wo sie
gerade ist , dorthin, wo sich der
Charakter gerade befindet
, der eine gute Schauspielerposition hat. Und das wird
reibungslos geschehen, weil wir dieses Alpha reibungslos von Punkt A nach Punkt B laufen lassen. Okay, also lass mich das
alles löschen, lass es mich einfach löschen. Lassen Sie mich das alles löschen , wird es einfach von neu
schaffen. Jetzt möchte ich das hier
von Anfang an spielen. Also nicht, spiele nicht hier. Ich möchte von dieser
Stadt aus hier unten anfangen. Und jetzt verbinden wir es
hier im Update, wir möchten einfach wieder, genau wie zuvor, den Standort der Kamera
einstellen. Stellen Sie also den Standort des Schauspielers fest Der neue Standort ist dieser. Und wir werden das wie hier
aktualisieren. Es wird also reibungslos
von Punkt A nach Punkt B gehen, weil wir diese Zeitleiste hinzugefügt
haben. Und durch dieses Update wird
dieser Ort ständig
von Punkt A nach Punkt B aktualisiert dieser Ort ständig
von Punkt A nach Punkt B Dies wird
also 60 Mal
pro Sekunde aktualisiert , da
wir ein Ereignis-Tick verwenden. Klicken wir also auf Jetzt spielen
und klicken Sie hier auf Tsarina. Du kannst sehen, wenn ich mich jetzt bewege, es bewegt sich reibungslos
wie in Maple Story. Sehr cooler Effekt. Okay, jetzt funktioniert das
so, wie es soll. Großartig. Das war also einfach. Und Sie können sehen, dass wir
natürlich
Fehler bekommen , weil
dies an
Take arbeitet und wir dies erneut
verhindern können, wodurch dies ein gültiger Knoten ist. Aber lass uns das nicht machen. Ich möchte Ihnen tatsächlich
zeigen, wie wir das Ereignis nicht krank verwenden
können da dies jetzt 60 Mal
pro Sekunde
läuft und Sie Ihren Code
optimieren können. Ich mag es nicht, wenn ich das in meinem Projekt
sehe. Also lasst uns das
ein bisschen nach unten bewegen. Um die Verwendung von Häkchen zu verhindern, können
Sie
sogenannte Timer verwenden, damit es
steuern kann , wie viel es pro Sekunde laufen
wird. Angenommen, stellen Sie einen Timer nach Ereignissen ein. Okay, also was
bedeutet das jetzt musst du angeben, wie oft du jede Sekunde laufen
wirst. Wenn Sie beispielsweise einen schreiben, wird
es nur
einmal pro Sekunde ausgeführt. Wenn ich 0.5 schreibe, wird
es zweimal pro Sekunde ausgeführt da
dieses Ereignis in 0,5 Sekunden abgeschlossen wird. Wenn R 0,2 ist, wird fünfmal pro Sekunde ausgeführt
. Im Wesentlichen, wie Sie dies
berechnen, schreiben Sie einfach eins geteilt durch 0 auf die
Zahl, die Sie hier geschrieben haben. Und Sie können sehen, dass das fünf gibt, das
bedeutet, dass dieser Code
fünfmal pro Sekunde läuft. Wenn Sie 0,08 schreiben, läuft
es 12,5
Mal pro Sekunde. Und was die Veranstaltungen angeht, laufen
die Event-Tickets um 0,1516. Das ist also das Event-Tick. Es läuft bei
0,0017, so. So können Sie beispielsweise
Ihren Code optimieren , indem Sie
ihn so ausführen. Es ist also nur
zehnmal pro Sekunde statt 60 Mal pro Sekunde. So können Sie sehen, dass Sie
die Dinge mit Timern optimieren können. Sie können nicht, Sie können wählen nicht 60
Mal pro Sekunde zu laufen. Also lasst uns das hier verbinden. Jetzt brauchst du ein
Ereignis, um es auszuführen. Was Sie also sagen können, können
Sie von diesem Ereignis ziehen und Sie müssen ein benutzerdefiniertes Ereignis erstellen. Und lasst uns dieses Ereignis machen, nennen
wir es
Aktualisierungsebene Kameraposition. Jetzt können wir unseren Code verbinden. Lassen Sie mich dieses Event-Tick löschen. Und lass mich
diesen Code
von Anfang an hier verbinden . Jetzt klicke ich auf Kompilieren, Speichern und klicke auf Play. Und jetzt lass mich tatsächlich auf dieses Looping
klicken, denn wenn du nicht auf Looping
klickst, wird
dies nur einmal gespielt. Also lass mich auf Looping klicken. Und wenn ich auf Jetzt
spielen klicke, meine Kamera, ist
es zurückgeblieben, weil sie mir nur fünfmal pro Sekunde
folgt. Es wird also nur fünfmal pro
Sekunde aktualisiert , weil wir hier 0,2
geschrieben haben. Jetzt ist die Zahl, die ich mir
ausgedacht habe, 0,03. Das war so, machte es glatt und etwas darüber, was es
tatsächlich langsamer macht. Wenn ich das hier aufnehmen müsste. Und Sie können sehen, dass das jetzt 33 Mal pro Sekunde
läuft. Also viel besser als 60 Mal pro Sekunde zu laufen
. Also jede Sekunde betreibst du es 30 Mal weniger als ein Häkchen. Versuchen Sie also,
dies auszugleichen und versuchen
Sie, ein Gleichgewicht zwischen dem Aussehen
Ihres Spiels und
Ihrer Optimierung zu finden . Manchmal
möchten Sie stattdessen vielleicht 0,04 machen. Und das macht einen großen
Unterschied, denn wenn ich hier 0,04 schreibe, also wenn ich es hier aufnehme, 0104, kann
man sehen, dass es von
33 Mal pro Sekunde geht und den Code
ausführt, der
nur 25 Mal pro Sekunde ist. So macht es einen großen
Unterschied, von
0320403 zu gehen , war das beste
Ergebnis auch optisch. Es mag also nicht zu viel. Wenn ich also kompiliere
und speichere und hier einfach herumspiele, kannst
du sehen, dass es gut
läuft wie das Event-Tick. Aber jetzt laufen wir es nur 33 Mal pro Sekunde und nicht
60 Mal pro Sekunde. Also viel besser als zuvor.
44. Die Kamerabewegung stoppen: Okay, jetzt lasst uns sehen, wie wir die Kamerabewegung stoppen. Wenn wir also das Spiel spielen
und hier zur Seite gehen, möchte
ich die
Kamerabewegungen stoppen, damit wir hier nicht über diesen Rand gehen. Also möchte ich die
Kamera irgendwo hier anhalten. Also gehen wir nie an den Rand. Wenn der Spieler läuft. Von nun an bis zu diesem Punkt wird
die Kamera einfach
gestoppt und der Spieler
wird einfach herumlaufen. So
ist es in Maple Story. Mal sehen, wie wir die Kamera
stoppen. Und im Wesentlichen habe ich
verschiedene Methoden ausprobiert und versuche
immer,
die beste zu finden , weil
ich nicht zufrieden bin, obwohl zwei von ihnen
Methoden funktionieren. Ich habe versucht, das Beste zu finden,
wenn ich mein Spiel mache. Und was wäre die
beste Lösung dafür? Das Beste
dafür ist, dass wir etwas
hinzufügen können , das
als Kollisionsbox bezeichnet wird. Erstens, der Spieler oder
die Kamera interessiert diese Kollisionsbox und das
Ereignis sollte stattfinden. Um eine
Kollisionsbox hinzuzufügen, haben wir diese
Kachelzuordnung tatsächlich in einen Akteur
geändert. Also lasst uns das zunächst
hier machen. Gehen wir also zum
Blueprints-Ordner. Wir können es einfach
hier draußen machen, wenn Sie möchten, oder wir erstellen einen Ordner. Und wir können immer
einfach einen Ordner erstellen. Vielleicht
haben Sie irgendwann mehr Karten, es kann besser organisiert bleiben. Also Kachel Maps. Klicken wir mit der rechten Maustaste hier und lassen Sie uns eine neue
Blueprint-Klasse erstellen. Und wenn du hier unten nach Talmud
suchst. Auch hier können Sie diesen
namens Paper Tile Map Actor bekommen. Wählen wir es jetzt aus und
nennen es TM für Kachelzuordnung. Und lass
es mich einfach Dragon Road nennen. Das war die Karte,
wie sie hieß. Jetzt ist unsere Kachelmap ein Blueprint-Akteur, anstatt nur eine Kachelkarte hier draußen zu sein. Doppelklicken Sie also darauf und wachen Sie
unter Render-Komponente auf. Und
wählen wir einfach unsere Kachelkarte aus. Und es ist diese, die Kachelkarte
genannt wird, schrieb
ein Drache hier. Also lasst uns kompilieren und speichern. Für diese Kachelkarte müssen
wir nun zwei
Kollisionsfelder hinzufügen. Das ist also im Wesentlichen
das, was wir versuchen zu tun. Fügen wir also eine neue Komponente hinzu. Lasst uns nach Kollision suchen. Wir haben diese als Kollisionsbox bezeichnet
. Und diese Kollision,
Kollisionsbox, können
Sie hier sehen,
dass wir verschiedene Ereignisse haben. Was sollte also passieren, wenn Sie anfangen,
diese Kollisionsbox zu überlappen? Und wir werden die Kamera
anhalten. Lassen Sie uns also den Bereich abdecken, in dem
wir ihn wann pausieren möchten. Also lasst uns hier rauf gehen. Und wir haben Geld
Ausmaß, Ausmaß hier. Und der Wert ist, dass
ich eine 650 im X. Also wird es sich hier
ausdehnen. Und 500 und DY. Und ich werde
1 Tausend und das z setzen. Und das sind nur einige
Zahlen, die ich ausprobiere. Du kannst sie einfach größer machen. Im Wesentlichen. Lassen Sie
mich tatsächlich einfach diese 50
machen, vielleicht in
der Bewegung, Schnappen und versuchen Sie
einfach, es zu sehen. Mal sehen, ob ich meine Kamera
etwas schneller beschleunigen werde. Also werde ich
es einfach ansehen und
es gleich machen , genau so. Also kommt es hier runter
und es geht hier hoch. Und das spielt keine
Rolle, denn das einzige, woran
wir interessiert sind ist dieser Bereich, weil der
Spieler es hier noch nie getan hat, aber ich bin einfach so
strukturiert. Im Wesentlichen versuchen wir
nur,
diese Fehler groß genug zu machen . Und eigentlich denke ich
, dass es viel weniger sein muss. Testen wir es. Es ist also dx, das ist das
interessanteste,
je nachdem , wo der Spieler stehen
wird. Also machen wir
vorerst 600 im x. und kopieren wir das. Ich glaube, wir können das schaffen, also duplizieren wir es hier. Und lasst uns diese zweite
Box nehmen und lassen Sie es mich
auf die andere Seite
der Karte verschieben . Einfach so. Jetzt ist es also auf der anderen Seite. Okay, jetzt haben wir diese
beiden Kollisionsboxen. Wir können
es immer testen und sehen, ob wir sie
kleiner oder größer machen
müssen. Also lasst uns Save zusammenfassen. Was wir jetzt tun können, ist dass ich sie zuerst
umbenenne. Ich nenne das eine
linke Kollisionsbox. Wenn ich also so und
das
andere buchstabieren könnte , richtige Kollisionsbox. Okay, also für die linke, klicken
wir darauf und gehen
wir runter und klicken Sie auf die Überlappung der Komponente
beginnen. Was sollte also passieren, wenn ich
anfange ,
diese Komponente zu überlappen? Lassen Sie mich diese
Standardereignisse löschen. Also belauschen, womit wir normalerweise
anfangen, ist Überschneidungen. Wenn wir uns also hier
etwas überlappen, haben
wir keinen wirklich
Run-On-Server und laufen auf Clients. Was wir normalerweise tun,
ist, dass wir diesen verwenden, der Switch hat Autorität. Noch einmal habe ich es dir gesagt,
bevor der Server die Autorität des Spiels
hat. Der Server kann alles tun. Autorität bedeutet also, wenn ich
der Server bin und Remote bedeutet wenn ich der Kunde bin,
was soll ich tun? Okay, also stellen
Sie nur sicher, dass
diese überlappte Komponente auf dem Server ausgeführt
wird. Und normalerweise
passiert was passiert, wenn Sie Kollisionsfelder hier haben, wenn Sie
Kollisionsfelder haben, normalerweise die Berechtigung wechseln
und sie dann auf dem Server
ausführen möchten . Denn nochmal
verhinderst du Betrug. Wir stellen nur
sicher, dass
es hier tatsächlich eine
überlappte Box gibt. Denn wenn Sie es einfach auf dem Client
ausführen, kann
der Client
manchmal dort erreichen,
wo sich mit dieser Box überschneidet, obwohl diese Box in dieser Box tatsächlich
nicht vorhanden ist. Eigentlich überlappend. Vielleicht ist es hier,
sie stehen hier und
überlappen es immer noch von dort aus. Betrügen. Also stellen wir nur sicher, dass wir auf dem Server
begegnen. Autorität bedeutet also, dass
ich der Server bin, also hat Switch Autorität. Und hier können wir den Code ausführen. Was wir tun wollen, ist, dass wir die Kamera anhalten
möchten , wenn der Spieler
mit dieser Kollisionsbox interagiert hat. Wir haben also nicht wirklich eine
Veranstaltung namens Post-Kamera. Also lasst uns das in
der Spielerbasis machen. Und was wir tun wollen, ist,
dass wir diese Kamera posten wollen, und wir haben sie noch nicht wirklich variabel
gemacht. Lassen Sie uns das also für die
Zeit tun, in der wir
diesen Timer pausieren möchten ,
im Wesentlichen, damit wir diesen
Update-Positionscode hier nicht ausführen
möchten. wir also mit der rechten Maustaste
auf diesen Wert. Bewerben Sie Ihre Variable. Und lass mich es Updates
Player, Kamera, Position nennen. Und normalerweise sage ich am
Ende
gerne Handle , weil es
ein Griff nach dem anderen ist. Ihre Hand, Update-Spieler,
Kamerapositions-Griff. Was wir versuchen, ist uns ein neues individuelles Ereignis zu erstellen. Und anstatt es einfach so
zu machen,
lassen Sie uns das in
unseren Blueprint Interfaces jetzt fast Experte für
Blueprint-Interfaces machen, also erstellen wir es hier
für die Spielerbasis. Gehen wir zum Player, eigentlich nicht hier und zu
den Schnittstellen pro Basis, machen
wir einen Aufruf. Lassen Sie uns pausieren,
pausieren , Ebene, Kamera,
Kompilieren und Speichern. Gehen wir also zurück zur
Spielerbasis und
nennen wir es posten ihre Kamera. Und tatsächlich brauchte ich die
Ereignis-Layer-Kamera pausieren. Also Event Pause
Player-Kamera hier. Also wollen wir diese Veranstaltung aufrufen. Wenn ich also zurück
zur Kachelkarte gehe, führen
wir jetzt dieses
Kollisionsbox-Event und wir möchten den
Player anrufen. Der Spieler. Wir können das nennen, indem wir
diesen einen anderen Schauspieler benutzen. Anderer Akteur bedeutet,
was sich überschneidet, diese Kollisionsbox
überlappte Komponenten, die Kollisionsbox
und der andere Akteur überlappt es auch immer. Also laufen wir drin. Es ist der Spieler.
Und nur um sicherzustellen, dass es der
Spieler ist, der es überlappt, mache
ich das normalerweise nur, um
sicherzustellen , dass wir hier
keinen Fehler machen. Normalerweise tue ich das. Schauspieler hat getaggt. Also hat Schauspieler markiert, du kannst dem Schauspieler Angriff geben. Also geben wir ihm den Tag-Spieler. Und was das bedeutet, ist
hier in der Spielerbasis. Wenn du hierher zurückgehst und wenn du gehst, glaube
ich, dass es in
den Standardeinstellungen der Klasse steht. Wenn Sie also nach einem Tag suchen, können
Sie sehen, dass wir dieser Layerbasis ein
Tag hinzufügen können. Also lasst uns ein Tag hinzufügen und nennen
wir es Player. Also was auch immer ein Bauer
mit dieser Kollisionsbox kollidiert. Denken Sie also daran, wenn
wir den Feind haben, ist auch
der Feind dran. Der Feind hier ist auch dran. Also nur um sicherzustellen, dass es nicht der Feind ist, der damit kollidiert. Und es ist nur der Spieler. Wir können sagen, Schauspieler
hat Player markiert. Und wenn das stimmt. Also wenn der Schauspieler
den Tag-Player hat
, den wir hier setzen,
und die Spielerbasis. Alle verbundenen Spieler haben
also den Tag-Player. Wir werden diesen Code ausführen. Wenn es also stimmt,
werden wir diesen Code ausführen. Und was wir
tun wollen, ist, dass wir diese Pause-Layer-Kamera
ausführen wollen. Der andere Schauspieler
hier ist unser Spieler. Definieren wir also genau, um
welchen Spieler es sich handelt. Und dann können wir noch einmal sagen, dass
er Layer REF bekommt , weil dies
die ist, die wir früher gemacht haben. Und dann können wir
Pause-Ebene sagen, Kamera. Und wenn Sie
diese Nachricht auswählen, weil es sich um eine Interface-Funktion handelt. Okay, also lasst uns wieder hierher gehen und etwas
mit diesem Event machen. Und ich werde
das auf den Clients ausführen , weil Sie es nicht wirklich auf dem Server ausführen möchten
. Denn denken Sie daran, dass diese Kamera
nur Kundenspezifisch ist. Diese Kamera läuft nur für
diesen bestimmten Player. Alle anderen Spieler kümmern sich nicht wirklich um Ihre Kamera, sie werden sie nicht sehen. Also werde ich es auf
dem Client ausführen, also benutzerdefiniert. Und nennen wir es CL für
Clients, Pause Layer, Kamera. Lasst uns das laufen lassen. Wenn ich hier klicke, führen
wir es auf
Clients wie unzuverlässig aus. Denken Sie daran, das zu tun. Was wir jetzt tun wollen, ist,
dass wir diese Variable erhalten wollen. Das, was wir versuchen, ist Pause-Timer durch Handling zu
sagen. Wenn wir also in die
Kiste gehen, wollen wir innehalten. Wenn wir über den Tellerrand gehen, möchten
wir die Kamera
oder den Timer erneut aufheben, damit sie erneut aktualisiert wird. Das ist es, was
wir versuchen zu tun. Also brauchen wir hier tatsächlich
einen Booleschen Wert, denn hier, wenn wir uns mit der
Kollisionsbox
überschneiden, werden wir innehalten. Wenn wir jedoch erneut auf
das Kästchen klicken und nach unten gehen, haben
wir diese namens
n-Komponenten-Endüberlappung. Wenn wir also wieder aus
der Box gehen, kopiere
ich
diesen Code hier ein, so. Wir müssen
das nicht wirklich wieder reif machen. Also haben sich andere Akteure hier
verbunden. Jetzt sind die Schauspieler auch hier
verbunden. Wann immer wir die Box verlassen, wollen
wir die Pause aufheben. Wir können nicht wirklich, ich meine, Sie können eine neue Veranstaltung machen,
aber Sie können dieses Ereignis einfach
verwenden, um
beides zu tun , indem Sie einen booleschen Wert verwenden. Denken Sie also an einen Booleschen Wert, als
ob er wahr oder falsch ist. Machen wir also hier einen Booleschen Wert und klicken Sie auf diesen. Und der Boolesche sollte
einfach Pause sagen. Und wenn es pausiert ist, ziehen
wir von hier aus
und klicken auf B oder Branch. Wenn es also eine Pause ist, wenn das stimmt, sollten wir innehalten. Und wenn es nicht stimmt, sollten
wir die Pause so aufheben. Es kann also beide Dinge
innerhalb desselben Ereignisses tun, einfach so,
indem es einen booleschen Wert verwendet. Und offensichtlich müssen wir diese Veranstaltung hier oben
durchführen. Und dann müssen wir
diesen Boolean hier durchlaufen. Also müssen wir einen booleschen Wert und unsere Veranstaltung oder in unserer Schnittstelle erstellen. Und jetzt nervt das aus irgendeinem Grund.
Ich weiß nicht warum. Lassen Sie uns kompilieren
und speichern und erneut erstellen. Manchmal passiert das,
Seal Pause, so. Okay, also lass uns das
in der Schnittstelle machen. Nehmen wir an, Player-Kamera, Machen wir neue Eingaben, einen booleschen Wert, und
nennen wir es einfach noch einmal Pause,
Kompilieren und Speichern und gehen wir zurück. Ich kann die miteinander verbinden. Und wenn Sie jetzt zur Kachelkarte
zurückkehren, können
Sie sehen, dass wir einen booleschen Wert haben. Wenn wir also die Überlappung betreten, möchten
wir pausieren. Stellen Sie das also auf richtig ein. Und wenn Sie es verlassen,
rufen wir dieses Ereignis noch einmal an,
pausieren Sie die Spielerkamera. Und wir wollen die Pause aufheben. Also lasst das falsch. Jetzt sollte es also klappen.
Wann immer wir gehen, nehmen
wir das an. Wir werden prüfen, ob es der Spieler ist, der das
tatsächlich verlässt. Wir werden diesen
booleschen Wert auf true oder false setzen. Und je nachdem,
was der Wert ist, wird
es hier laufen. Je nachdem, was der Wert
ist, wird dieser Timer pausieren oder
anPausieren. Also lasst uns eigentlich bevor
ich auf Play klicken könnte, überprüfen
wir zuerst
diese Kollisionsfelder. Also das linke und das
rechte Kollisionsfeld können
Sie hier runter gehen und ihre Kollision
überprüfen. Womit kollidieren sie also? Und nur um sicherzustellen, dass
alles in Ordnung ist, können
Sie hier klicken und Sie können sehen, dass es sich mit allem überschneidet, sogar der Pon, er überlappt sich mit den Teichen, damit wir Überlappungsereignisse
machen können. Das ist also ich denke ja, das sieht richtig aus. Das ist in Ordnung. Jetzt sind wir
mit dem Code fertig, und was wir tun müssen, Lasst uns fortfahren und
diese alte Talmadge löschen. Und würde das gelöscht? Platzieren wir unser neues. Also lasst uns hier zur
Kachelkarte gehen. Und lasst uns das Neue platzieren. Und lassen Sie es uns nochmal auf 000 platzieren. Ich werde dafür sorgen, dass
Exzellenz hier näher kommt. Nochmal, genau wie das, was
ich dir vorher gesagt habe, lass es uns um zehn verschieben. Ich glaube, es waren zehn. Und nur um uns zu bewegen, haben
wir diese fünf
Ebenen, 123456 Ebenen. Und ich gehe, wir haben diese zweite Schicht auf meinen
Nullen, Nullen, Nullen. Du kannst es also hier sehen. Es ist auf meinen Nullen sind 0,
aber es ist nicht, ist es nicht. Die erste gelbe Schicht ist
die zweite gelbe Schicht. Jetzt bei 0100 ist es so, dass Sie sehen können, dass wir die Kollisionsboxen
haben. Also klicken wir jetzt auf Play
und spawnen als Tsarina. Und lass mich zur
Seite gehen und du kannst sehen dass es tatsächlich aufhört.
Also funktioniert es. Wenn ich jetzt nach rechts gehe, funktioniert es
eigentlich nicht und das liegt
daran, dass ich vergessen habe, es überhaupt hinzuzufügen. Gehen wir also zurück zur
Kachelkarte und lassen uns tatsächlich
die zweite hinzufügen. Ich habe sogar vergessen, es tatsächlich
hinzuzufügen. Wenn Sie also auf den richtigen
klicken, können sie sich überlappen. Ich mache den gleichen Code wie dieser. Du kannst
es kopieren, hier unten einfügen, es hier verbinden,
den anderen Schauspieler hier verbinden und den anderen Schauspieler hier verbinden. Und klicke erneut auf das
rechte Feld. Und wenn Sie es verlassen, also
wenn Sie die Überlappung beenden, kopieren
Sie diese und verbinden
es dann wieder hier. Also anderer Schauspieler oder Regisseur hier, und es wird ununterbrochen. Okay, im
Wesentlichen
, hoffentlich im Wesentlichen jetzt arbeiten. Testen wir es also noch einmal. Wenn Sie nach rechts gehen, stoppt
es die Kamera. Sie können sehen, dass
es einen kleinen Bug gibt. Wenn ich das Feld hier betreibe. Es wird
meinem Charakter aus
irgendeinem Grund folgen , bevor es aufhört. Es folgt also meinem Charakter
und dann hört es auf. Ich will nicht, dass es das tut. Dies ist etwas, das
wir in
der nächsten Lektion verbessern können ,
weil
es tatsächlich hier pausiert,
aber aktualisiert wird. Hier wird die Aktualisierung abgeschlossen, um
den Standort der Schauspieler zu holen. Es folgt
dem Schauspieler also ein
bisschen mehr und wenn es fertig ist, hört
er hier auf. Also werden wir
das in der nächsten Lektion verbessern.
45. Die Kamerabewegung verbessern: In dieser Lektion werden wir die Kamera und die Bewegung
verbessern. Worüber wir hier gesprochen haben,
ist, wenn ich nach rechts gehe, die Kameras aufhören,
das ist alles gut. Das Problem ist, dass es dem Charakter
folgt, er bleibt an dem Charakter haften,
bevor er so aufhört und dann aus irgendeinem seltsamen Grund aufhört. Und hier
versuchen wir uns jetzt zu verbessern. Also hier macht es diese Logik wegen der guten
Schauspielerposition. Obwohl wir den Timer
posieren, wird dieses
Update abgeschlossen und beendet Kameraposition des
Timeline-Spielers. Und es bekommt immer noch den Standort
unseres Spielers und versucht, den
Standort der Kamera oder entsprechend einzustellen. Wir können
dies also beheben, indem eine temporäre Variable für
den guten Schauspielerstandort erstellen
, damit die Kamera den Standort unserer Schauspieler nicht
mehr
erhält , wenn wir
am Anfang
unserer Kollisionsbox hier sind . Also werden wir dem Timer
sagen, dass
dies der letzte
Punkt war, auf den Sie
aktualisieren sollten , und Sie sollten mir hier nicht mehr
folgen. Okay, so wie wir das machen, machen
wir noch einen Timer. Also lasst uns, Und übrigens, lasst uns
die Funktion tatsächlich zuerst machen. Es sieht also klarer aus. Also mache ich eine Funktion. Also klicke
hier oben auf das Plus und schreibe f für die Funktion. Und dann nennen wir das hier,
bekommt den aktuellen Spielerstandort. Jetzt mit diesem ist das
einfachste, was wir
tun werden , im Grunde nur den Standort
des Spielers zu ermitteln. Also hol dir den tatsächlichen Standort. Ich bekomme diesen Standort der
Schauspielerin und werde ihn einfach in einer Variablen
speichern. So eine ganz einfache Sache. Klicken Sie also mit der rechten Maustaste, steigen Sie
zu einer Variablen auf und schreiben Sie aktuelle Layer- So. Dies ist, das ist das einzige, was diese Funktion tun wird. Wiederherstellen des Standorts „
Get Actor in einer temporären Variablen
, die wir verwenden werden. Kommen wir zurück
zum Event Graph. Und hier lassen Sie uns
unseren zweiten Timer erstellen. Sagen wir also, stellen Sie einen Timer ein. Und dieses Mal, anstatt einen Timer nach Ereignis einzustellen,
stellen wir den Timer
nach Funktionsnamen ein. Das können wir also auch tun. Also lasst uns das verbinden und
du kannst sehen, wie das funktioniert. Jetzt werden
Sie gefragt, welche Funktion Sie ausführen möchten? Und es ist das hier. Ich klicke nur hier und
kopiere den Namen. Und Sie müssen den
Namen genau so kopieren, wie er ist, sowohl mit Großbuchstaben, Kleinbuchstaben, Großbuchstaben und so weiter. Kopieren Sie es also genau so, wie es ist. Und wenn Sie den Namen jemals ändern, müssen
Sie daran denken, ihn auch hier zu
ändern, sonst wird es nicht funktionieren. Die Zeit, die ich hier einstellen werde
, ist 0,1, also wird es
zehnmal pro Sekunde aktualisiert. Und ich werde es auch
auf Looping einstellen und mit der rechten Maustaste auf diesen Timer klicken, der zu einer Variablen
hochgestuft wird, und nennen wir es den Standortgriff der
Eltern holen. Okay, also haben wir
diese Zeit gerade jetzt, diesmal
laufen wir jetzt. also anstelle eines guten
Schauspielerstandortes Lassen Sie uns also anstelle eines guten
Schauspielerstandortes unseren aktuellen
Spielerstandort nutzen. Dies ist derjenige, den
wir gerade, diesen aktuellen
Spielerstandort. Ich hab angeschaut. Dieser wurde verwirrt. Dies ist der Spawn-Standort. Es erhält also diesen einen
aktuellen Spielerstandort. Ich ziehe das
raus und lege es hier hin. Okay? Der Trick ist jetzt, wenn wir
diese Kollisionsbox hier erreichen, wann immer wir sie erreichen, werden
wir diesen Timer stoppen. Anstatt
dieses Update hier zu stoppen, werden
wir diesen Timer beenden. Der Trick ist also, und
lass mich tatsächlich all
diese Rasterlinien entfernen. Es nervt mich ein bisschen. Gehen Sie also nochmal hier runter
beim Rendern und klicken Sie hier an. Wenn ich diese
Kollisionsbox-Linie erreiche, wird der Timer angehalten. Und wenn ich den Timer
hier in der Spielerbasis anhalte, wird er das nicht mehr aktualisieren, den aktuellen
Spielerstandort
bekommen. Es wird nicht mehr aktualisiert, es wird am Anfang
hier stecken bleiben. Das ist also der Trick
dafür. Anstatt diesen
Timer hier im Post-Timer zu stoppen, löschen wir diesen und
lassen Sie uns diesen
Timer stoppen
, der aktuellen Spielerstandort abrufen nennt. Der Standort wird nicht
mehr aktualisiert, wenn wir hier ankommen. Und die Kamera hört
nur dort auf. Das ist also der Trick. Verbinden wir die hier. Jetzt. Kompilieren und speichern. Jetzt klicke ich auf Play und
Test und schau, ob
alles in Ordnung ist. Wenn ich also zur Seite gehe, kannst
du sehen, dass es nicht
mehr folgt und reibungslos anhält. Und wenn ich hier raus komme, wird
es auch reibungslos
folgen. Wenn ich nach rechts gehe, hört
es auch reibungslos auf. Also stoppen wir den
aktuellen Standort hier, dass unser aktueller Standort, wir stoppen das
variable Update hier drüben,
also denkt er, dass der
Spieler noch hier ist. Das ist es, was
im Wesentlichen passiert. Diese Kamera denkt, dass der Player immer noch hier
ist, weil
wir den Timer stoppen. Wir starten den Timer erneut
, wenn ich diese Box verlasse. Und hier höre ich
den Timer hier an, um die Variablen zu
aktualisieren. Die Kamera
denkt also tatsächlich, dass wir noch hier sind. Sie können sehen, dass es immer noch
durchschneidet, also
müssen wir die Größe des
Kollisionsfelds anpassen. Wenn ich das also minimiere, gehe zurück zu den Kachelkarten
und gehe zum linken Feld. Und jetzt passen wir
es ein bisschen an. Wir müssen es ein
bisschen größer machen. Also im x, versuchen wir 625,
vielleicht sechs, Lass uns 650 ausprobieren
und sehen, was passiert. Also sechshundertfünfzig, sechshundertfünfzig, klicke auf Play. Wenn ich hierher
gehe, wird es hier aufhören. Okay, vielleicht können wir
ein bisschen mehr hinzufügen, aber es stoppt die Luft,
also gibt es kein Problem. Ja, ich denke, das ist gut. Jetzt hört es
hier an den Rändern auf. Wir sehen diesen
schwarzen Rand nicht mehr. Also jetzt ist das behoben. Und hier laufen. Und das Gleiche gilt für diesen. Wir können jedoch immer noch
vom Rand gehen
und das werden wir in der nächsten Lektion beheben. Okay, bevor wir das beenden, gehen
wir zurück
zur Spielerbasis. Ich muss das
ein bisschen besser strukturieren. Also lass mich die einfach schieben. Denken Sie daran,
Ihr Projekt immer zu organisieren ,
weil es ein Durcheinander
sein wird. Vertrau mir. Sie arbeiten
seit ein paar Monaten und tun das nicht,
Ihr Projekt wird wie
ein Chaos aussehen und Sie werden
es zu diesem Ihr Projekt wird wie
ein Chaos aussehen Zeitpunkt bereuen. Also versuche einfach
alles gut zusammenzustellen. Ich versuche
diese Variable zu greifen. Wenn Sie die Dinge
gut zusammenfügen, doppelklicken Sie auf diesen Pin, um einen Umleitungsknoten wie diesen zu erstellen. Jetzt sieht es
gut und organisiert aus. Und das hier, ich meine, ich denke, es sieht gut aus. Jetzt. Du kannst auch, wir können das sogar ein
bisschen weiter nach unten schieben. Es gibt Platz,
damit dieser hier drüben sein kann. Und das können wir hier
direkt unten stellen , weil
sie zusammengehören. Ich gehe hier rüber. Dies ist auch organisiert. Und wir können immer einen Kommentar abgeben. Also hier drüben können wir
dies nehmen und Updates sagen, die Kamerabewegungen aktualisieren,
so dass sie einem Spieler folgt. Du kannst versuchen zu schreiben,
was immer du willst. Also versuche ich mir nur etwas
aus dem Kopf auszudenken. Sie können sogar
die Farbe des
Kommentars ändern , wenn Sie möchten, die Größe
ändern, wenn Sie möchten. Und für diesen setzen wir den Ort
der Spieler ein , der sich hervorgebracht hat. Lassen Sie mich das auch kommentieren. Nehmen wir an, die Layer zu suchen, anfängliche Spawn-Position.
Einfach so. Versuchen Sie also, so
organisiert wie möglich zu bleiben. Sie können sogar allgemeine Daten herausgeben. Und ich denke, das sieht perfekt aus, lasst uns
kompilieren und speichern. Okay, das war's vorerst. Lassen Sie uns zur nächsten
Lektion übergehen und die Grenzen hinzufügen.
46. Kartengrenzen hinzufügen: Fügen wir nun die
Grenzen für die Karte hinzu, damit der Spieler nicht
vom Rand weggehen kann. Das ist sehr, sehr einfach. Dies ist ein kurzes Video, wahrscheinlich hier im Detail,
Kartendrachenstraße. Lass uns zurück gehen. Und wie zuvor fügen
wir zwei weitere
Kollisionsfelder hinzu. Fügen wir hier links eine
Kollisionsbox hinzu. Und genau wie dieses werde
ich es schaffen, das ist das X, das Y und Z, und das Z, ich werde es wieder 1 Tausend
schaffen. Sie kopieren einfach
das Einfügen und ich ziehe es wieder so nach unten. Lassen Sie mich die
Kamerastrehzahl ein wenig reduzieren. Ich denke, das ist gut, also lasst uns das versuchen. Ich benenne das um
und nenne es Left Bounce. Und ich dupliziere
das und nenne es richtige Grenzen. Und ziehen wir
diesen nach rechts. So glaube ich. Okay, die Sache, die wir hier für die
Kollision
tun wollen , also wenn du auf
einen von ihnen klickst und zur Kollision
gehst
und hier auf diesen
kleinen Pfeil klickst. Ich möchte, dass du auf dieses
klickst und hier auf benutzerdefiniert klickst. Und jetzt
kannst du die Dinge
für die Pons ändern , damit unser
Spieler dran ist, und anstatt mich zu überlappen, möchte
ich mein Telefon blockieren. Ich möchte nicht, dass der Punkt
über diese Kollisionsbox hinausgeht. Das Gleiche hier drüben. Klicken Sie hier, klicken Sie auf Kostüm und klicken Sie auf Bullock the. Aber lasst uns versuchen, das zu legen. Das ist wahrscheinlich die
einzige Bearbeitung, die wir machen mussten. Also lasst uns nach rechts gehen und sehen, ob wir blockiert
werden. Wir sind auf See. Wir können nicht mal weiter gehen. Großartig. Dies funktioniert und Sie
müssen dies testen, um zu
sehen, ob das Guthaben
groß genug ist. Sie gehen auf die andere Seite. Und hoffentlich
wird das auch funktionieren. Und das funktioniert auch und so
hört es perfekt auf. So fügen Sie also Kartengrenzen hinzu, bei denen
wir im Grunde nur verhindern, dass der Charakter
mit einer Kollisionsbox von der Kante
fällt.
47. Erstellen der feindlichen Flipbooks: Jetzt werden wir uns
ein wenig vom Spieler entfernen und wir werden
den Feind umsetzen. Also als das erste, was ich dir hier in den
Kursmaterialien
gegeben habe. Wenn Sie also zu den
Kostenmaterialien gehen, zu den Feinden, habe ich Ihnen diese Texturen
zur Verfügung gestellt. Es gibt wahrscheinlich mehr
Texturen in Ihrem Ordner. Und wieder setze ich die
nur ein, während ich mit dem Kurs fortfahre. Aber im Moment wichtig, das Schwein ist untätig und bewegt sich und
die Schnecke ist untätig und bewegt sich. Gehen wir also zuerst zum
Ordner „Assets“. Und drinnen, klicken wir
mit der rechten Maustaste und erstellen einen neuen Ordner und
nennen ihn Feinde. Hier werde
ich
einen neuen Ordner namens Texturen erstellen ,
damit Sie versuchen können, es
selbst zu tun, wenn Sie möchten. Dies ist etwas, das wir jetzt ein paar Mal
gemacht haben . Und Sie können
diese Texturen in
den Texturordner klicken und ziehen . Wählen Sie alle aus, klicken Sie mit der rechten Maustaste, wenden Sie die 2D-Textureinstellungen für Papier Also haben wir die Unschärfe entfernt. Und fangen wir hier mit
dieser Schnecke an. Also haben wir den Leerlauf, wir können mit der rechten Maustaste klicken und
wir können ein Sprite erstellen. Ich benenne es in
S4 Sprites und Schnecke im Leerlauf um. Und dann lasst uns
das für den Umzug machen. Klicken Sie also mit der rechten Maustaste und lassen Sie uns diesen Preis
extrahieren,
da wir mehrere haben Wählen Sie also hier oben Gitter aus und schreiben Sie
dann 90 mal 90. Das ist also die
Zellenbreite und -höhe. Das habe ich in Photoshop gemacht. Deshalb weiß ich, wie
viele Pixel es ist. Lasst uns also jetzt auf Extrakt klicken. Und jetzt klicke ich
vom Ordner weg und wieder hinein. Sie sortieren also automatisch
von 0 bis sieben. Und jetzt möchte ich, dass du
das umbenennst. Ich überspringe diesen Teil. Okay, jetzt wo ich sie umbenannt
habe, kann
ich alle auswählen und mit der
rechten Maustaste klicken, ein Flipbook
erstellen und es für FB Snail move
aufrufen. Ich klicke hier auf
diese Schnecke und stelle fest, dass die Zeiten Frames
pro Sekunde auf sechs sind. Das ist also die Geschwindigkeit, mit der
es sich bewegt. Das Gleiche, was ich
mit dem Idol hier machen werde. Klicken Sie mit der rechten Maustaste, erstellen Sie ein Flipbook, und nennen wir es F be schnecke, Leerlauf, und doppelklicken Sie darauf. Die Frames pro Sekunde sind nur
eins, weil es sich um einen Frame handelt. Und ich nehme beide
Schnecke hier, diese,
das Irland, den
Umzug und verschiebe sie den Feindordner. Wir haben sie also
abgesehen von all dem hier draußen. Also mache ich
das auch mit dem Schwein im Leerlauf und dem Schweinezug. Und ich überspringe diesen Teil. Ich habe jetzt das Schwein im Leerlauf gemacht
und das Schwein Move Flip Books. Jetzt klicke ich hier auf
das Schweinidol und setze die Frames pro Sekunde
auf sechs, so. Und mach das
Gleiche mit dem Umzug. Stellen Sie die Frames pro
Sekunde auf sechs ein. Jetzt speichern wir alles. Klicken wir auf diese beiden und ziehen sie in
den Feindordner. Jetzt haben wir also die Flip
Books für diese beiden.
48. Einrichten der feindlichen Pfauen: Um die feindlichen Punkte einzurichten. Lasst uns zu Blaupausen gehen. Und lasst uns zu unserem
Feindordner gehen, den wir geschafft haben,
weit zurück in diesem Kurs. Denk also an die feindliche Basis. Wir haben dies durch Rechtsklick
auf die Zeichenbasis erstellt
und eine untergeordnete
Blueprint-Klasse erstellt. Die Basis ist also ein Kind
der Charakterbasis hier. Also hier für die feindliche Basis, Lasst uns jetzt mit der rechten Maustaste klicken und ein anderes Kind
erstellen. Und jetzt
nennen wir das eine VP-Schnecke. Wir können erneut mit
der rechten Maustaste auf die Imagebasis , ein neues Kind
erstellen und
dieses eine VP-Auswahl nennen. Wenden wir uns hier dieser Schnecke zu. Doppelklicken wir darauf. Und hier für die Schnecke klicken
wir auf das Sprite. Und hier im
Quell-Flipbook wählen
wir die Schnecke im Leerlauf aus. Ich gehe, ich suche
nach Idle und wähle diese Schnecke hier aus. Ich mache das
Gleiche für das Schwein. Ein Klick auf das Sprite. Und hier suchen Sie nach Leerlauf
und wählen Sie das Schwein im Leerlauf aus. Jetzt haben wir das Schwein und
die Schnecken hier eingerichtet. Jetzt müssen wir die Größe
dieser Kapsel
reduzieren und versuchen, das und die feindliche Basis zu
tun, also gilt es für beide. Also lasst uns hier oben auf
die Kapsel klicken. Und hier. Ändern wir es so,
dass wir es zuerst hier machen müssen. Also vielleicht 15 von 15. Lass mich einfach zurück zur
Schnecke gehen und sehen, wie sie aussieht. Es sieht aus, es sieht vorerst gut aus. Wir können
es im Spiel immer anpassen. Ich kann sehen, dass es ein bisschen
klein für das Schwein ist. Wenn es also in der Basis ist, wird dies automatisch
angewendet,
da
es die
Elternklasse dieser beiden ist. Wenn Sie jedoch
individuelle Änderungen benötigen, können
Sie einfach auf
diese Schweinekapsel klicken. Du musst den
Eltern nicht folgen. Es ändert sich hier. Sie können
den individuellen Wechsel für
dieses Schwein immer gezielt vornehmen, vielleicht stattdessen
so etwas. Lasst uns 2323 machen, so
etwas. Dieser ist momentan nicht wirklich
wichtig. Wir müssen es im Spiel testen
und sehen, wie es aussieht. Also müssen wir das testen,
bevor wir wissen, dass es funktioniert. Das Letzte, was ich tun
möchte, ist jetzt, unsere Feinde
mit unseren Spielern kollidieren, also blockieren sie
unsere Spieler. Das glaube ich schon. Versuchen wir also einen Blick darauf
zu werfen. Also BP Feind Base, wir können
hier auf die Kapsel klicken und die Kollisionen überprüfen. Und gerade jetzt
blockiert es unseren Charakter. Also lasst uns eigentlich nicht nur unseren Charakter
blockieren,
weil Feinde auch dran sind, also blockieren sie sich gegenseitig. Also lasst uns hierher gehen und die
Kollision, die anwesend ist. Klicken wir hier auf den Custom. Lasst uns jetzt klicken. Klicken
wir also für die Pons einfach auf
Überlappung, da wir vielleicht später einige überlappende
Ereignisse durchführen
müssen. Überlappen wir also einfach die
Pons, damit sie sich nicht
gegenseitig blockieren , wenn sie
herumlaufen und auch unseren Charakter nicht blockieren. Und das war's jetzt für die. Und wir müssen wahrscheinlich später mehr Sachen
machen, aber ich denke, das war
es für diesen Kurs. Wenn wir das also auf 0 setzen, können
Sie sehen, wie es aussieht. Dies ist jetzt der
Feind, den wir haben. Und natürlich gibt
es
momentan keine Bewegung , wir müssen die Bewegung
hinzufügen. Und das ist etwas
, mit dem wir in
der nächsten Lektion arbeiten
werden.
49. Volumen der Navigation: Okay, jetzt wo wir mit künstlicher
Intelligenz
arbeiten, müssen
wir sagen, wo sich all
diese KI bewegen kann, denn im Moment weiß die KI nicht wirklich,
wo sie navigieren können. Du hast
ihnen nicht wirklich gesagt , wohin sie sich bewegen
dürfen. Und das
werden wir hier tun. Und das ist eigentlich sehr
einfach. Gehen wir hier hoch und
sie fügen schnell einen Button hinzu. Und die Volumes
Sie haben etwas als
Navigationsnetz Bounce Volume
bezeichnet wird. Dies wird für
künstliche Intelligenz,
für KI verwendet und zeigt
an, wohin sie sich bewegen können. Jetzt erstellt es diese Box hier. Lassen Sie
es mich einfach als 0 in das Y setzen. Also ist alles hier
in unserer Kachelkarte. Und dann
müssen wir es größer machen. Gehen Sie also in
den Pinseleinstellungen hier runter, machen
wir es größer und dx, damit es den gesamten Bereich ausfüllt. Und wir können es so
nach unten bewegen, also ist es im Untergrund. Und wenn Sie auf Ihrer Tastatur auf P,
So P klicken, eine grüne
Linie angezeigt. Und wenn du
wieder auf P klickst, ist es die Höhe. Es heißt also, hier einzurichten. Whoops, hier einrichten genannt
Navigation und Show. Und die Abkürzung ist P dafür. Und es wird dir zeigen, wo die KI herumlaufen darf
. Im Moment ist das also grün. Sie dürfen hier arbeiten. Sie dürfen diese Linie hier nicht
passieren. Und im Moment kann
die KI nicht hier
hochlaufen , weil wir keine grüne Linie
haben. Und das liegt daran, dass
Sie diesen Bereich auch abdecken müssen. Also lasst uns im Z, lass es uns größer machen und ich werde es einfach so
hochziehen. Es deckt also beides ab. Dieser Bereich ist jetzt grün, und dieser Bereich hier unten
ist auch so grün. Es gibt also einige kleine
Einstellungen, die wir
anpassen müssen , um sicherzustellen, dass
alles funktioniert. Hier im
Re-Cast-Navigationsnetz , das beim Hinzufügen
des
Navigationsnetz-Bounce-Volumens erstellt wurde. Hier drüben im
Draw-Offset möchte ich 0 hinzufügen. Und das ist im Grunde
genau der Ort an dem sich diese Zeichnung befinden soll. Und ich mochte einfach
0 statt zehn. Also nicht wirklich
etwas Wichtiges, aber ich mag es einfach so. Das nächste ist, die wichtigsten Einstellungen sind hier in der maximalen Steigung des Agenten. Das werde ich einfach aufstellen. Du kannst sehen, was passiert,
wenn du es ablegst. Es bedeutet, dass sie diesen Hang nicht
hinaufsteigen können. Das bedeutet es. Und ich werde es einfach
aufstellen, weil ich möchte, dass sie auf diesem Hang laufen können
. Und das ist die Schritthöhe. Das werde ich auch
aufstellen. Und ich glaube nicht, dass wir weitere Einstellungen anpassen müssen
. Wir müssen unser
Navigationsvolumen ausprobieren , um sicherzustellen, dass es funktioniert. Also lass mich einfach
File und Alles speichern. Und bevor wir
diese Bearbeitungen hier abschließen, müssen
Sie die Lautstärke des
Navigationsbilanzes erstellen. Wenn Sie also hier auf den Aufbau
klicken und auf Build oder
Levels klicken, müssen Sie
daran denken zu bauen, bevor dies
tatsächlich in die Tat umgesetzt wird. Okay, jetzt ist das Gebäude so sehr schnell
fertig. Und das Gebäude
dauert normalerweise sehr lange wenn Sie Beleuchtung
in Ihrer Szene haben. Wenn Sie also
mit einem 3D-Spiel arbeiten, können Sie
sehen, dass
dies keine Zeit gedauert hat. Wir haben keine Beleuchtung. Dies ist sehr schnell zu erledigen. Und jetzt, da wir unser
Navigationssprungvolumen erledigt haben, können
wir nun mit der
Bewegung des Auges
arbeiten. So können wir später testen , um zu sehen, ob das richtig
funktioniert.
50. AI Controller: Genau wie wir hier einen
Player-Controller erstellt haben, können wir
jetzt einen
Controller für unsere KI erstellen. Gehen wir also zum
Ordner „Enemy“. Und hier können
Sie mit der rechten Maustaste klicken und eine neue
Blueprint-Klasse
C erstellen . Hier können Sie nur den Player-Controller sehen. Der Controller ist also etwas fortgeschritteneres und
nicht wirklich
fortgeschrittenes, aber er hat ihn hier nicht aufgenommen, weil Leute normalerweise nicht mit
KI arbeiten und eines Tages anfangen, mit dieser Engine zu
arbeiten. Sie können
hier danach suchen, wenn Sie auf
alle Klassen klicken und nach KI-Controller
suchen. Und Sie können diesen
namens KI-Controller sehen. Wählen wir es hier aus. Und ich
gebe ihm ein Präfix von AIC für den KI-Controller. Und ich nenne
es einfach für einen Emmy wie diesen. Also lasst uns alles retten. Und jetzt
werde ich auf
diese feindliche Basis klicken. Und hier in der Basisklasse ist der
Standardwert nach rechts. Sie können hier sehen,
wie man KI besitzt. Ich werde einfach zu einem
Ort in der Welt wechseln oder spawnen. Vielleicht spawnen Sie die Feinde und die KI wird besessen sein. Und die KI-Controller-Klasse, wir müssen dies in
die
KI-Controller-Klasse ändern , die wir gerade erstellt haben. Es wird also nicht den Standardwert
verwenden. Wir wollen unsere eigenen benutzen. Und das war das
einzige, was wir tun mussten. Jetzt haben wir unseren
KI-Controller und Sie können darauf klicken und
sehen, wie er aussieht. Und genau wie unser
Player-Controller nicht wirklich viel enthält. Der einzige Unterschied besteht
darin, dass es
eine Aktionskomponente und einen
Pfad enthält , der Komponenten folgt, aber nichts, worüber wir uns
jetzt Sorgen machen oder verwenden werden . Schließen wir es also und fahren
mit der nächsten Lektion fort.
51. Blackboard und Verhaltensbaum: Erstellen wir jetzt eine Tafel
und einen Verhaltensbaum. Wenn Sie also mit der rechten Maustaste
hier im Feindordner und zur künstlichen
Intelligenz gehen, können
Sie sehen, dass wir
etwas haben, das als
Tafel und einen Verhaltensbaum bezeichnet wird . Klicken wir also zuerst auf Create the Blackboard,
erstellen es hier, nennen es dB für Blackboard und schreiben dann Feind. Und wenn Sie
auf diese Tafel doppelklicken, können
Sie sehen, dass sie nicht
wirklich viel enthält. Wir können einen neuen Schlüssel erstellen
, der nur eine Variable hat. Und diese Variable, Sie können
einige Informationen darüber sehen. Wir können hier zwischen
dem Verhaltensbaum und der
Tafel wechseln. also nicht wirklich viel
los und wir müssen das jetzt nicht wirklich
benutzen. Erstellen wir also einen Verhaltensbaum. Sie können sehen, dass wir nicht darauf
klicken können und das liegt daran, dass wir gerade keinen
haben. Also lasst es uns schließen. wir noch einmal mit der rechten Maustaste. Gehe zu Künstlicher Intelligenz
und erstelle einen Verhaltensbaum. Und nennen wir das einen
BT-Feind oder Verhaltensbaumfeind. Jetzt können Sie
auf diesen Verhaltensbaum doppelklicken. Und in diesem Verhaltensbaum baut man die KI auf, wie sich die KI verhält wie sie sich bewegt. Um also hier
im Verhaltensbaum anzufangen, können
Sie es herausziehen und loslassen. Als erstes, was Sie im Verhaltensbaum
tun, müssen
Sie einen Selektor auswählen. Etwas sehr Wichtiges
innerhalb des Verhaltensbaums
ist, dass innerhalb des Verhaltensbaums der Code
von links nach rechts ausgeführt wird. Und ich zeige dir, wie
ich hier einige
der Knoten erstellen muss , damit du sehen
kannst, was ich meine. also mit dem Root beginnen, können
Sie es herausziehen und Selektor
erstellen. Und das nächste ist, eine Sequenz
zu machen. Wir haben einen Selektor, wir haben eine Sequenz und jetzt werden
wir unseren Code hinzufügen. So kannst du hier sehen, wenn
ich etwas Zufälliges hinzufüge , zeige
ich dir einfach, dass ich das
Gleiche immer wieder hinzufügen werde. Sie können sehen, Sie
können die Notizen sehen. Sie haben Zahlen. Wir
haben also Nummer 0, Nummer eins, und es wird
den Code von links nach rechts ausführen. Also hier
fangen wir links an, wir haben Nummer zwei und dann
Nummer drei und Nummer vier. Wenn ich das bewege, kannst
du sehen, dass es
auf Nummer drei wechselt, es wechselt auf Nummer zwei. Der Code wird also immer von links nach rechts ausgelöst. Sehr, sehr wichtig, an
das man sich erinnern sollte. Okay, was wir also mit
diesem Verhaltensbaum machen wollen ,
ist, dass wir die KI wollen, also unser Schwein oder eine Schnecke hier. Und das Level, auf dem wir
einen zufälligen Ort in
diesem Navigationsnetz finden wollten . Sobald es einen zufälligen Ort gefunden hat, wird
es
an diesen Ort verschoben. Genau wie in Maple Story, wo sich der Feind gerade im Level
bewegt. Es findet einen zufälligen Punkt
im Navigationsnetz und bewegt sich dann
an diese Position. Vielleicht wartet es zwei Sekunden. Es ist wie im Leerlaufmodus und dann bewegt es sich an einen anderen Punkt. Also müssen wir damit beginnen, einen zufälligen Punkt
an unserem Standort zu
finden. Und nachdem wir
den zufälligen Punkt gefunden haben, müssen
wir zu diesem Punkt gehen. Davor müssen
wir also einen zufälligen Punkt finden. Und das werden wir in der nächsten Lektion
tun.
52. Einen Random Point in beweglichen Bereichen finden: Aber lassen Sie uns nun
unseren Feind dazu bringen,
einen zufälligen Punkt in
diesem beweglichen Bereich in
diesem Navigationsnetz zu finden einen zufälligen Punkt . Gehen wir also zurück zum
Verhaltensbaum. Und drinnen von hier haben wir so etwas nicht wirklich, also müssen wir es uns selbst erstellen. Und Sie können dies tun, indem Sie hier oben
auf die neue Aufgabe klicken. also auf eine neue Aufgabe
klicken, müssen Sie diese
Aufgabe speichern und ich rufe sie an, ich werde
diese entfernen, also BTT. Und dann lasst uns das alles
entfernen und
nennen wir es einfach den zufälligen Ort binden. Okay? Und Sie können
die Aufgabe sehen, die es speichert. Sie haben also alle Aufgaben. Wir können sogar einen neuen
Ordner oder alle Ihre Aufgaben erstellen. Hier innerhalb der Aufgabe beginnen
Sie also immer mit
etwas, das Ai
empfangen, empfangen, ausführen nennt . Dies ist das Ereignis, mit dem Sie
immer beginnen, und Sie beenden immer
mit der fertigen Ausführung. Sie haben diese beiden also immer in einer Aufgabe hier im
Verhaltensbaum. Und dann
geht der gesamte Code zwischen diesen beiden. Die Hauptfunktion wir hier verwenden
möchten,
heißt „Zufällig
erreichbarer Punkt im Radius abrufen“, die
wir hier verwenden
möchten,
heißt „Zufällig
erreichbarer Punkt im Radius abrufen“,
Sie haben einige andere. Holen Sie sich also zufälligen Punkt
und navigierbaren Radius. Ich möchte einen
in erreichbarer Stelle bekommen. Vielleicht hast du hier oben etwas
Navigation. Wenn also der Feind hier unten ist, haben
Sie hier oben eine Navigation , die der Feind nicht erreichen kann. Und ich
will es nicht wirklich verderben. Ich werde diesen namens
Get Random erreichbarer
Punkt im Radius verwenden . Also klicke ich
darauf und es
schaut mir unser Navigationsnetz an. Was ist der Ursprung, von dem es anfangen
sollte zu suchen? Und ich möchte einfach nur
suchen, wo die Schnecke ist oder je größer ist. Lasst uns also eine Schnecke
hier legen, damit du sie ein bisschen mehr
visualisieren kannst . Wir haben also die Schnecke in unserem Level, die hier herumläuft. Also wo willst du anfangen zu suchen? Hier bei der Herkunft? Ich bin einfach eine große und
vertrauenswürdige Schnecke da. Also hier im kontrollierten Bauern, Dies ist der Feind
, der herumläuft. Und denken Sie daran, wir haben vorher gemacht, Spieler ref
holen und Controller ref bekommen. Ich glaube nicht, dass wir
eine für den Feind haben, also lasst uns
ein Blueprint-Interface erstellen, weil wir tatsächlich eine Referenz
dieser feindlichen Basis
benötigen. Weil wir es hier
verwenden müssen, um die Akteure zu lokalisieren und als Ursprung
einzufügen. Hier brauchen wir also einen Verweis
auf das Blueprint-Interface
oder die feindliche Basis, wo wir sagen, dass sie
feindliche Referenz erhält. Gehen wir zurück und lassen Sie uns ein neues
Blueprint-Interface erstellen. Dies ist also die gleiche Methode wie das, was wir bisher gemacht haben. Klicken Sie mit der rechten Maustaste, gehen Sie zu Blueprints und wählen Sie
Blueprint-Schnittstelle Nennen wir es E beendet feindliche Basis. Lass uns hier rein gehen. Und
nennen wir das „NME bekommt“. Also hol die Feinde
als Referenz. in der Ausgabe Worauf versuchen Sie sich in der Ausgabe zu beziehen? Sie versuchen, sich auf BP und Interface
zu beziehen. Also so so. Und du kannst es für Feind nennen. Okay, jetzt denken Sie daran zu gehen, zur feindlichen Basis und drinnen gehen Sie zu Klasseneinstellungen und fügen Sie
dann die Schnittstelle hinzu, die Sie gerade erstellt haben, genannt End Feind Base, Kompilieren und Speichern, und es
wird unten angezeigt
hier. Wer ist jetzt der Feind? Der Feind ist nur Selbstwunsch, was bedeutet, in welcher
Blaupause ich bin. Der Feind ist also nur
diese feindliche Basis. Okay, jetzt können wir zur
Aufgabe zurückkehren und vom Kontrollteich aus
können
wir jetzt sagen, dass er
feindliche Referenz bekommt. Wenn es also die Schnecke ist, die
herumläuft, weiß
sie jetzt, dass
es die Schnecke ist. Dies ist die feindliche Referenz
, die wir hier haben. Ich klicke einfach mit der rechten Maustaste auf diesen Feind und
fördere eine Variable. Ich nenne
diesen variablen Feindbauern einfach. So, um nur sauberer zu
sagen. Und dieser Ursprung können wir
diesen Feind
jetzt nehmen **** und
wir können sagen,
bekommt Schauspielerstandort wie diesen. Der Ursprung ist also
wo dieser Feind ist. Jetzt
ist der Ursprung von diesem Feind. Und es wird nach
einem Punkt um diesen Feind suchen. Dies ist der Radius. Jetzt müssen wir angeben, wie groß der Radius
ist, in dem er suchen
muss. Nun, diesen Radius, könnten wir
einfach eine Zahl einfügen und
50 sagen und sind 100 Einheiten. Aber vielleicht hast du
verschiedene Karten. Stellen Sie sich also vor, Sie
haben diese Karte nicht nur in Ihrem Spiel, sondern Sie haben mehrere Karten. Einige Karten sind
größer als andere. Manchmal muss man weiter entfernt
nach Punkten suchen. Wir
wollen also nicht wirklich
eine solide Zahl haben , die
hier im Radius geschrieben wird. Normalerweise, was ich
gerne für meine Spiele mache, bekomme
ich gerne die Größe
dieses navigierbaren Bereichs. Und mit dieser Größe unterscheidet sich
diese Größe von Map zu
Map, da Sie sich vorstellen können, dass dieses
Navigationsnetz-Bounce-Volumen in anderen Maps größer oder kleiner
ist. Es wird
also nur diese Größe bekommen, in
welcher Karte Sie sich befinden, und es wird in diesem
Bereich suchen. So wie du das machst ist, lass uns das ein
bisschen wegziehen. So wie du das machst,
ist wieder Schauspieler der Klasse zu holen und du
benutzt Schauspieler der Klasse. Auch hier haben wir es schon einmal benutzt, aber wenn ich es noch einmal
erklären muss, musst du das benutzen, um ein Extra an Klasse zu
bekommen. Du kannst einen Schauspieler bekommen, der
bereits
innerhalb des Levels hervorgebracht ist . Das Volumen des
Navigationsnetzes begrenzt ist also gerade bereits innerhalb
unseres Levels. Wir können also einfach
nach einem Navigationsnetz suchen. Wenn ich hier sehen kann Nav
Mesh Bounce Volumen. Jetzt haben wir die
Navigation ausgeglichene Lautstärke. Jetzt können wir davon abziehen
und sagen, Schauspieler Bounce holen. Okay? Jetzt kriegen wir die Schauspielergrenzen. Und was wir damit machen können,
ist, dass wir jetzt den Radius brauchen, aber hier können
Sie den Radius sehen, das Ausmaß der Fehler. Sie können es tatsächlich auf
den Bildschirm ausdrucken und sehen
, wie es aussieht. Aber wir müssen den
Verhaltensbaum ausführen, bevor wir das tun, ich werde
dir das später zeigen, aber jetzt
versuchen wir, das zu beenden. Was wir versuchen, ist, den Radius hier zu
finden, aber Sie können sehen, dass die
Fehlerausdehnung ein Vektor ist. Ich werde diesen Vektor durchbrechen damit ich die x, y und z sehen kann.
Das einzige, woran wir
interessiert sind, ist das X. Weil du
hier den roten,
den roten Drehpunkt siehst , wenn du dich daran erinnerst
vorher ist das Rot das x. Wenn Sie die Maus hier bewegen, interessierten sich nur tatsächlich für den Bereich auf dem x. Wir kümmern uns nicht wirklich um
das Z oder das y hier. Wir versuchen hier einen Punkt in
dieser Größe zu
finden .
Aber lass uns zurückgehen. Das einzige,
woran wir interessiert sind, ist das X. Also lasst uns, ich
werde
diese Boxausdehnung tatsächlich durch zwei teilen ,
weil ich es oft getestet habe. Und ich denke, dass diese Größe, wie das Durchsuchen des
gesamten schiffbaren Bereichs, nur die Größe
ist. Und ich mag es, dass meine Bauern einfach in einem kleineren Bereich
suchen. Ich mag diese Schnecke nicht, um in der ganzen Gegend zu
suchen. Manchmal bewegt es sich von
diesem Punkt der Map, dann bewegt es sich ganz auf die andere Seite meiner
Ich mag das nicht. Ich mag die Schnecken
manchmal bewegt sie sich nur
von hier nach hier. Das ist vielleicht die
maximale Bewegung. Also teile ich
diese Box gerne,
bevor ich diese
Dosis tatsächlich geteilt durch zwei mache. Es ist also viel kleiner in der Fläche. Sie können hier sehen, wann
Sie dividieren schreiben. Wenn ich also einfach noch einmal ziehe, habe ich es
vielleicht zu schnell gemacht. Sie können den
Dividen-Button schreiben und hier klicken. Du kannst jetzt sehen, dass es ein Vektor ist, aber das brauche ich nicht wirklich. Ich muss es nur durch zwei teilen. Also klicken wir mit der rechten Maustaste
auf diesen Pin. Und Sie können
diesen Pin in eine Ganzzahl konvertieren. Jetzt ist es nur eine Zahl, also können wir sie durch zwei teilen. Ich kann es
hier wieder mit dem Breakvektor verbinden. Hier. Jetzt ist das x durch zwei geteilt. Und jetzt kann ich das in
den Radius stecken, oops, so. Und lasst uns das runterbringen, so
etwas. Jetzt haben wir diesen
zufälligen Ort. Auch hier ist das einzige,
woran wir interessiert sind, der x-Wert. Wir möchten, dass der Z-Wert
derselbe ist, weil ich immer noch möchte, dass
meine Schnecke hier unten ist. Und der Y-Wert sollte auch derselbe
sein weil ich immer noch möchte, dass
meine Schnecke hier ist. Ich bin nur daran interessiert, es auf die X-Achse zu
verschieben. Das, was ich tun werde
, ist, dass ich hierher
zurückgehe und diesen Vektor durchbreche. Jetzt haben wir das x, y und z. Also x ist der Punkt, den
es im x gefunden hat.
Und lassen Sie mich mit der rechten Maustaste klicken
und „Vektor machen“ sagen. Jetzt können wir
diesen Vektor rekonstruieren , damit das x gleich bleiben
sollte. Dies ist der zufällige
Punkt, der gefunden wird. Aber ich möchte, dass mein Y und
Z gleich bleiben. Eigentlich kopiere ich das einfach hier. Und ich werde einfach
wieder den Standort meiner Schauspielerin
holen und diesen
Vektor x, y und z brechen, damit ich diese Werte verwenden kann. Ich werde nur das Y und das Z
anschließen. Das y und das Z bleiben gleich wie
das, wie das Gedicht, dass
wir den Feind haben****. Aber nur die Ausgänge werden einen
zufälligen Ort finden, und das ist
das einzige, was sich ändern wird. Das Y und das Z
werden also immer gleich bleiben. Ordnung, das ist also das Endergebnis und
wir müssen es irgendwo anschließen und es hier in
unserem Verhaltensbaum verwenden. Hier kommt das
Blackboard ins Spiel. Also lass uns zurück
zur Blackboard gehen. Eigentlich denke ich, dass wir es hier und
den Verhaltensbaum
einschalten können , damit Sie entweder
die Tafel hier finden und öffnen können. Aber genau wie zuvor können wir das
auch tun, indem wir zu
ihrem Verhaltensbaum gehen und hier oben auf die
Tafel
klicken. Machen wir also einen neuen Schlüssel und machen wir einen Vektor. Das brauchen wir. Und nennen wir diesen
Vektor den x-Standort. Wir interessieren uns also nur für
den X-Location. Und stellen Sie nur sicher, dass
dies ein Vektor ist und wir hier nichts ändern
müssen. Also lasst es uns hier aufheben. Und lasst uns zur Aufgabe zurückkehren. Und dann werden
wir hier eine neue Variable erstellen. Diese Variable nenne ich
es
einfach Vektor, weil es ein Vektor ist. Und das, was Sie hier tun
müssen wird nach Blackboard gesucht. Und wählen Sie diese namens
Blackboard-Schlüsselauswahl aus. Wir können kompilieren und speichern. Und jetzt kannst du
diesen Vektor hier raus machen. Dies ist der
Tafelvektor. Und Sie können sagen, setzt Blackboard, Blackboard Wert als Vektor. Sie müssen es jetzt auswählen. Und was es jetzt
tun wird, wird diesen Wert
hier in
diesen Vektor
hinzufügen, den
Sie erstellt haben. Also lasst es uns jetzt hier hinzufügen. Jetzt ist dies das Ergebnis und verbinden wir es. Also wird es
von hier aus den ganzen
Weg gehen , so. Jetzt ist es also verbunden. Und lasst uns fertig werden, ausführen. Und denken Sie immer daran,
auf diesen Erfolgs-Button zu klicken. So sehr wichtig. Kompilieren und speichern. Mal sehen, was passiert. Gehen wir jetzt zurück zum
feindlichen Verhaltensbaum. Klicken Sie also auf den
Verhaltensbaum. Was wir jetzt tun können,
ist, dass wir
hier runter gehen und nach unserer Aufgabe suchen können . Also schreibe einfach für BTT
und wir können diesen finden,
PTT findet einen zufälligen Ort. Und jetzt müssen wir es sagen,
es ist dieser x-Ort, den wir in unserem Blackboard verwenden müssen
. Aber Sie können hier sehen,
ich kann nicht wirklich, wenn ich auf diese
Aufgabe klicke, kann
ich nicht wirklich, ich habe keine
Option dazu. Und das liegt daran, dass
Sie in der Aufgabe auf diesen
Vektor klicken müssen und auf diesen als
Instanz bearbeitbar bezeichnet werden müssen. Denken Sie daran, das zu tun,
sonst können Sie es
nicht sehen. Also geh zurück zum Feind. Und Sie können
jetzt sehen, dass wir
einen Vektor auswählen können und der Vektor, den wir verwenden
möchten, ist diese x-Position. Jetzt wird es einen zufälligen Ort
finden und es sind diese Vektoren. Jetzt haben wir das Ergebnis. Es wird
an diesen Ort ziehen. Und am Ende
möchte ich einfach warten. Wenn
es also einen Punkt findet, bewegt
es sich manchmal zu diesem Punkt. Ich wollte ein
bisschen warten, bevor es sich wieder bewegt. Hier in der Wartezeit schreibe
ich einfach 0. Ich fand, dass dies der
beste Weg ist, dies zu tun. Die Wartezeit ist also 0, aber die Variation
beträgt drei Sekunden. Manchmal
warten sie also 0 Sekunden, manchmal warten sie
drei Sekunden, manchmal waren es zwei Sekunden. Manchmal können sie also
0 Sekunden warten , damit sie nicht
warten, sie bewegen sich einfach wieder. Es gibt zufällige Variationen, drei Sekunden oder manchmal warten
sie drei Sekunden. Aber jetzt wird es einen zufälligen Ort
finden. Es wird
an diesen Ort ziehen. Und dann wird es bis zu drei Sekunden
warten und dann noch einmal diesen Vorgang
wiederholen. Okay, damit das
Ganze funktioniert, müssen
wir zurück
zum Spieler-Controller. Und drinnen von hier fangen
wir an zu spielen. Sie müssen sagen „Verhaltensbaum
ausführen“. Sonst
wird dein Verhaltensbaum nicht funktionieren. Und dann müssen Sie auswählen, um
welchen Verhaltensbaum es sich
handelt , um Speichern zu verstärken. Und jetzt lasst uns einen
Feind ins Level bringen und sehen, ob es funktioniert oder ob es etwas
gibt, das ich vergessen habe. Also treffe einfach einen
Feind ins Level. Klicken wir auf Jetzt spielen,
wählen Sie den Charakter aus. Und gerade jetzt, was
ich auf meinen Feind sehe, sehe
ich, dass
sich mein Feind nicht bewegt. Also
stimmt etwas nicht und ich muss
herausfinden, was ich
in diesem Prozess falsch gemacht habe. Okay, so wie ich das mache,
um Dinge zu debuggen. So kann man hier sehen,
wenn ich hier wieder spiele, die KI
bewegt sich nicht wirklich. Etwas stimmt nicht. Und lasst es uns tatsächlich hier
aufstellen. Vielleicht ist es im Boden und es bewegt sich immer noch nicht. Also das erste, was ich beim Debuggen nicht
mag, manchmal das
Navigationsmesh-Bounce-Volumen fehlerhaft, also wird es nicht funktionieren. Manchmal habe ich tatsächlich gelöscht und ich habe es noch einmal versucht. Ich weiß also nicht warum
es in Unreal Engine manchmal funktioniert. Vielleicht ist das nicht das Problem, aber wir können hier anfangen. Und so fügen
wir in den Volumes das Volumen des
Navigationsnetzes erneut hinzu und setzen Sie es auf 0. Und in der Boxausdehnung werde
ich es
wieder erhöhen, so etwas. Und dann vergrößere das, das z. Okay, jetzt habe ich es wieder
und in der Neubesetzung hier setze
ich den Graw-Offset
wieder auf 0. Und wir stellen die Agentenhöhe auf die
maximale Loop
289 des Agenten und die maximale Höhe 289 ein. Dann speichere und
baue ich alles wieder. Okay, jetzt können wir versuchen, auf
Play zu klicken und es bewegt sich immer noch nicht. Das nächste, was
ich mir ansehen möchte,
ist, dass es einen Punkt
in meinem Verhaltensbaum hier
zu meiner Aufgabe findet . Was ich
normalerweise mache, ist,
dass ich einfach auf den Bildschirm
ausdrucke. Print-String ist also das Beste, was
Sie zum Debuggen tun können. Denn wenn es eine
Zeichenfolge auf Ihren Bildschirm druckt, wissen
Sie, dass
dieser Code ausgelöst wird. Dieser Code funktioniert.
Wenn ich also auf Jetzt spielen klicke und du
siehst, dass es Hallo steht. Die Aufgabe besteht also darin
, Hallo zu sagen. Versuchen Sie also, den Code auszuführen, also ist hier nichts falsch. Lasst uns also mit dem Code fortfahren. Hier drüben. Versuchen wir zu sehen, ob
es diesen Punkt findet. Drucken wir also noch einmal
auf den Bildschirm aus, von hier aus
verbunden ist. Denn jetzt wissen wir, dass
wir jetzt wissen, dass dieser Teil
des Codes funktioniert, also startet er diese Aufgabe. Also hier drüben
drucken wir diesen Wert aus. Also wird es
diesen Vektor drucken und sehen ob wir hier tatsächlich
etwas gefunden haben. Und Sie können im X sehen, dass es tatsächlich
verschiedene Orte findet, aber es funktioniert tatsächlich. Es findet diese
Standorte also richtig. Es ist also in Ordnung, es
sind diese Standorte und ich weiß, dass meine KI-Controller auch funktionieren , denn dies
ist derjenige, der den von uns erstellten
Verhaltensbaum
ausführt. Und es könnte ein Umzug sein
und dann sofort warten. Das ist also auch
etwas, das passieren kann. Also hier im Verhaltensbaum bewegt es sich
vielleicht und
wartet dann sofort
aus irgendeinem Grund. Also lass mich das einfach verbinden
und einfach diese beiden verbinden. Lass mich speichern und klicke
dann auf Play. Und wenn ich mir
meinen Verhaltensbaum ansehe, siehst du hier, dass ich das Spiel jetzt
spiele. Und ich denke, das
passiert letztendlich , weil ich in unserem Code
nichts falsch sehe. Es findet einen zufälligen Punkt. Es versucht, bis zu diesem Punkt
zu gelangen. Aber Sie können hier sehen, dass unser
Verhaltensbaum verrückt wird. Es bewegt sich tatsächlich
an diesen Ort,
findet einen neuen Standort, bewegt sich, findet, bewegt sich, bewegt sich,
findet sich,
findet sich, findet sich, findet. Das macht es immer wieder. Es
findet einen neuen Standort. Obwohl der
Standort weit weg ist, bewegt
er sich irgendwie einen kleinen Schritt, bevor er
anfängt, nach einem neuen Ort zu suchen. Auch hier denke ich, dass der
Blackboard-Schlüssel hier auf
Self Actor eingestellt ist , dass dies hier der Fehler sein
könnte. Gehen wir also zurück, beenden den Wiedergabemodus und
klicken wir auf diesen Schritt. Also habe ich irgendwie vergessen, diesen Ort hier zu
ändern. Also lasst uns das hier wieder verbinden. Klicken wir auf Play. Jetzt. Du siehst, jetzt funktioniert es
tatsächlich. Die Schnecke bewegt sich also. Es ist an einen Ort umgezogen. Es wartet bis
zu drei Sekunden und dann bewegt es sich wieder. Das war also der Bug. Und ich möchte
das nicht aus dem Video löschen ,
weil ich Ihnen
zeigen möchte , wie Sie Dinge
debuggen, weil Sie auf Probleme
stoßen werden. Und wenn Sie versuchen,
die Druckzeichenfolge zu verwenden , um
eine Zeichenfolge auf den Bildschirm zu drucken. Und wenn es eine Zeichenfolge druckt, wissen
Sie, dass dieser Code funktioniert, weil er die Dekodierung für Sie
auslöst und das Ereignis ausgelöst
wird , weil er die Dekodierung für Sie . Sie können auch versuchen, den Ort
herauszufinden, den Sie sehen möchten,
ob er einen zufälligen
Ort findet oder nicht? Dann war das Letzte
offensichtlich, dass der
Verhaltensbaum solide ist. Es wurde wahnsinnig. Und das liegt daran
, dass
es zu diesem Zellfaktor
in der Blackboard überging , was keinen Sinn ergab. Es sollte
an diesen x-Ort umziehen. Jetzt funktioniert es also hier. Aber Sie können sehen, dass
unsere Animation natürlich nicht
funktioniert, weil wir keine Animation für
die Schnecke oder für
einen der Feinde
hinzugefügt haben. Also lasst uns das in
der nächsten Lektion machen.
53. Zustand der feindlichen Bewegung: Okay, was
wir in
dieser Lektion tun müssen , ist, dass wir
den Bewegungsstatus für
diesen Feind ändern müssen den Bewegungsstatus für , damit er das Flipbook
ändert. Wann immer es sich bewegt,
hat es das Bewegungs-Flipbook, und wann immer es im Leerlauf ist, hat
es das Leerlauf-Flipbook. Also tatsächlich der gleiche Prozess wie
wir mit unserem Spieler gemacht haben
, wenn wir uns bewegen und
anhalten. So das Gleiche. Gehen wir jetzt zurück
zur feindlichen Basis. Und drinnen von hier löschen
wir alle
diese Standardereignisse. Und das, was wir letztendlich
tun wollen, ist, eine
neue Variable zu erstellen und
sie auf bewegt sich. Also
schreibe ich eigentlich ein B davor. Denn Boolean verschiebt
diesen booleschen Wert hierher. Wenn ich es rausziehe,
möchten wir es auf Rep Notify einstellen. Denken Sie also daran, dass alle
visuellen Änderungen unterbrochen werden
müssen, und das
Ändern des Flipbooks ist eine visuelle Änderung, damit alle
Kunden es sehen können. Und das wollen wir tun. also hier in der Unwrap Funktion
daran, dass
eine On-Ramp-Funktion erstellt wird wenn Sie etwas tun,
um die Benachrichtigung einzuwickeln. Und drinnen von hier, nehmen
wir es einfach. Also nicht gerade,
ich arbeite nur rückwärts, damit du
sehen kannst, was ich meine. Dies ist also das Endergebnis, wird bewegt auf „true“ gesetzt. Erstellen Sie also einen Zweig. Wenn dies auf „true“ eingestellt ist, nehmen
wir dieses
Sprite und setzen das Flipbook. Jetzt werden wir dieses Flipbook zwei
setzen. Wenn es sich also bewegt, werden
wir
nicht im Leerlauf sein. Wir werden hierher ziehen. Wenn es sich bewegt, werden
wir uns bewegen. Und wenn es im Leerlauf ist, wenn es sich nicht bewegt, werden
wir so im Leerlauf sein. Aber jetzt können Sie sehen, dass
wir auswählen müssen, wir müssen auch
das Schwein auswählen. Also müssen wir
das dynamisch machen. Wenn Sie also zwei Feinde haben, ist
dies nur für einen Feind, er funktioniert nur für die Schnecke. Wir brauchen es auch für das Schwein. Und denken Sie daran, wie wir
es mit dem Spieler getan
haben, müssen Sie eine Struktur erstellen. Gehen wir zum
Structures Ordner. Lasst uns mit der rechten Maustaste klicken und eine neue Struktur
erstellen. Klicken Sie also mit der rechten Maustaste und lassen
Sie es uns unter Blaupausen und
Struktur finden und nennen Sie
es s t animal info. Hier drin werden
wir nur zwei Dinge schaffen. Wir werden
die Animation im Leerlauf erstellen und
die Run-Animation erstellen. Wir können es
einfach „Move Animation“ nennen. Wir nennen es einfach Move,
Move Animation. Und das ist offensichtlich ein
Papier-Flipbook wie dieses. Und das ist auch ein Papierbuch. Okay, also haben wir diese beiden, und Sie können es erraten, dass wir
später
den Feinden Gesundheit verleihen
können , damit wir später
tatsächlich
eine neue Variable erstellen und sie gesund nennen können. Alle Informationen über
den Feind werden also hier
gespeichert. Wie viel Gesundheit haben sie, wie viel Schaden sie anrichten und wie viel Gold sie dir
geben und so weiter. Also
werden alle Tierinformationen später hier unten sein. Gehen wir jetzt zurück
zur feindlichen Basis. Und jetzt können wir die
Struktur und die Variablen hinzufügen. Und wir können es Tierinfo nennen. Wir können es hier auswählen und
wir nennen es „st animal info“. Und das ist die Struktur. Jetzt haben wir diese Struktur, wir können sie herausziehen
und genau wie zuvor, Ausbrechen und auf Break klicken , um alle
Variablen zu sehen. Dann kannst du den Leerlauf hinzufügen. Sie können sehen, dass wir die ADL hier
oben haben und sie gehen hierher, wird ein Durcheinander sein weil sie so gekreuzt wird. Ich bleibe gerne sauber
in meinem Projekt. Also was ich tun werde, versuchen
wir,
hier oben im Leerlauf zu sein, damit wir
das rückgängig machen können, indem wir Nüsse sagen. Also nicht b bedeutet NICHT boolescher Wert. Wenn das bedeutet, dass es jetzt ist, wenn sich
der Feind nicht bewegt, also wenn diese Bewegung falsch ist, also wenn er sich nicht bewegt, dann sind wir im Leerlauf. Lassen Sie mich also dieses
Flipbook löschen und hier verbinden. Also was wir hier tun müssen, also wenn du dich nicht bewegst, wenn das stimmt, bist du im Leerlauf. Also verbinden wir uns hier oben im
Leerlauf. Und ich
kopiere das hier unten, ihren Hals, die Sprites. unten gibt es Connect false Hier unten gibt es Connect false und verbinde
sie hier runter. Wenn wir uns also nicht
bewegen, sind wir im Leerlauf. Wenn wir uns bewegen, sind
wir in der
Move-Animation. Und damit das funktioniert, musst
du gehen. Jetzt haben Sie
diese beiden Variablen und müssen sie festlegen. Und denken Sie daran, wenn Sie der Elternklasse eine
Variable hinzufügen, also befinden wir uns innerhalb
der feindlichen Basis. Alle Child
Blueprint-Klassen erben diese Informationen. Schwein und Schnecke sind also
Kinder der feindlichen Basis. Gehen Sie also zum Schwein und öffnen Sie den vollständigen
Blueprint-Editor hier in den Standardeinstellungen der Klasse. Sie können sehen, dass die
Animal-Info-Variable hier ist , weil Sie sie der
übergeordneten Klasse hinzugefügt haben. Hier können Sie also die
Leerlauf-Animation für das Schwein auswählen. Suchen Sie also nach Leerlauf, nehmen Sie das und nach dem Mond und wählen Sie das aus. Animation verschieben. Das Gleiche hier
für die Schnecke. Öffnen Sie es also, öffnen Sie die vollständige
Blueprint-Editor-Klasse Standard-Tierinformationen, suchen Sie nach Leerlauf
und fügen Sie die Schnecken hinzu, suchen Sie nach Bewegung und fügen Sie auch die
Bewegung für die Schnecke hinzu. Okay, also haben wir das jetzt und gehen wir zurück zur Basis. Dies ist also das
Endergebnis, das wir anstreben
werden. Und lassen Sie mich das einfach so
näher bringen, damit
es besser organisiert ist. Gehen wir zurück
zum Event Graph. Jetzt haben wir diese
Variable, die wir festlegen müssen, und wir setzen
dieses Gefolge immer so ein, dass sie
durch einen Server kämpfen. Lassen Sie uns einen benutzerdefinierten
Wert machen, nennen Sie es Serverbewegungszustände wie diesen, und wir werden ihn durch
den Server laufen und sind zuverlässig
und wir können dies jetzt verbinden. Denken Sie nun an diese
Servervariablen, wir müssen uns auch durch
eine normale Variable führen. Und es heißt Bewegungsstufe. Lassen Sie uns also eine
direkt in einem
Blueprint-Interface erstellen . Weil wir jetzt einen haben. Gehen wir zu Schnittstellen
oder zur feindlichen Basis. Und nennen wir es hier. Status der Bewegung. Lass uns kompilieren. Und hier in der feindlichen Basis haben wir eine Variable
namens „bewegt“
gemacht, also brauchen wir einen booleschen Wert. Erstellen wir also einen booleschen Wert und die Eingabe namens D bewegt sich. Lassen Sie uns kompilieren
und speichern und gehen wir zurück
zur feindlichen Basis. Jetzt können wir es also
„Bewegungsstaaten“ nennen. Und das können wir als Ereignisse bezeichnen. Und wir können dieses
Serverereignis jetzt von hier aus ausführen. Okay, jetzt
arbeiten wir also rückwärts. Also beginnen wir mit diesem Status der
Ereignisbewegung. Es wird
durch den Server gehen und dann diese
Disrupt-Benachrichtigungsfunktion einstellen. Und je nachdem, ob
es stimmt oder nicht, wird
das Flipbook festgelegt. Also müssen wir
dieses Event irgendwo durchführen. Und ich glaube, das
Beste, oder ich finde, ich habe festgestellt, dass der beste Weg diesen Bewegungsstatus auszuführen, hier im Verhaltensbaum am Ende definierten zufälligen Ort
ist . Wenn es also
einen zufälligen Ort gefunden hat, lassen Sie uns weitermachen und
sagen, dass er sich bewegt. Also werden wir den
Bewegungsstatus auf wahr setzen. Und dann geht es
weiter und geht an diesen Ort. Hier haben wir also schon
einen Hinweis auf unseren Bauern. Das ist also sehr einfach. Wir können dies übernehmen und den
Bewegungsstatus festlegen und diese Nachricht auswählen , da es ein Blueprint-Interface handelt.
Genau so. Und tatsächlich ist dies eine
Spielerbasis, die die falsche ist. Lass uns zurückgehen und sehen
, wie wir es nennen. Eigentlich nannte ich
es einfach einen Bewegungszustand. Lassen Sie mich, lassen Sie mich es „Bewegungsstatus
einstellen“ nennen. Ich denke, das ist viel besser. Wenn Sie diese auch nennen, bleiben
Set-Bewegungen
so. Kompilieren. Gehen wir darauf zurück und
sagen Set Movements, States. Und hier ist es in der gegnerischen Basis, nicht in der Spielerbasis. Wie auch immer, Nachricht
wurde hier ausgewählt. Jetzt haben wir gesagt, dass die Bewegung
sagt, dass sie wahr sind. Jetzt bewegt es sich also. Aber wir müssen es
irgendwann falsch setzen , denn wenn Sie
jetzt auf
Play klicken und es ausprobieren können, können
Sie sehen, dass es sich jetzt bewegt. Und lassen Sie mich die
Bewegungsgeschwindigkeit ein wenig
reduzieren , denn
jetzt geht es so schnell. Gehen wir also für die Schnecke
zur Charakterbewegung. Und ich setze
die Bewegung auf 45 ein. Ich habe es einfach viel gemacht und
ich denke, fünfundvierzig war eine gute Nummer für diese
Metal Story Schnecke. Sie können also sehen, dass es sich bewegt,
aber wenn es im Leerlauf ist, wird
es niemals aufhören wie
im Leerlauf-Animations-Flipbook. Und das liegt daran, dass
wir den booleschen Wert nie auf falsch
gesetzt haben. Es
weiß also nicht wirklich, wann
das Leerlauf-Animations-Flipbook
abspielen soll das Leerlauf-Animations-Flipbook wenn es im
Leerlauf ist, es bewegt sich immer noch. Also müssen wir einstellen, wenn ich zurück zur Schnittstelle gehe, müssen
wir dies irgendwann auf
false setzen. Machen wir das hier
im Verhaltensbaum, das können
wir auch tun. Also bewegt es sich an diesen Ort
und bevor es gewichtet wird, machen
wir weiter und setzen
diesen booleschen Wert auf falsch. Machen wir also hier eine neue Aufgabe und klicken Sie einfach auf
diese hier unten. Also machen wir eine neue Aufgabe. Und diese, ich
nenne sets bewegung boolean, setze Bewegungsball, was
bedeutet, dass Bewegung Boolean, das ist das
einzige, was tut. Genau wie das, was
ich dir vorher gesagt habe, müssen
wir mit
einer Empfangsausführung Ai beginnen. Und wir müssen
innerhalb des Finishausführungen fertig werden. Und wir müssen es
erfolgreich machen, wenn es fertig ist. Und das einzige, was wir
tun, ist, dieses Sprichwort zu nehmen wird Feind, bekommt
feindliche Referenz. Also bekommen wir diese feindliche Referenz hier und in der Basis. Und von der Schnittstelle aus können
wir einfach ziehen und sagen
Set-Bewegungsstatus hier und die feindliche Basis. Und das einzige, was wir
tun, ist,
diesen booleschen Wert einfach auf falsch zu setzen diesen booleschen Wert einfach auf falsch zu weil wir uns jetzt
nicht mehr bewegen. Wir sind fertig mit dem Umzug. Gehen wir also zurück zum
Verhaltensbaum. Und hier können wir
BTT ziehen und sagen und diesen
Satz Bewegung boolean auswählen. Okay, also macht das Ding jetzt,
es ist, einen zufälligen Ort zu finden. Es bewegt sich an diesen Ort. Und wenn es diese Bewegung bewegt und
beendet, wird
der Boolesche Wert auf
„false“ gesetzt , also
bewegen wir uns nicht mehr. Dann wird es hier warten. Also klicken wir jetzt
auf das Thrombozyten. Eigentlich füge einfach noch ein
paar Feinde hinzu, nur damit ich nicht
auf die Schnecke warten muss, um aufzuhören. Klicken Sie also hier, und
Sie können sehen, dass es jetzt ist, dieser ist im Leerlauf
und es funktioniert gut. Jetzt ist es im Leerlauf. Und wenn es sich dann bewegt, ist
es im Movement Flip Book. Jetzt funktioniert es also einwandfrei. Was wir jetzt tun können, ist dass wir einfach noch ein
paar Feinde hinzufügen können. also Alt gedrückt halten und
ziehen, wird dupliziert. Und du kannst einfach ein
paar Feinde auf dieser Ebene duplizieren. Wie viele du willst. Ich werde es eigentlich nicht platzieren,
lasst uns sie hier platzieren. Warum, warum nicht? Gehen wir zum Feind und ich lege
das Schwein hier hoch. So härtere Feinde
sind hier oben. Also lasst uns das auf 0 setzen. Und eigentlich müssen
wir anstelle von 0 einen setzen, damit es
nicht auf den Kacheln liegt. Aber lassen Sie uns zum Beispiel
für Schweine hier oben hinzufügen . Und ja, ich glaube, ich
denke, das ist in Ordnung. Nehmen wir an, lasst uns auf Play
klicken, um zu sehen, ob alles funktioniert, anstatt dass die Schweine zu schnell sind. Gehen wir also zurück zu den Bildern. Und weitere Schweine, die ich
anrufe
, setze ich es auf 90 Jahre. Ich glaube, die 90 habe ich
das auch getestet. Aber die Schweine sind eine gute Zahl. Und du kannst sehen,
dass sie dahinter stecken. Also müssen wir
sie tatsächlich ein wenig voranbringen. Der schnellste Weg, dies zu tun, besteht darin sie hier
im Outliner
auszuwählen. Das sind also die Schweine. Das sind die Schnecken. Halten Sie die Umschalttaste gedrückt, wählen Sie den letzten aus, also haben wir sie alle und
setzen es hier im Y auf eins. Und klicken Sie auf den Spieler. Der Spieler
statt einem möchte ich, dass er vor den Feinden steht. Klicken Sie also auf zwei auf
diesen Spielerspawn, also stehen wir vor
allen Feinden. Und jetzt klicken wir auf Play. Und so sieht es aus. Also lassen wir die Schweine da
rauf laufen. Der Leerlauf funktioniert einwandfrei und die Bewegung
funktioniert auch gut. Sie können sehen, dass diese Schnecken ein bisschen oben
sind. Was Sie tun können, ist auf die Schnecke zu
klicken. Die Sache ist, wenn Sie diese Kapsel
vergrößern, wird
sie die Schnecke
nach oben schieben, damit sie nicht so
aussieht, als wäre sie auf dem Boden. zum Beispiel für die Schnecke Wenn Sie zum Beispiel für die Schnecke nur
11 hier unten und hier oben versuchen, klicken Sie auf zusammengesetztes Speichern. Und du kannst sehen,
dass es jetzt auf dem Rasen ist, jetzt fliegt es nicht hoch. Das Problem ist jetzt und wir werden es in
der nächsten Lektion beheben, Sie können sehen, dass es sich immer noch bewegt, wie es ist, es ist
tatsächlich im Leerlauf, aber es bewegt sich so. Sie stürzen sich aus. Dies liegt daran, dass die
Animation im Leerlauf abgepumpt wird. Also habe ich ein paar Zeit damit verbracht
zu sehen, warum es das gemacht hat. Und ich habe immer noch keine Ahnung,
warum es das macht. Aber ich denke, meine Theorie ist, dass es
versucht, einen Punkt in
der Navigation zu finden , und dann nervt es , weil es sich
tatsächlich noch bewegt. Es ist nicht im Leerlauf, aber es
kann sich nicht in diesen Bereich bewegen. Und das liegt an
dieser Kapsel hier. Es macht eine seltsame Kollision und es beherbergt den Feind. Lassen Sie uns also zur nächsten
Lektion übergehen und diese Fehler beheben.
54. Beheben von Bewegungsfehlern und Fixing: Okay, um den letzten
Dollar aus dem letzten Video zu reparieren, müssen
wir zu gehen, fangen
wir mit dieser Schnecke an. Versuchen wir also, diese Kapsel zu
vergrößern. Wie weit bis 2828
war die beste Zahl, um es für diese Schnecken zu
tun. Und lassen Sie uns diese Schnecke minus
18 bewegen , um zu sehen, ob sie am Boden
ist. Wenn Sie es also auf minus
18 senken, bewegt sich auf dem Boden. Und nur um zu überprüfen und zu sehen, ob
es hier am Hill abgehört, scheinen
sie sich jetzt reibungslos zu
bewegen. Okay, das sieht also aus,
es sieht jetzt gut aus. Wenn es also ausbucht, kannst
du diese Kapsel
hier vergrößern und sie kann
diese Schnecke runterbewegen , damit sie
auf dem Gras laufen lässt, wenn du
es nicht tust, sie schwebt auf dem Gras. Und für die Schweine habe
ich die Kapsel 30 mal 30 gemacht, und dann bewege ich
das Schwein um minus acht, damit auch eines größer
ist. Dieser ist jetzt groß, also habe ich festgestellt,
dass dies
die beste Lösung war , um dieses Abhörproblem zu beheben. Und jetzt können wir sehen, dass sich alles richtig
bewegt und wir haben
kein Problem. Auch hier, wenn Sie
das Problem haben, wo der Feind bewegt und immer noch am selben Ort im
Leerlauf ist. Sie können versuchen, die Kapselgröße zu erreichen und dann den Feind nach unten zu bewegen. Jetzt haben wir
all diese Fortschritte gemacht. Bisher gute Arbeit.
Sie sind in diesem Kurs tatsächlich sehr weit
fortgeschritten. Und das nächste, was
wir tun könnten, ist Schaden oder vielleicht
brauchen wir hier oben eine Leiter. Also sehe ich dich, was ich für den nächsten Abschnitt
mache. Und bis jetzt sieht
alles gut aus. Wenn du mehr
Feinde hinzufügen willst, kannst du dies tun. Wenn Sie
es wieder selbst machen möchten, können
Sie dies nicht auf
Steam oder anderswo veröffentlichen. Dies dient nur zu
Bildungszwecken. Aber wenn Sie nur üben
wollten, benutze
ich diese Website namens Maples , dass ich ein Ahorn-Simulator bin. Sie können also einfach hier unten klicken und einen neuen Charakter erstellen. Oder du kannst hier ein
neues Monster erschaffen. Ein Mob kann hier sehen,
dass du Karten erstellen kannst. Sie können auswählen, welche Art von Mob Sie
erstellen möchten, vielleicht einen Schleim, etwas anderes, damit
Sie mehr Karten erstellen
können . Danach können Sie sie normalerweise horizontal drehen, weil sie es müssen sei in diese Richtung,
bevor es funktionieren kann. Manchmal braucht man
Photoshop, um sie zu drehen. Dann können Sie einfach die Tabellenkalkulation
herunterladen. Und dann kannst du diese
Schleimtabelle verwenden und du kannst sie hier
in unsere Projekte importieren. Wenn ich also hierher
und unser Projekt zurückgehe, kannst
du diese
Texturen einfach wieder in die Vermögenswerte und
Feinde importieren , und du kannst
den gesamten Prozess erneut und weitere Feinde hinzufügen. Also, was du mit dem Spiel machen
willst, kannst
du versuchen herumzuspielen
und Spaß damit zu haben. Sagen wir also: Nun, und lasst uns zur nächsten Lektion
übergehen.
55. Den Seil hinzufügen: Hallo an alle und willkommen zurück. In diesem Abschnitt werden wir damit
arbeiten, dass der Rückgang mechanisch ist. So gute Arbeit, um es
so weit zu schaffen. Sie haben
viele Fortschritte gemacht. Und du siehst,
dass wir viel gemacht haben. Und in diesem Abschnitt, in
dem der Kunde Mechaniker ist, müssen
wir viel lernen. Also lasst uns weitermachen und anfangen, das Seil-Sprite
hinzuzufügen. Im Kursmaterial. Ich habe für
dich eingeschlossen, die Seile hell. Wenn Sie zu den
Kursmaterialien gehen und dann in die Umgebung gehen. Und hier drin hast du
diese Textur namens Seil. Gehen wir also zurück zu
unserem konstanten Ordner. Und innerhalb der Assets, und wir haben bereits einen
Umgebungsordner. Also lade
ich mein Seil hoch,
innerhalb von Texturen , also ziehe es in den
Texturen-Ordner. Okay, also drinnen, klicken
wir mit der rechten Maustaste. Gehen Sie zu Sprite-Aktionen und
wenden Sie Papier auf die Einstellungen an. Versuchen wir darauf zu klicken
und dann ein Sprite zu erstellen. Bisher nichts Neues. Das haben wir
bisher gemacht. Ich nenne es als Seil. Okay, jetzt haben wir
dieses Seil Sprite. Bisher haben wir Flipbooks
gemacht. Und wie Sie hier sehen können, ist
das Seil offensichtlich
kein Flipbook, es ist kein animiertes Seil. Ziehen wir es also hierher
in die Umgebung. Und jetzt arbeiten wir
mit einem Sprite zusammen. Ich glaube, dies ist
das erste Sprite das
wir unserer Umgebung hinzufügen
werden. Und bevor wir das Sprite hinzufügen, kannst
du das Sprite ziehen und es so
der
Umgebung hinzufügen und vielleicht
das y auf 0 oder eins setzen. Und du könntest das Seil einfach
so
platzieren und alles ist
gut und das Seil wird hinzugefügt. Aber das Problem dabei ist, dass
wir
dem Seil Code hinzufügen werden , weil unser Spieler damit interagieren
wird. Also lasst es uns hier löschen. Und stattdessen werde ich es
zu einer Blaupause machen. Wann immer Sie also etwas
haben, mit
dem der Spieler interagiert, sollten
Sie automatisch darüber nachdenken es zu einer Blaupause zu machen. Gehen wir also zu den
Blaupausen und dies ermöglicht es uns, einen
Code für das Seil zu erstellen. Lassen Sie mich also mit der rechten Maustaste
hier klicken und
einen neuen Ordner erstellen und ihn Klettern
nennen. Hier drüben. Lasst uns mit der rechten Maustaste klicken
und zu Blueprints gehen. Und dann klick einfach hier
hoch, Blueprint Class. Klicken Sie noch einmal hier und
suchen Sie hier unten nach Papier. Und wir wollen ein Sprite machen. Bevor wir also Flip
Books und Kachelkarten erstellt haben, aber dieses Mal haben wir auch Charaktere
erstellt. Dieses Mal werden wir
ein Sprite erschaffen. Dafür
nenne ich es Kalk als Basis. Dies ist also der Basis-Blueprint
für den Kunden, der
genau dem entspricht, was wir für
die Charakterbasis
und die Spielerbasis hatten . Wir haben jetzt einen Kunden, der
ansässig ist, weil es in Ordnung ist. Du hast gerade ein Seil, aber was wäre in Zukunft, wenn
du eine Leiter haben wolltest? Was wäre, wenn Sie eine
Pfeife wie
eine Branchenkarte haben möchten , dann haben Sie vielleicht Rohre die Sie als
Buchstaben oder Seile verwenden. Wir haben also eine
Klemmbasis und dann können wir viele Kletterobjekte
hinzufügen. Also Leitern, Seile, Pfeifen, was auch immer Sie Ihrem Spiel
hinzufügen möchten. Lassen Sie uns nun mit der rechten Maustaste auf diese Kletterbasis klicken und
eine Child Blueprint-Klasse erstellen. Und daraus werden wir
das BP-Seil erstellen. Okay, lasst uns alles ablegen und
speichern bis jetzt. Also für das Kletterseil oder weitere Seil hier doppelklicken. Und drinnen haben wir das Renderobjekt oder
erinnern uns an Renderkomponenten. Und lassen Sie uns hier unsere Zeile auswählen. Also auf der Suche nach Seil
und wähle unser Seil aus. Okay, also jetzt wird
dieser hinzugefügt. Und was wir hier tun können, ist, dass wir jetzt unsere Blaupausen ziehen
können, die in das Level
gezogen werden. Lassen Sie uns den Standort auf 0 setzen. Ich setze es auf
eins, weil ich erinnere mich daran, dass die Basiskacheln bei
0 sind und ich nicht alles
andere stören möchte. Also setze ich das auf
eins und lass es uns hierher verschieben. Ich weiß nicht, vielleicht so
etwas. Und ich werde
diesen Feind bewegen, damit ich
tatsächlich sehen kann , wo
ich das platziere. So etwas
und ein bisschen unten,
so dass dieser Teil hier oben
an den Fliesen hängt. Jetzt können Sie sehen, dass
das Seil unser
Navigationsnetz tatsächlich stört, sodass sich unsere Feinde nicht mehr hierher
bewegen können. Lasst uns also auf
die Kletterbasis klicken. Das wollen wir nicht.
Klicken Sie also auf die Kletterbasis. Entfernen wir es von allen
Clientobjekten. Klicken Sie hier
auf die Render-Komponenten. Lasst uns jetzt einfach hören bei der Kollision oder gar keiner
Kollision. Und der Spieler kann nicht darauf
treten. Und es wird
keine Überlappungsereignisse erzeugen. Die Überlappungsereignisse, die
wir später durchführen werden, werden
wir
Kollisionsfelder hinzufügen. Es ist also nicht wirklich die
Render-Komponente selbst. Es sind die Kollisionsboxen die wir machen werden,
die Überschneidungen. Sie können also sehen, dass es sich
nicht mit
irgendetwas überschneidet und
alles ist repariert.
56. Rope: Arbeiten wir nun mit den
Seilüberlappungsereignissen. Für die Seilüberlappungsereignisse brauchen
wir also eine Kollisionsbox. Gehen wir also zur
Kletterbasis und fügen Sie eine hinzu. Und der Grund, warum wir es
der kolumbianischen Basis
und nicht dem Seil hinzufügen , ist dass
alle diese Objekte immer dann haben werden, wenn wir
später viele
Kletterobjekte erstellen Objekte immer dann haben werden, wenn wir
später viele
Kletterobjekte alle diese Objekte immer dann haben werden, wenn wir
später viele
Kletterobjekte Diese Kollision ist
fehlerhaft, weil all diese verklumpenden
Objekte
Kinder dieser Kletterbasis sein werden . Was auch immer wir
hier hinzufügen, gilt für alle untergeordneten Elemente hier in
der Render-Komponente. Lasst uns nur eine Kollisionsbox machen. Suchen Sie also nach Kollision und fügen Sie diesen hinzu, der
als Box-Kollision bezeichnet wird. Und lass mich es einfach
Kollisionsbox
nennen und kompilieren und speichern. Und wir
müssen hier nicht wirklich mehr tun. Also lasst uns
das minimieren und lass mich jetzt
zurück zum Seil gehen. Und lasst uns den
vollständigen Blueprint-Editor öffnen. Gehe zum Ansichtsfenster. Und drinnen müssen
wir
diesen anpassen , damit es
dieses Seil hier in
der Box füllt dieses Seil hier in . Ich werde
es jetzt schaffen 55, wir müssen das tatsächlich im Spiel
testen. Also, aber im Moment können wir es
einfach auf 55 einstellen. Oder vielleicht, wenn du es größer machen willst , kannst
du sogar 1010 machen. Und lasst uns das tatsächlich machen. Lasst uns versuchen,
zehn statt fünf zu machen. Negative Fünf sind zu
klein für diese Zahl, vielleicht wieder etwa
50 oder 6065. Auch hier müssen wir das in Spielen
testen. Ich bin mir nicht sicher, wie es gerade
aussehen wird. So etwas, wo wir es wie 40 im Z
und 101065 hier für
die Kollisionsbox
platziert haben es wie 40 im Z
und 101065 hier für
die Kollisionsbox
platziert . Also gehe ich zurück zur Kletterbasis und
für die Kollisionsbox gehe ich zur Kollision hinunter, das einzige, was ich ändern
werde, diese kann
Charaktere aufsteigen, ich gehe zu klicken und nein, ich denke vorerst
ist alles in Ordnung, also lasst uns hier
nichts anfassen. Um nun die Überlappungsereignisse zu erstellen, können
Sie wie zuvor
erneut auf
das Kollisionsfeld klicken . Gehen Sie nach
unten und klicken Sie auf diese Komponente,
beginnen Sie mit der Überlappung. Was sollte also
passieren, wenn wir anfangen das Feld hier zu
überlappen, lösche
ich
die Standardereignisse. Was sollte also
passieren, wenn wir anfangen diese Kollisionsbox zu
überlappen? Und Sie können sehen, dass die
Kollisionsbox diese ist, dieses Quadrat hier, das wir hinzugefügt haben. Was sollte also das Schloss sein, wenn der Spieler hierher kommt und auf diese
Kollisionsbox
springt, was sollte passieren? Zunächst
müssen wir prüfen, ob es
der Spieler ist , der
mit unserer Kollisionsbox interagiert. Und davor werde ich
eigentlich
sagen, dass Switch Autorität hat. Denn auch hier fügen
wir für Kollisionen hinzu, die die Berechtigung , sicherzustellen, dass es
der Server ist , der
all diese Informationen verarbeitet. Wir möchten nicht, dass der Player
schummelt, denn wieder ist
die Berechtigung der Server, die Remote ist der Client. Und wenn der Kunde
das alles macht, also wenn wir dies entfernen
und hier nur codieren, hat
der Kunde eine große
Chance auf Cheaten und wir möchten nicht wirklich dass die Kunden in unserem Spiel
betrügen. Switch hat also Berechtigung, der Server hat die
Berechtigung über alles. Und der Server prüft, ob die Clients dies tun
dürfen. Switch hat Autorität und wir
müssen dann prüfen, ob
dies die Spieler sind. Also der andere Schauspieler,
der der Spieler ist, ziehen
wir hierher und
sagen, Schauspieler hat markiert. Und wenn der Schauspieler den Tag-Player
hat und lasst uns hier einen Zweig machen. Autorität. So wie das. Es geht also durch den Server und überprüft, ob
der Schauspieler den Tag-Player hat,
was bedeutet, dass es sich um den Spieler handelt. Und lasst uns einfach sicherstellen, dass
unser Spieler dieses Tag hat. Wenn wir also zu den Blaupausen,
Spieler, Spielerbasis zurückkehren ,
glaube ich, dass wir es vorher hinzugefügt haben. Lassen Sie mich
die Standardwerte der Klasse überprüfen und hier können
Sie nach dem Tag suchen. Und hier haben wir vorhin hinzugefügt. Stellen Sie also einfach sicher, dass Sie
den Tag-Player
zu Ihrer Spielerbasis hinzugefügt haben . Also, wenn das Tag oder wenn der
Schauspieler den Tag-Player hat, was wir tun, wenn das
stimmt , wenn wir etwas tun
wollen. Und ich werde nur
eine Veranstaltung namens Can Climb veranstalten. Wenn Sie also mit
dieser Box kollidieren, können Sie klettern. Wenn Sie jedoch nicht mit dieser Box
kollidieren, bedeutet
dies, dass Sie nicht
klettern können, da kein Client in Ihrer Nähe
Objekt
ist. Also lass uns zurückgehen. Lass es mich hier wieder aufmachen. Und hier können wir sagen, wir können ein Event durchführen, das
besagt, dass er klettern kann, und das wird innerhalb
der Spielerbasis sein. Also müssen
wir drinnen zuerst eine Veranstaltung machen, und lasst uns vorerst hier
unten arbeiten. Lassen Sie mich ein individuelles Ereignis
machen ein Sturmereignis
steht, das besagt, Und dieses
können wir tatsächlich
zu einem Blueprint-Interface machen . Eigentlich machen wir das
sofort,
anstatt all diese Arbeit zu machen. Lassen Sie mich also zum
Blueprint Interface gehen
und lassen Sie mich
zur Spielerbasis gehen. Und hier drin füge ich eine
neue Blueprint-Funktion hinzu. Und lass mich sagen kann klettern. Das, was wir hier
hinzufügen möchten, ist ein boolescher Wert. Also füge ich zwei Variablen
hinzu. Erstens kann ein boolesches
Sprichwort klettern. Und lass mich hier ein B hinzufügen,
damit Boolean klettern kann. Die zweite Sache ist, dass ich
definieren möchte, dass der Client Objekt ist. Also Kunde sein. Objekt. Also ist es ein Brief, ist es eine Robe oder was auch immer es ist? Das Kletterobjekt ist also wieder das, was du hier gemacht hast. Diese Kletterbasis. Wenn Sie hier oben schauen, ist
es ein Papiersprite-Schauspieler, also brauchen wir eine Referenz dafür. Also lasst uns zurückgehen und
Paper Sprites Schauspieler
hier sagen , Objektreferenz. Jetzt haben wir den Dosenklettern
und die Objektreferenz. Okay, also Endo-Spielerbasis, wir können es jetzt nennen und sagen, dass man die Linie
klettern kann und du
hast dieses Event hier. Dies ist es also, was wir
letztendlich laufen wollen. Also hier, wenn du
in der Kletterbasis kollidierst, wenn du mit
der Kollisionsbox kollidierst. Und es ist der Spieler. Wir wollen diese Veranstaltung anrufen. Um also Ereignisse von
der Spielerbasis aus aufzurufen, müssen
wir wieder vom
anderen Schauspieler ziehen und es sagen, Referenzen
abspielen, die wir zuvor gemacht haben. Und dann können wir sagen, kann klettern. Jetzt können wir es ausführen und uns
daran erinnern, dass es sich um eine Nachricht handelt weil es sich um eine Blueprint
Interface-Funktion handelt. Hier kann also klettern. Wir müssen das nehmen, weil wir uns
jetzt überschneiden. Ja, wir wollen klettern
oder ja, du kannst klettern. Was ist das Klemmobjekt, das Sie von
hier ziehen und sich selbst sagen können. Weil denken Sie daran, dass Sie sich
in der Kletterbasis befinden. Wenn es also ein Seil ist, wenn es eine Leiter ist, wird
es uns
Selbstreferenz geben und
sich automatisch definieren , weil Sie bereits hier drin
sind. Okay? Wir brauchen also eine fertige
Überlappung oder Endüberlappung. Klicken Sie also erneut auf das
Kollisionsfeld, gehen Sie nach unten und klicken Sie auf
n-Komponente und Überlappung. Was sollte also
passieren, wenn Sie mit dieser Komponente
überlappen? Ich werde das
alles noch einmal kopieren, wir müssen es nicht schreiben. Schon wieder. Ich liebe es, Code zu kopieren und einzufügen. Also verbinde dich einfach, denk daran, all diese zu verbinden
und kann klettern. Es sollte einfach entfernt werden,
weil Sie nicht mehr
klettern können , weil Sie die Überlappung beendet
haben. das Alembic-Objekt angeht, werde
ich dies löschen
und was das bedeutet, es wird den Abfall leer
als Objektvariable sein. Die Variable wird also leer
sein, weil wir nicht mehr mit irgendetwas
kollidieren. Und das ergibt
Sinn. Also lass uns gehen, sagen
wir alles hier. Und jetzt geht es
zur Spielerbasis und
spielt dieses Event. Also für diese Veranstaltung kann hier klettern, anstatt es
direkt hier zu tun, denken Sie daran, dass wir
im Multiplayer spielen, also müssen wir es
durch die Server laufen. Erstellen Sie also ein neues benutzerdefiniertes Ereignis, das als Harvey und Lime
bezeichnet wird. Denken Sie daran, wenn
Sie Variablen festlegen, müssen
Sie dies
über den Server tun, um sicherzustellen, dass der
Client nicht betrügt. Klicken wir also noch einmal auf den Server, führen Sie ihn zuverlässig auf dem Server aus. Und jetzt können Sie diese Serverereignisse einfach
ausführen. Sie können also sehen, dass dies
das gleiche Muster ist , wie wir es hier die ganze Zeit
gemacht haben. Wie das
Gleiche beim Springen, oder es geht durch
den Server und
geht dann mit dem Sound durch den
Multicast. Und hier ist das Gleiche
mit dem Umzug falsch angegeben. Es geht durch den Server
und legt dann die Variable so fest, dass es das gleiche Muster ist, das wir
hier ständig machen. Ich würde sagen, übe einfach weiter und wir werden viel einfacher werden. Ich weiß, dass es
von Anfang an sehr schwierig ist, aber jetzt lass es uns
durch den Server laufen. Und der Server wird diese Variablen jetzt festlegen. Also noch einmal brauchen wir hier
zwei Variablen. Eine davon ist ein boolesches
Sprichwort kann klettern. Und der zweite
war ein Papierakteur
, der Objekte abnimmt. Und es war die Zeitung
ein Sprite-Schauspieler. Diese eine Zeitung ist ein heller Schauspieler. Okay, jetzt können wir die Variablen
einstellen. Klicken wir mit der rechten Maustaste auf
dieses Spannobjekt und werden zu einer Variablen befördert. Und ich werde den Platz hier unten entfernen
. Jetzt haben wir das
Kletterobjekt als Variable. Und lassen Sie uns mit der rechten Maustaste
klettern auf eine Variable steigen. Und ich werde den Abstand hier unten entfernen
. Und es heißt, wir
haben bereits diese Variable I, und ich denke, es ist
die Funktion hier. Also lass mich einfach
ein B nach vorne legen, also ist es ein boolescher Wert und jetzt können
wir es hier schreiben. So kann das Objekt klettern und pumpen. Denken Sie daran, dass wir uns auf dem Server befinden, sodass der Client keine
Ahnung hat, auf welche Werte diese Variablen festgelegt sind, da Sie
sie auf dem Server festlegen. Wenn ich also als Client spiele, hast du den Server hier. Aber wenn ich als
Kunde spiele,
habe ich jetzt keine Ahnung, was
der Aufstieg ist. Also kann ich eigentlich einfach
auf den Bildschirm drucken, damit wir tatsächlich sehen und
daraus lernen können. Wenn ich diesen booleschen Wert ziehe, drucke
ich den
Wert dieses Booleschen heraus. Also, wenn ich der Server bin, ist
das jetzt der Server
und ich habe damit gelebt. Sie können sehen, dass es gerade
falsch steht. Das liegt daran, dass wir es nicht
wirklich durchlaufen. Also lasst uns das jetzt machen. Lasst uns die verbinden. Also das Ereignis, also geht es von dieser Kollisionsbox
zur Zeile hier. Es wird es auf „wahr“ setzen. So kann klettern ist auf „true“ eingestellt. Jetzt geht es zur Spielerbasis und
lasst uns diese verbinden. Und es wird den ganzen Weg hier
durchgehen und es
wird es ausdrucken. Jetzt wird es also wahr sagen. Lasst uns hierher springen. Und du kannst
sehen, dass es wahr ist, wenn wir kollidieren und falsch sagt, wenn
wir nicht mehr kollidieren. Das ist also richtig. Jetzt lasst uns hier als
Kunde spielen. Ich laiche als Kunde. Und Sie können als Kunde sehen, es sagt wahr. Aber natürlich sagt der Client,
dass es der Server ist. Sie können sehen, dass es als Server
ausgedruckt wird, aber ich bin der Kunde. Dies ist das Problem. Ich als Kunde habe
keine Ahnung, was diese Werte sind, weil
ich sie nicht sehen kann. Der Server hat
mir diese Informationen nicht gegeben. Deshalb ist es so wichtig
, Dinge zu replizieren. Dies ist die Basis von
Multiplayer und Unreal Engine. Klicken wir also auf diese
Variable und replizieren Informationen zurück an
die Kunden
, damit die Kunden sehen
können, wie hoch der Wert ist. Ok, jetzt wo sie repliziert
sind, lassen Sie mich löschen, die in der Zeichenfolge
sind. Also, wenn du jetzt
auf Play klickst und du als Kunde
als dieser Charakter spielst, obwohl du
springst und siehst dass es der Server ist, der sie
ausdruckt? Das ist richtig. Es ist der Server, der diese Variablen tatsächlich
setzt. Aber jetzt, da Sie
sie wieder an den Client replizieren, kann
der Client tatsächlich
den wahren Wert sehen ,
wenn er wahr oder falsch ist. Denken Sie also daran,
Variablen zu replizieren , die ebenfalls zum Client
zurückkehren müssen. Damit dies klettern kann, können
wir von diesem
booleschen Wert ziehen und einen Zweig machen. Wenn du also klettern kannst, müssen
wir etwas tun. Wenn du nicht klettern kannst, müssen
wir etwas anderes machen und das werden
wir
in der nächsten Lektion tun.
57. Auf- und Down: Lassen Sie uns dem Spieler nun
die Möglichkeit geben, sich an diesem Seil
hier auf
und ab zu bewegen . Um nach oben und unten zu gehen. Gehen wir zurück zu
den Blaupausen und fügen
wir die Bewegung
innerhalb der Spielerbasis hinzu. Also drinnen hier,
bisher haben wir diesen namens „move
right“ und „links“, aber wir brauchen einen neuen
namens „Move up and down“. Lassen Sie uns also tatsächlich neue Eingaben
machen. Gehen wir also zurück zu Edit
- und Projekteinstellungen. Denken Sie daran
, dass wir das vor einer Weile gemacht haben. Also hoffe ich, dass du dich daran erinnern kannst. Gehen Sie also zu den
Projekteinstellungen und klicken Sie auf die Eingaben. Und da drinnen haben
wir das bisher. Machen wir ein neues
Zugriffs-Mapping und nennen wir es oben und unten, rechts und links, wenn Sie möchten. Sie können auch hören, dass
Lipsky falsche gemacht hat. Also hier möchte ich hier
auf dieses Plus klicken, du kannst weitere
Schaltflächen hinzufügen, wenn du willst. So zum Beispiel der
Pfeil nach rechts und der
Pfeil nach links auf Ihrer Tastatur. So funktionieren sowohl da als auch rechts und
links auf der Tastatur. Und denk daran, dass
du für die Linke minus eins schreiben musst. Für den Fall, dass Sie
es auch in Ihrem Spiel haben möchten, können
Sie sogar einen Controller
hinzufügen, mit dem Sie spielen können, aber wir brauchen dort ein
bisschen mehr Setup. Konzentrieren wir uns also hier auf sie. Bewegen Sie sich auf und ab. Und wir können W benutzen, um nach
oben zu gehen und S um nach unten zu gehen. Und wieder müssen wir
minus eins für die S schreiben ,
also gehen wir als eins hoch, minus eins für das Absteigen. Wenn Sie möchten, können Sie Ihre Tastaturtasten
hinzufügen. Also Pfeil nach oben, Pfeil nach unten. Und lasst uns ein Minus
auf dem Pfeil nach unten machen. Okay, jetzt sind wir auf und ab
gegangen. Lasst es uns schließen. Und hier drin
schreibe
ich es als
erstes hier oben. Dies ist unser Hauptereignis. Lassen Sie uns also schreiben, nach oben,
unten gehen und lassen Sie uns
dieses Achsenereignis auswählen. Bewegen Sie sich also auf und ab. Also bevor du hierher zurückgehst,
hast du gesagt, kontrolliere Rotation
und dann hast du
den Vorwärtsvektor bekommen . Vielleicht kannst du es schon
herausfinden. Also was wir hier schreiben werden
,
also bekommt hier die Kontrolle Rotation. Dann willst du es nach oben
bringen Vektor. Jetzt gehen
wir also hoch und runter. Fügen wir noch einmal Bewegungseingaben
hinzu,
genau wie zuvor. Verbinden wir es hier und verbinden wir
den Achsenwert hier. Wenn Sie nun kompilieren
und auf Speichern klicken, klicken Sie auf Play. Und wenn Sie auf
das Auf- und Abwärts klicken, sehen
Sie, dass
wirklich nichts passiert, aber Sie haben Ihren Code geschrieben. Das Problem ist hier
unwirklich, dass das
Auf und Ab
nur funktionieren wird, wenn Sie
Ihren Bewegungsmodus wechseln. In der Charakterbewegung können
Sie also sehen, dass wir
verschiedene Bewegungsmodi haben. Im Moment bist du in
der Gehbewegung. Also haben wir unsere
Gehgeschwindigkeit festgelegt und so weiter. Also sind wir in der Tat
Charakterbewegungen. Aber wenn du auf und ab
gehst, musst du
deine Bewegung tatsächlich auf das Fliegen umstellen. Also fliegst du tatsächlich. Technisch gesehen. Wir müssen
es darauf umstellen und das
werden wir in der nächsten Lektion tun. Also nicht im Moment. Dies ist der Grund, warum
dies momentan nicht funktioniert. Aber bevor wir hier enden, lassen Sie mich
diesen booleschen Wert hier hinzufügen. Seitdem haben wir es schon geschafft. Wir wollen uns nur auf und
ab bewegen , wenn wir Wesen
anwenden. Wir sind also nicht daran interessiert
, das zu tun , wenn wir nicht klettern. Also ziehe ich es hierher
und mache einen Zweig hierher. Wenn dieser boolesche
Aufstieg also wahr ist, werden wir
diesen Code ausführen, da es nicht wirklich sinnvoll diesen Code
auszuführen, wenn
Sie nicht klettern können. Okay, also das war es für
dieses Video, sehr kurz. Aber später werden wir
jetzt in der nächsten Lektion tatsächlich
die Kletterkonditionierung hinzufügen jetzt in der nächsten Lektion tatsächlich
die . Wir legen also einige Regeln fest,
wann der Spieler Burnout klettern
kann. Lasst uns also zur
nächsten Lektion übergehen.
58. Climb: Jetzt fügen wir einige
Konditionierung und die Regeln hinzu, wann
der Spieler klettern kann. Gehen wir also zurück
zur Spielerbasis. Und statt der Spielerbasis
sollten wir zu diesem gehen, wo
wir aufgehört haben. Sie können klettern. Wenn Sie also jetzt noch einmal, lassen Sie mich Sie
hier in den Blaupausen
innerhalb der Kletter
- und Kletterbasis daran erinnern , Sie
mit der beginnenden
Überlappungskollisionsbox interagiert . Und jetzt kann ich klettern stimmt. Was also passiert, wenn
sie klettern können, stimmt. Wenn die Kuh klettern kann, stimmt es. Sie möchten überprüfen, ob der
Spieler die W-Taste drückt. Bewegen Sie sich also nach oben, weil
der Spieler klettern will, weil wir hier nicht wirklich klettern
wollen. Wenn der Spieler nicht nach oben oder w
drückt, sind
wir nur daran interessiert,
dass der Kunde immer dann ist, wenn der
Spieler nach oben drückt. Das ist also etwas
, das Sie überprüfen müssen. Also lasst uns wieder hierher gehen. Und wenn Sie
hier in der Bewegung nach oben drücken, denken Sie daran,
dass es plus eins gehen wird. Wenn du auf S klickst, geht es minus eins, wie wir bereits gesagt haben. Also werde
ich das tatsächlich in
eine Variable verwandeln , damit wir das später verwenden
können. Also lass mich mit der rechten Maustaste klicken. Eigentlich können wir es nicht
wirklich direkt einstellen. Das können wir nur
im Einzelspieler machen. Also müssen wir
es wieder durch den Server laufen. Lassen Sie mich also hier ein neues Ereignis erstellen, benutzerdefiniertes Ereignis und nennen Sie
es den Wert der Z-Achse. Denn denken Sie daran, z ist, wir bewegen uns auf und ab
und dies ist die Z-Achse. Stellen Sie also Z x x, z-Achsenwert ein. Und lassen Sie uns es
durch den Server laufen, den Wert der z-Achse des
Servers gesetzt. Ich bin eigentlich, dass wir das
über die Schnittstelle, das Blueprint Interface
und die Playerbasis tun können. Also lass mich das stattdessen
machen. Interfaces Player Base und
lass mich eine neue Funktion erstellen, nenne sie den Wert „z-Achse“. Und offensichtlich gibt es, dass der
Wert hier ein Float ist, das
versuchen wir zu setzen. Lassen Sie mich also einen
Float-Eingänge erstellen laden, okay? Und nennen wir es Z-Achse. Und lassen Sie mich, ja, die
Z-Achse ist in Ordnung. Lässt mich zurück
zur Spielerbasis gehen. Und drinnen nennen
wir es Set-z-Achsenwert. Und das ist die
Interface-Funktion. Und jetzt
geht es durch den Server. Lassen Sie uns also einstellen, dass es auf dem Server
läuft und zuverlässig ist. Lassen Sie mich das einfach ein wenig
nach unten bewegen, damit wir sehen
können, was los ist,
und lassen Sie mich nach unten gehen. Okay, lass uns dieses
Server-Event hier ausführen. Set x ist Z-Achsenwert, und wir benötigen einen Float. Also lasst uns hier einen Float erstellen. Und nennen wir es z-Achse. Und jetzt können wir mit der rechten Maustaste klicken und diese in eine Variable umwandeln
und sie z-Achse nennen. Hier. Wir haben die Z-Achse und
lassen Sie mich all diese verbinden. Und jetzt können wir es hier aufrufen. Wenn also kann klettern stimmt, sind
wir nur daran interessiert dies zu
aktualisieren, wann immer
wir tatsächlich klettern können ,
aber denn bevor wir
klettern können, sind
wir nicht wirklich interessiert, ob der Spieler drückt nach oben oder nicht. Wir sind nur interessiert, wenn der Spieler bei
jedem Klettern die obere Nie drückt. Lassen Sie mich hier sagen, setzen Sie den
z-Achsenwert hier. Und lassen Sie es mich tatsächlich
vom eingestellten z-Achsenwert aus aufrufen. Lassen Sie es mich tatsächlich
von der Int-Player-Basis aus anrufen. Und so. Und jetzt haben wir das angeschlossen,
wir müssen diesen,
die Achse oder diesen Achsenwert
hier unten mit der Z-Achse verbinden . Und lass es mich einfach hier laufen lassen. Okay? Jetzt haben wir
alles
miteinander verbunden und dieser Achsenwert
wird durch
diesen eingestellten Z-Achsenwert aktualisiert. Es wird hier runter gehen
und dann auf diesen Wert sinken. Denken Sie daran, was ich zuvor gesagt habe, Sie müssen
dies replizieren
, damit diese Informationen
an alle Kunden gesendet werden. Sonst ist nur der Server, der den Wert
dieser Variablen
kennt. Okay, also lass uns wieder hier runter
gehen. So kann klettern, wenn
man klettern kann, stimmt. Jetzt interagieren wir
mit dem Seil. Nehmen wir diese Z-Achse hier. Wenn die Z-Achse größer als 0 ist. Das heißt, der Spieler
drückt nach oben. Und wir können das einfach
löschen und einfach sagen, wenn die Z-Achse nicht gleich 0 ist, dann wollen wir etwas tun. Also lass mich das einfach machen. Und dann können wir hier einen Zweig
machen. Wenn die Z-Achse nicht gleich 0 ist, möchten wir ein neues
boolesches Sprichwort ansteigen lassen. Machen wir also hier einen
neuen booleschen Wert. B zu sagen, klettert. Also jetzt, bevor wir diesen namens
Can Climb hatten, aber jetzt klettern wir tatsächlich. Also machen wir einen neuen
booleschen Wert namens „klettern“. Und wieder müssen wir
es durch den Server laufen,
damit wir es hier einfach so
machen können, denn denken Sie daran, wir bereits im
Server sind, aber ich denke, wir
werden es später
dort verwenden wo wir wird es
hier tatsächlich über
den Client verwenden und es muss durch den Server
laufen. Lassen Sie uns also einfach eine Veranstaltung dafür
machen. Machen wir ein neues, das als benutzerdefiniertes Ereignis
bezeichnet wird. Und lass es mich einfach direkt
im Interface hier machen . Und nenn es einfach,
Set klettert. Und es wird nur einen Booleschen Wert als Input
nehmen. Ist Vi, klettert. Und gehen wir zurück
zur Spielerbasis. Und hier können wir sagen, dass
Set klettert. Und wir können das gerade erstellte
Ereignis nennen. Lass es uns
durch den Server gehen. Lassen Sie uns also ein
neues individuelles Ereignis erstellen. Dasselbe Serverset klettert. Geben Sie ihm eine Eingabe
einer booleschen namens is line, die so ist. Okay? Und dieser kann tatsächlich klettern, aber ich werde ein B nur aus guten Praktiken
hierher stellen, um sicherzustellen, dass alles in
Ordnung ist und klettern kann. Es hat ein B hier, also ist das cool. Also hier klettert das Set und wir werden es zuverlässig durch
den Server laufen. Und das einzige, was
wir
hier tun werden, ist auf zwei zu setzen, ist das Klettern. Also haben wir diese Variable erstellt, ziehen sie heraus, setzen sie hier ein
und lassen Sie uns dies durch
die Clients führen, und lassen Sie uns dies durch
die Clients führen um zu den Servern
zu gehen. Server Set klettert
und verbindet es hier oben. Okay, also
setzen wir diese Variable hier. Und das, was wir damit
machen wollen , wird nicht repliziert. Repliziert wird nur
verwendet, wenn Sie Informationen
an die Clients senden möchten . Auch hier wird Rep
Notify verwendet, wenn Sie
etwas visuell ändern möchten. Also nicht nur Informationen wie
hier und der Z-Achsenwert, wir wollten nur Informationen
senden. Hier möchten wir jedoch
visuelle Änderungen vornehmen, da wir
das Flipbook auf den Kunden umstellen werden , der Flip Book ist. Wir werden
diese Replikation also ändern , um eine Benachrichtigung zu
umbrechen, da wir einige visuelle Änderungen
haben einige visuelle Änderungen
haben
, die
wir ablehnen müssen. Okay, also hier
werden wir es hinzufügen. Wenn also der Wert der Z-Achse nicht gleich 0
ist,
was bedeutet, dass der Spieler nach oben oder unten
drückt, dann möchten wir klettern. Also lasst uns das machen.
Nehmen wir an, Set ist Schleifen. Wir können das jetzt nennen, Set klettert und wir können es wahr machen, weil wir
jetzt klettern wollen. Aber hier im Herbst. Lassen Sie mich das
also tatsächlich besser hierher ziehen im Falschen. Also können wir klettern. Aber jetzt haben wir das Seil verlassen. Jetzt können wir also nicht mehr klettern , weil Sie sich am Ende mit den Bugs
überschneiden. Nehmen wir an, wir sind bereits bestiegen
und das wird falsch. Wir müssen dies auch auf false
setzen, denn sonst haben wir gerade
nirgends in unserem Code angegeben, wann dies falsch sein
wird? Und wenn du am
Seil kletterst und die Reihe
verlässt, dann ist diese
immer noch wahr. Also lasst uns das kopieren und so hier unten platzieren
. Sagen wir also, wir sind
bereits bestiegen, also lass mich das klettern und lassen Sie mich
hier verzweigen. Also wenn wir es sind, also hier, wenn wir die Kollisionsbox
hier in der Kletterbasis lassen, wenn wir sie verlassen und
es ist auf falsch eingestellt. Wenn wir bereits
bestiegen sind. Wenn es also gibt, wenn das Klettern auf „true“
eingestellt ist, lassen Sie uns weitermachen und es auf „false“
setzen. nur sicher, dass
dies auf „false“ eingestellt ist. Und wir
klettern immer noch nicht einfach so. Lassen Sie mich das also
voranbringen und das nach oben bringen und
das ein bisschen mehr organisieren. Schon wieder. Wenn etwas
nicht richtig strukturiert ist, können
Sie es auswählen und auf der Tastatur auf
Q klicken , um eine Zeile wie diese zu machen
. Okay, also haben wir ein
kleines Problem
damit und vielleicht kannst du es
schon herausfinden. Lassen Sie mich einfach
hier kompilieren und lassen Sie mich das so auf den
Bildschirm
drucken. Und lass mich tatsächlich bewegen, lass mich zu dem Kunden gehen, der tatsächlich am Seil
ansässig ist. Also lass uns zum Seil
klettern gehen. Lassen Sie mich zum
Darstellungsfenster gehen und dies einfach auf 80 oder
so ähnlich
erhöhen. Etwas Großes. Und lass mich stattdessen den Spieler hier
oben platzieren. So. Lass mich auf Play klicken. Und jetzt möchte ich es auch auf den Bildschirm
drucken. Gehen wir also zur Spielerbasis, jetzt werden wir
Hallo drucken. Ja, das ist gut. Also lass mich auf Play klicken. Und wenn ich jetzt meine
Maustaste nach unten klicke und mich bewege, kannst
du sehen, ob ich mich bewege. Und lasst mich zuerst gehen. Also klicke auf ein um zu bewegen
und dann klicke ich hier auf S. Sie können sehen, dass es
Hallo sagt, weil es
überprüfen kann ,
dass ich beim Laufen mit mir kollidiere, wenn
ich renne und dann hier mit meiner Box
kollidiere
und sie kann klettern. Es kann sehen, dass ich
meine Z-Achse drücke , damit sie
nicht gleich 0 ist, was bedeutet, dass sie tatsächlich auf Wesen klettern
wird. Das läuft also richtig. Das Problem, das wir
gerade haben, ist wenn ich am Seil stehe
und runtergehen möchte, wenn ich auf S klicke, um nach unten zu gehen, wird
es nicht wirklich überprüfen. Denn denken Sie daran, dass dieses
Ereignis nur einmal ausgeführt wird. Es läuft nur, wenn
Sie mit der Box kollidieren. Was ist, wenn Sie bereits mit der Box
kollidieren? Was macht, wenn du auf der Schachtel
stehst? Das ist nie
wieder gelaufen. Dies wird nur dann laufen
, wenn Sie die Kollision verlassen und
dann mit ihr kollidieren. Schon wieder. Dieses Ereignis
wird hier nur einmal ausgeführt, wenn Sie zum Zeitpunkt, an
dem
Sie mit dem kollidieren, nicht die Abwärtstaste drücken , mit dem Seil
wird dies immer noch 0 sein, also wird dies nie überprüft. Wenn ich also auf klicke, wenn ich
hier zu meinem Spiel zurückkehre, klicke auf S, um nach unten zu gehen. Das wird nicht
wirklich funktionieren. Also brauchen wir etwas, damit es hier
ständig überprüft werden kann,
wenn ich hier
auf der Kollisionsbox stehe , um
ständig zu überprüfen, ob dies gleich 0
ist oder nicht. Und wieder verwenden wir dafür
Timer, wir haben
den Timer schon hier oben benutzt. So kontinuierliche Überprüfung können
Sie immer Timer verwenden,
sehr gute Tools, die Sie sich merken sollten. Hören wir also, trennen Sie
dies und verbessern Sie diesen Code. Lassen Sie mich also einen Timer erstellen, einstellen, Timer nach Ereignissen. Verbinden wir es hier. Jetzt
können wir ein Event zwei Läufe von hier aus machen und es
herausziehen und Lime-Inputs sagen. Lassen Sie uns eigentlich
benutzerdefinierte Ereignisse erstellen. Das meinte ich. Und
nenne es gekletterte Eingänge. Also ist diese Clienteingabe, die überprüft
wird, gleich 0 oder nicht? Und wenn nicht, dann klettern Sie
weiter. Ich werde das ein
bisschen mehr so organisieren. Und für diesen, für den Timer,
werde ich es schleifen. Und für die Zeit, in der
es in die Schleife geht, schreibe
ich einfach 0.1, was bedeutet, dass die gesamte
Schleife alle 0,12 ausgeführt wird, was bedeutet, dass dies
zehnmal pro Sekunde ausgeführt wird. Wann immer ich Kunde bin, möchte
ich das nicht mehr
überprüfen. Also werde ich
dies auf eine Variable bewerben. Und nennen wir es
Check Limed Inputs. Und ich nehme das und
sage Lear und den ungültigen
Timer nach Handle. Wann immer, wann immer
wir hier nachgesehen
haben, suchen wir nach Eingaben. Wann immer wir
sehen, dass der Spieler an diesem Seil auf und
ab drückt, was bedeutet, dass wir klettern
werden. Und zu dieser Zeit wollen wir es nicht mehr
wirklich überprüfen. Denn der ganze Zweck
besteht darin, nur zu prüfen, ob der Spieler an dieser Kollisionsbox nach oben und
unten drückt. Also können wir dieses Mal einfach
aufhören. Und denk dran, wenn
du den Timer nicht stoppst, zeige
ich es dir. Also wenn du einfach immer
Hallo druckst und du kannst das Debuggen
mit dem Heiligenschein so nützlich sein. Wenn Sie also auf S nach
unten klicken, können
Sie sehen, dass es ständig
Hallo druckt. Natürlich ist es ganz oben,
wenn Sie nicht
mehr S drücken , weil Sie sich
nicht wirklich nach unten bewegen. Aber wenn ich
drücke, wird es ständig gedruckt, ich
möchte es nicht wirklich immer drucken wenn ich klettere denn dies ist nur nützlich,
um zu überprüfen, ob wir schon, ob Sie das Seil tatsächlich klettern
wollen
. Wenn wir also bereits
bestiegen sind, wollen
wir das nicht wirklich überprüfen. Und hier sagen wir klarer und ungültiger
Timer nach Handle. Denn jetzt können wir sagen, wenn das stimmt,
werden wir es so einstellen, dass es klettert und weitergeht und diesen Timer
entfernt. Wenn ich also auf Jetzt
spielen klicke und hier klicke auf
S, halte es gedrückt. Und natürlich
müssen wir etwas drucken, also setze ich etwas damit wir tatsächlich
sehen können, was los ist. Ich klicke auf Play,
klicke auf S, um nach unten zu gehen. Und obwohl ich es gerade
festhalte, hieß
es nur einmal Hallo. So erstellen Sie etwas
Optimiertes und Blueprints,
denken Sie daran, den Timer anzuhalten wenn Sie ihn nicht mehr
benötigen. Sonst wird
ewig laufen und das willst du nicht
wirklich tun. Also auch für den Timer hier, nur um sicherzustellen, dass er stoppt, kopieren
wir diesen Code. Lass mich hier gehen. Wenn man also klettern kann, ist auf false gesetzt. Wenn Sie sich also
mit der Kollisionsbox überlappen , sind wir es. Wenn Sie also schon klettern
und das Seil verlassen, wir einfach noch einmal daran, diesen Timer
zu stoppen. also nur sicher, dass der Timer nicht mehr
läuft. Also das war's für
dieses Video hier. Wir haben also eine Menge Dinge erledigt. Wir haben den Timer so eingestellt, kontinuierlich überprüft, ob der
Spieler sich nach unten bewegt oder nicht. Der ganze Prozess
besteht also nur darin, es
sehr schnell zu erklären , bevor
wir dieses Video beenden, nur für den Fall, dass Sie
eine vollständige Erklärung benötigen. Was wir
hier anfangs machen, ist dass
der Spieler hier am Seil
springen wird. Der Spieler wird diese Kollisionsbox
berühren. Und was der Spieler
diese Kollisionsbox berührt, wird
dieses Event spielen. Die Veranstaltung läuft
durch den Server und
es wird überprüft,
ob der Schauspieler
den Tech-Spieler hat , nur um
sicherzustellen, dass der Spieler
das Seil tatsächlich berührt und nicht jemand anderes. Und das ist, wenn das stimmt, werden
wir das
Can Climb-Event nennen, das sich hier im
Spieler, Spieler-Schauspieler, befindet. Wir werden festlegen, kann boolean
klettern, um wahr zu sein. Also wollen wir klettern
und was ist das, was
wir klettern werden? Das Ding, das wir selbst klettern werden
, was auch immer
du hier platziert hast. In diesem Fall
haben wir ihr Seil,
das ein Kind des
Kletterns ist, platziert . Indem er sich selbst schreibt, weiß
es automatisch, dass es hier zum Seil geht. Und das ist der Schauspieler
, den wir klettern. Also wird es
gehen, um klettern zu können. Also fangen wir hier an. Die Informationen
hier, der Boolesche Wert, Sie haben es auf wahr gesetzt, also wird es hier
unten auf wahr sein. Die Informationen werden hier auf dem Server
fortgesetzt, diese Variablen
senden und
verkaufen, um sie zu replizieren. Da wir
daran interessiert sind,
diese Informationen an die Clients weiterzugeben diese Informationen an die Clients weil wir gerade auf dem
Server sind, der Client keine
Ahnung, was dieser Wert ist, wenn Sie
sie nicht an die Clients zurückgeben. Wenn sie klettern können, stimmt es. Wir werden prüfen, ob
der Spieler tatsächlich die Abwärtstaste drückt, um das Seil
zu klettern. Wenn der Spieler
die Abwärtstaste drückt, wir fest, dies auf „true“ steigt. Wenn wir das tun,
wird festgelegt, dass sein Client den Server
durchläuft, hier den Server durchläuft und diese
Variable dann auf „true“ setzt. Jetzt haben wir das codiert,
aber wir werden
das in der nächsten Lektion tun . Also haben wir dies
auf Wrap Notify eingestellt, die sich dann wieder daran erinnert, dass eine rote Benachrichtigung
eine On-Ramp-Funktion erzeugt. Hier werden wir viele Dinge codieren, z. B. das
Ändern Ihres Flipbooks, um es
abzulehnen,
ein Flipbook zu sein. So kann der Spieler visuell
sehen, dass du kletterst. Und wenn ich wieder hierher gehe, ist
es falsch, wenn sie klettern können. Wenn du es schon bist, wenn du schon gesagt
hast, dass
das klettert, um
wahr zu sein, stimmt das. Wir werden es auf
„false“ setzen, weil du nicht mehr klettern
kannst. Und wir werden den Timer sowieso
anhalten. Wenn sie können, wird
Klettern falsch sein und du
wirst es nicht finden.
59. Player aktualisieren: Hallo und willkommen zurück. Es gibt also einen kleinen Bug
, bevor wir anfangen, du kannst sehen, ob ich hier zur Seite gehe
, plötzlich
verschwindet mein Sprite und wenn ich
zurückgehe, erscheint es. Also sehr, sehr seltsamer Bug
, den wir gerade haben. Lasst es uns tatsächlich reparieren,
bevor ich diesen seltsamen Bug repariere, habe ich herausgefunden, dass wenn du zu den Blaupausen
gehst und hier zur
Kletterbasis gehst, lass es uns für die ganze
Klemmung
stellen
-Objekte können
Sie auf die
Render-Komponente klicken. Und wenn Sie hier
zum Rendern gehen, können
Sie auf Erweitert klicken. Und wenn ich das nur minimiere, siehst du auch
Verschwinden wann immer. Ich klicke auf G, um all das zu
entfernen. Du kannst sehen, dass es erscheint,
wenn ich hier bin, es verschwindet, wenn ich hier bin. Ich habe hier im Rendern
unter Render-Komponenten herausgefunden , dass Sie zur
Transluzenz gesuchten Priorität gehen
und eine schreiben können , Kompilieren und Speichern. Und du kannst sehen, dass
es so erscheint, dass dieser Bug nicht mehr erscheint. Okay, was
wir
gerade machen wollen, ist, dass wir
die Spielerbewegung aktualisieren wollen. Im Moment haben wir
das Richtige, wir tun das Richtige. Aber im Moment können wir hier oben nicht
wirklich leben. Und das liegt daran, dass wir wollen, dass wir unseren
Spielerbewegungsmodus ändern sollten. Gehen wir also zurück
zur Spielerbasis. Und drinnen von hier,
fangen wir an, das Ding
in unserer entpackten Funktion isClient
zu codieren . Gehen wir also hier hinein, ziehen
wir zuerst die
Variable und schreiben einen Zweig. Was sollte also passieren
, wenn Sie klettern? Also schlägt der Spieler auf das Seil und drückt die
W-Taste, um nach oben zu gehen. Was sollte passieren? Das erste, was wir tun möchten, ist die
Charakterbewegungskomponente zu
nehmen und dann von hier zu ziehen und den Modus „Bewegungen einstellen“ zu
sagen. Das hier. Und dann werden
wir das auf Fliegen einstellen denn wenn du kletterst, fliegst
du tatsächlich. Standardmäßig laufen
wir gerade herum, und das ist das Gehen. Wann immer wir springen. Erinnern Sie sich hier im Springen, wenn ich zurück zum Event Graph gehe, wann immer wir gesprungen sind, also wenn ich
finde , ist der Code irgendwo hier. Für den springenden
Code hier drüben können
Sie früher sehen, ob Sie sich erinnern, dass wir dies zu einer reinen
Funktion gemacht haben, bei der wir
überprüft haben , ob die fallende
Charakterbewegung nicht wahr ist. Fallen ist wann immer wir hier springen und
im Bewegungsmodus, wenn ich zurück zur
Auswickelfunktion gehe, ist
das Fallen wann immer
du springst, das Gehen ist gerade,
wenn wir herumlaufen. Wenn wir jedoch klettern wollen, müssen
wir es auf Fliegen einstellen. Also
fliegen wir tatsächlich herum. Und kurz bevor ich es vergesse, lass mich zu den
Charakterbewegungen gehen und hier
runter zum
Fliegen hierher gehen. Lassen Sie mich die
Fluggeschwindigkeit auf 1 Fünftel einstellen. Ich habe es in Maple Story getestet, also habe ich
heute Maple Story gespielt, um es mir anzusehen. Und es ist ungefähr 115 Geschwindigkeit. Du musst es im Spiel testen,
um zu sehen, dass du es einfach
600 sein lassen kannst und du kannst tatsächlich testen
und sehen, wie schnell das ist. Aber ich werde
es jetzt auf 150 ändern. Und die Beschleunigung brechen
, wenn du das nicht anziehst. Wenn Sie also auf
W klicken und loslassen, fliegen
Sie immer
noch nach oben. Das will ich nicht. Ich möchte wie Wonder
Player,
der den W-Button loslässt ,
nicht mehr klettern. Ich möchte, dass der Spieler
vollständig anhält und nicht still nach oben
rutscht. Ich werde
das auf etwas
Hoch setzen , etwa 10 Tausend. Also manche nur eine
Zufallszahl, Kompilieren und Speichern. Und wenn der Spieler
nicht klettert, also wenn der Spieler vom Seil
losgelassen hat, kopiere
ich das
Einfügen und setze es auf „Fallen“, weil ich möchte, dass der Spieler
davon fällt
das Seil. Also so etwas. Und wenn Sie dies wieder besser aussehen lassen
möchten, sollten
Sie diese
Plattform wahrscheinlich verschieben und nach oben bieten. Das
trifft also eigentlich nicht auf den Boden. Gehen wir also zurück
zur Spielerbasis. Wenn der Spieler
also nicht klettert, werden wir ihn auf
„Fallen“ einstellen. Lassen Sie uns nun unser Flip Book einstellen. Nehmen wir also unser Sprite hier. Sagen wir mal „Flip Book“. Und lasst uns es zuerst hier
oben mit dem Klettern verbinden. Wenn wir also klettern, möchten
wir, dass der Kunde
Animation ist und
mich das kopieren lassen. Und wenn wir fallen, wollen
wir unsere
Sprunganimation haben. Die Sprunganimation, die
wir gerade haben, aber rückläufig sind, tun wir nicht, also müssen wir das vorbereiten. Also hier zum Fallen hast du diese Sprunganimation. Ich erinnere mich, dass wir
zwei Charaktere haben und dies so
dynamisch wie möglich gestalten
möchten. Lasst uns also
noch einmal unsere Struktur übernehmen. Lass es uns kaputt machen. Und hier können wir jetzt
unsere Sprunganimation machen. Nehmen Sie diese Sprunganimation
und verbinden Sie sie hier verstecken Sie alle anderen
Pins wie diese. Es sieht also viel sauberer aus. Jetzt haben wir das bereit, aber was das Fliegen angeht, haben
wir gerade keine
Aufstiegsanimation. Hier im Kurs Materialien in den Charakteren in Tsarina. Du siehst, dass ich den Aufstieg sowohl für
dich als auch für Luke
vorbereitet habe. Also lasst uns weitermachen und das hier
minimieren. Gehen wir zu Blau, eigentlich hier in den
Asset-Charakteren oder Serena zuerst
und den Texturen. Und lass mich
den Aufstieg importieren und
dasselbe für die for-Schleife machen. Also geh zur Luke-Textur. Hier. Wir haben Luke und den
Aufstieg, so wichtig, aber beide klicken
zuerst mit der
rechten Maustaste auf diese 1 und wenden Papier auf die Einstellungen
an. Tu das Gleiche für Serena. Rechtsklick, wenden Sie Papier auf die Einstellungen an und
klicken Sie mit der rechten Maustaste hier. Und lasst uns die Sprites extrahieren. Das Raster ist achtzig, ein achtzig Klick auf Extrakte. Und so muss
man sie in S lime 01 umbenennen. Dieser ist eigentlich 0202. Und dieser, wo ist
der andere hier? 01. Und mach das Gleiche für Luke. Klicken Sie also mit der rechten Maustaste, Extrahieren Sie Sprites ,
Gitter, eins achtzig, achtzig. Dieser hier ist wie 01 und der andere
ist Klima 0 zu. Jetzt können Sie
sie auswählen, klicken Sie mit der rechten Maustaste auf
ein Flipbook namens FB climbed erstellen . Zieh es in Lukes Ordner. Und lassen Sie uns die Frames
pro Sekunde auf vier setzen. Lassen Sie uns es also auf
vier setzen und dasselbe für
Serena hier für den Kunden
tun, klicken Sie mit der
rechten Maustaste, erstellen Sie ein
Flipbook namens Climb. Platzieren Sie es außerhalb dieses Ordners. Hier ändern wir die
Frames pro Sekunde auf vier. Jetzt speichern wir alles
und wir müssen daran denken, es unserer Struktur
hier in der Spielerbasis
hinzuzufügen. haben wir also noch nicht gemacht. Gehen wir also zu der
Struktur und den Blaupausen, strukturiert Spielerinformationen und fügen
wir eine neue hinzu,
eine neue Variable namens
Cholin-Animation. Wenn Sie jetzt hinzufügen möchten, werden
wir
es dynamischer gestalten. Du hast also nicht unbedingt
ein Seil. Sie können auch einen Brief haben und wird eine
andere Animation haben. Wir können es also entweder
Klimaemission nennen oder besser sein, oder man kann es
eine Seil-Animation nennen. Und wenn Sie möchten, können
Sie später eine Leiteranimation hinzufügen. Und das ist eine andere Animation. Also Roboteranimation, Nennen
wir es Paper Flip Book oder die Variable ist ein Papier-Flipbook, wie hier. Und lasst uns sparen, lassen Sie mich das tatsächlich nach oben bewegen, also ziehen Sie es über
die Soundeffekte. Ja, ich wollte eigentlich
Soundeffekte hier unten sein. Also Robin Emission,
sparen. Hier drüben. Speichern wir tatsächlich
alles, kompilieren und speichern. Und Sie können sehen, dass die
Seil-Animation erscheint. Lassen Sie mich erneut darauf klicken klicken Sie auf Nicht verbundene Pins ausblenden. Was wir also hier oben
tun wollen, ist, diese Struktur einzufügen. Und Sie können sehen, wann immer
Sie
nicht verbundene Pins verstecken und es sich
einfach so versteckt, Sie können sie jetzt noch sehen. Sie können darauf klicken und
auf diese Standardkategorie klicken und Sie können auswählen, dass diese
fliegende ist, also ist es ein Klettern, diese eine Seil-Animation
und Sie können sie
sehen und Sie können es hier
verbinden. Denken Sie daran, dass Sie die Seil-Animation
verbinden müssen , da wir noch nicht
angegeben haben, was sie ist. Du musst also
sowohl zu Serena als auch zu Luke gehen. Also Blueprints Spieler. Fangen wir damit an, hier zu schauen. Denken Sie daran, dass
Sie in der Klasse T false die
Seil-Animation einstellen müssen. Wenn Sie also nach Luke klettern, gehen
wir nach Serena. Für Serena wird
es so aussehen. Also Seil-Animation. Und dann lasst uns Leichenwagen finden. Dieser eine FP ist geklettert. Okay, jetzt
sollten sie arbeiten. Gehen wir jetzt zurück
zu unserer Spielerbasis. Was wir jetzt tun, ist dass
wir es in den Flugmodus schicken. Also sollten wir in der Lage sein, hier in
der Grafik auf und ab zu
gehen, ich gehe runter. Wir sollten also in der Lage sein,
auf und ab zu gehen, denn jetzt sind
wir im
Flugmodus und können klettern. Und lass mich hierher zurück und dann setzen
wir das Flip Book. Also lasst uns tatsächlich versuchen,
es zu spielen und zu sehen, ob ich etwas
vermisse. ist immer gut, es auszuprobieren. Also lasst uns
alles retten. Lass uns spielen. Wenn ich jetzt hierher gehe, klicke
ich auf unten. Du siehst, dass ich mich tatsächlich bewege. Aber das Problem ist, dass diese Kollisionskachel meinen Charakter
stoppt. Also lass
es mich hier tatsächlich von unten versuchen. Fallen Sie runter. Und wenn ich hier ans Seil gehe,
siehst du, dass ich tatsächlich die Leiter hoch und runter
gehe. Das Problem ist hier, der Titel hindert uns daran zu steigen. Und das wollen wir das im nächsten
beheben. Aber ich glaube wieder an
die nächste, wir entfernen diese Kollisionen,
damit wir nach oben gehen können. Wir haben auch einen kleinen Käfer
, bei dem wir zu
den Seiten laufen können , obwohl
wir hier laufen. Also lasst uns weitermachen und das reparieren. Ich klicke auf Escape und
lass mich die Spielerbasis öffnen. Und hier oben, lass
mich eigentlich zum Event Graph gehen. Lass mich einfach alles schließen. Ich glaube, ich habe eine Menge
offen, viele Dinge offen. Jetzt, hier im Ereignisdiagramm, ich mit der rechten Maustaste und
sage „Tabs schließen“ auf der rechten Seite. Also habe ich das gerade nur
geöffnet. Also hier drüben in der
Bewegung nach rechts und links wollen
wir uns nicht wirklich
nach rechts und
links bewegen , wenn Sie klettern. Dafür können wir also einen
booleschen Wert hinzufügen. Also wenn ich es einfach
hierher ziehe und wir können
das klettern benutzen und
du kannst einen Booleschen Wert schreiben. Wenn Sie also nicht klettern, können Sie sich
nach rechts und links bewegen. Aber zweitens, wenn du ein Seil
kletterst, wollen
wir uns nicht wirklich nach rechts und links
bewegen. So etwas Einfaches
kann einen solchen Bug beheben. also nur einen booleschen Wert verwenden, können Sie
manchmal Code
verhindern. also immer daran, dass Booleans
hier sehr, sehr nützlich sind. Und du siehst, dass ich mich nicht nach rechts und links
bewegen kann. Und auch unsere Animation, Kletteranimation
funktioniert einwandfrei. Jetzt kann ich nicht, ich kann mich nicht von meinem Seil
entfernen weil ich glaube, dass
meine Kollisionsbox gerade sehr lang
ist. Also lass mich zurück zum Seil gehen. Weil wir hier getestet haben und hier zum Seil
gegangen sind. Und lass mich
das einfach auf etwa
65 reduzieren , so etwas. du auf
Jetzt spielen klickst, kannst du mich
tatsächlich meinen
Spieler hier unten setzen lassen. Wir müssen nicht ständig
runterfallen. Hier. Ich kann klettern, ich kann runter gehen und ich kann mein Seil hier lassen. Schon wieder. Sie können diese Plattform
höher setzen, wenn Sie möchten, oder Sie können die
Kollisionsbox einfach etwas
kleiner machen Kollisionsbox einfach etwas
kleiner damit Sie nicht unbedingt den ganzen
Weg hierher gehen
müssen. So etwas wie 60
und ich kann es nach
oben bewegen , so etwas. Klicken Sie also noch einmal auf Play. Und wir können springen und
wir werden das Seil verlassen wann immer wir
irgendwo hier sind. Okay, so sehr cool. Wir können jetzt auf und ab gehen. Und du kannst auch sehen,
dass wir ein
bisschen rutschen , wenn ich zur Seite
gehe. Manchmal
entferne ich mich tatsächlich vom Seil, so
etwas. Jetzt gehe ich auf
und ab,
aber wir werden später auch den
Kundenstandort
anpassen. Also mach dir
darüber keine Sorgen, aber im Moment kannst
du sehen, dass wir springen können, während
wir hier am Seil sind. Also lasst uns das auch in Ordnung bringen. Gehen wir also zurück zur
Spielerbasis und zum Springen. Lasst uns also wieder die
springende Logik finden. Wenn du nicht
fällst und nicht ausgerichtet bist, wollen wir nicht wirklich springen,
wenn du kletterst. Also lasst uns das nehmen.
Und hier können wir hier
Ende sagen und Boolean. Und du kletterst nicht. Also verrückt, Boolean. Auch wenn du es bist, wenn du nicht fällst
und nicht kletterst, wollen
wir nicht wirklich
springen, wenn du kletterst. Lassen Sie mich das vorwärts bewegen und lassen Sie mich auf diesen
klicken und auf Unverbundenen Pin ausblenden klicken. Also geht es wieder hoch und
verbinde stattdessen diesen. Wenn wir also fallen, wollen
wir nicht springen. Wenn wir Cholin sind, wollen
wir auch nicht springen. Wir müssen also nach
diesen beiden suchen, um sicherzustellen , dass wir nur darauf springen können, dass Ihre
Nullcline ist oder fällt. Lassen Sie mich
das einfach näher rücken und wir können es noch einmal testen,
kompilieren und speichern. Wir können spielen, auf die Straße gehen. Und wenn ich auf Leerzeichen klicke, kann
ich hier springen. Okay, jetzt
ist das behoben und lass uns
zur nächsten Lektion übergehen, in der wir tatsächlich eine Aufzählung von
Kletterobjekten machen. Anstatt also das,
das Seil zu machen ,
können Sie auch Buchstaben
und Animationen für
diese hinzufügen .
60. Aufzählung der Objektart: Okay, also, bisher hier in der Rampe ist Kletterfunktion. Bisher haben wir hinzugefügt
, dass wir bei
jedem Klettern
zur Robe-Animation wechseln sollten . Aber was ist, wenn du
auch eine Leiter hast? Was ist, wenn Sie etwas anderes haben und eine neue Animation benötigen, benötigen
Sie eine
Leiterkletter-Animation. Vielleicht hast du zwei
Animationen in deinem Spiel. Jetzt wollen wir eine
Aufzählung machen, um dies zu beheben. Und ich mache
mein Spiel gerne dynamisch. Wenn ich also in Zukunft etwas hinzufügen
möchte, kann
ich das in zwei Minuten machen, nicht in 30 Minuten. Lassen Sie uns also jetzt alles
dynamisch machen. Es dauert etwas
länger, dies zu tun, aber es wird Ihnen so
viel Zeit sparen , wenn Sie Ihr Spiel
erstellt haben. Versuche immer, diese
schönen Dinge für dein Spiel zu tun. Versuchen Sie, gute Kodierungspraktiken durchzuführen. Und Sie können so viel
Zeit sparen, wenn Sie
einen DLC erstellen oder was auch immer Sie später versuchen , Updates zu erstellen. schaffst du in zwei Sekunden. Versuchen wir also zuerst
eine Aufzählung zu machen. Auch hier sind Aufzählungen
sehr, sehr mächtig. Bisher haben wir
diese bewegenden Staaten geschaffen. Lassen Sie uns also tatsächlich
mit der rechten Maustaste hier klicken, gehen Sie zu Blueprints und
erstellen Sie eine neue Aufzählung. Nennen wir das einen E
Kletterobjekttyp. Wenn ich das buchstabieren könnte,
tippe hier und klicke es hier. Und lass mich vorerst zwei
Typen hinzufügen. Ich habe nicht wirklich
mehr als das. Also habe ich ein Seil und ich habe eine Leiter wie diese,
also rette alles. Und gehen wir zurück zu
der Linie, die hier ist
und die Basis klettern. Und lass mich diese
Variable zu meinen Variablen hinzufügen. Wenn Sie diese eine
Zeile also als Objekttyp aufrufen. Fügen wir nun diesen Typ
zu unserer Aufzählung hinzu, die
wir erstellt haben, genannt
Kletterobjekttyp. Dies ist die Aufzählung. Was wir
jetzt tun können, wenn wir dem übergeordneten Element Variablen
hinzufügen, wird die Blueprint-Klasse allen Kindern
hinzugefügt. Wenn Sie also hier auf das Seil klicken, sehen
Sie in den
Klassenvorgaben, ich kann diese Aufzählung jetzt sehen. Und Sie können den Typ für
jedes Ding ändern , das Sie hier hinzufügen. Dieses Seil ist also
offensichtlich ein Seil. Aber wenn Sie später
eine Leiter hinzugefügt haben, können
Sie diese tatsächlich in ein
Feuerzeug
umstellen und es wird wissen
, dass dies eine Leiter ist. Und wenn es weiß, dass
dies eine Seite ist, weiß
es, dass es die leichtere Animation
spielen sollte. Also lasst uns
diese Informationen tatsächlich kodieren. Das ist also nur ein Seil. Also habe ich meine neue
Aufzählung einfach auf Seil gesetzt. Und gehen wir zurück
zum Kunden, der Basis ist, und wir können
ihn hier hinzufügen,
eigentlich nicht die Kletterbasis. Gehen wir zurück zur
Spielerbasis. Das meinte ich. Ich gehe zu einer Spielerbasis. Und in den Ohren
klettert Clipping. Unwrap Funktion. Hier möchten wir es hinzufügen. Lasst uns das
ein bisschen weiter wegbewegen. Hier fragen wir uns
, dass unser Kunde
Basis ist , weil wir diese Variable verwenden
möchten. Und denken Sie daran, dass wir dafür bereits eine Variable
gemacht haben. Wenn Sie hier runter gehen, als wir sagten, kann steigen,
haben wir hinzugefügt, denken Sie an
diese Selbstreferenz. Also
definieren wir tatsächlich bereits diese Kletterbasis, die wir diese
Funktion oder diese Variable nennen müssen. Jetzt können wir
ein Blueprint-Interface erstellen und
sagen, dass der Client Basis wird. Du könntest das machen,
wenn du willst. Aber für dieses Spiel ist
das sehr minimal. Das tue ich nicht, ich möchte darum kümmern, weil wir es
nicht wirklich so oft
benutzen werden wie die Spielerbasis und wofür
wir sie benutzt haben. Also werde ich einfach kosten, sagte
ich vorher ist okay zu kosten, solange du es nicht ständig
machst. Also lasst uns hierher zurückkehren
und wir können einfach diese Referenz hier
nehmen, lassen Sie mich das
Klemmobjekt herausfinden, lassen Sie mich es jetzt ziehen
und auch Kosten sagen. Was ist also das Kletterobjekt? Das Klemmobjekt ist wenn wir
etwas kosten, von dem wir sagen können, dass es sich speziell
um diese BP-Kletterbasis handelt. Das Kletterobjekt
ist also speziell diese Blaupause, denn
denken Sie an diese Referenz, wenn Sie die Maus darüber halten, ist
es nur ein Papiersprite-Schauspieler. Und wir definieren, dass
dieser Papiersprite-Akteur
speziell diese
Klemmbasis ist und S Rückgang Basis ist. Ich kann jetzt auf
alle Informationen zugreifen , die ich
brauche. Was wir brauchen,
ist diese Variable als Kletterobjekttyp bezeichnet wird. Lasst uns also zur
Spielerbasis gehen und davon ziehen und sagen, dass Cholin
Kletterobjekttypen bekommt. Jetzt können wir diese Variable verwenden. Genau wie zuvor.
Denk daran, was wir gemacht haben. Wenn du dich also daran erinnerst , ist es
eigentlich
hier zur Seite. Über die On-Ramp-Bewegung Staaten. Wir haben diese
Bewegungsstaaten vor langer Zeit geschaffen. Und Sie können
das tun, die
Aufzählung einschalten Aufzählung einschalten um auszuwählen, welche Animation
Sie an einem Ort haben möchten. Also werden wir
das wieder tun und zur Spielerbasis
gehen, zur Spielerbasis
gehen, wobei
der isClient ausgepackt wird. Und drinnen von hier können wir
davon ziehen und Switch sagen, diese Aufzählung
einschalten. Was sollte also passieren
, wenn es ein Seil ist? Was sollte also passieren, wenn
wir dieses Seil haben? Wir wollen diese Animation abspielen. Das ist also die Seil-Animation. Okay? Und was ist eine Leiter, wenn es ein Brief ist,
wollen wir eine andere Animation spielen. Lassen Sie mich also kopieren, fügen Sie
das hier unten ein. Und jetzt
haben wir keine wirkliche Animation dafür. So können wir hier zur
Struktur gehen und Sie können eine neue Animation hinzufügen als Leiteranimation
bezeichnet wird. Wir haben nicht wirklich
einen für das Spiel. Ich zeige Ihnen nur, wie
Sie es schaffen können, falls Sie haben oder lernen möchten,
wie Sie es dynamisch machen können. also hier ein
Papier-Flipbook erstelle, Buchstabenanimation, kann ich es
einfach hierher verschieben. Was Sie jetzt tun können,
ich werde nur eine zufällige Animation erstellen, nur
um zu sehen, ob es funktioniert. Also gehe ich zum
Spieler nach Tsarina. Wenn ich einfach alles speichere
, was ich kompilieren muss
, um hier zu erscheinen
und zu Serena zu gehen. Und aus irgendeinem Grund erscheint es
nicht wirklich. Ich denke, ich muss
in meiner Spielerbasis kompilieren. Also hier klicken und kompilieren. Denken Sie daran, sehr
wichtig zu kompilieren. jetzt
in den Standardeinstellungen der Klassen zu Serena zurückkehren, können
Sie sehen, dass es erscheint. Für die Schriftzug-Animation stelle
ich das Schwein einfach hierher. Das Schwein untätig. Etwas sehr Zufälliges,
nur um zu sehen, ob es funktioniert. Du kannst das auch auf Luke machen, gehst zu Luke und lege einfach zufällige Schweine-Animation,
nur um zu sehen, ob das funktioniert. Jetzt ist es auf Brief und wir können versuchen, auf Platzieren zu klicken, wenn ich
wieder auf Play-basiert gehe, um
sicherzustellen, dass
alles in Ordnung ist. Also lasst uns das treffen oder das hier
verbinden. Für die letztere Animation verbinde
ich
sie hier unten. Jetzt haben wir also beides. Und wenn wir nur anrufen, also entfernen wir den Kunden, wenn es falsch ist, werden wir
einfach wegspringen. Und lass mich wieder auf
Pins ausblenden klicken, genau so. Okay, jetzt sollte das funktionieren. Wenn ich also auf Play klicke, klettere ich
jetzt. Du siehst, dass das funktioniert. Und was ist, wenn ich
das in ein anderes Seil umwandle? Aber was ist, wenn das eine Leiter wäre? Also habe ich diesen Klettertyp geändert. Das ist jetzt eigentlich eine Leiter. Und wenn ich jetzt klettere,
siehst du, dass sich die Animation ändert. Je nachdem, ob Sie ein Seil
haben oder nicht, ändert
dies die Animation in
die Animation,
die
Sie hier hinzugefügt haben,
je nachdem, ob es sich um die
Sie hier hinzugefügt haben,
je nachdem, ein
Seil handelt oder ob es sich um eine Leiter handelt.
61. Benutzerdefinierter Kollisionskanal: Das Problem, mit dem wir gerade konfrontiert
sind,
ist also eine Farm, die
hier an meinem Seil klemmt. Lassen Sie mich
diese Animation tatsächlich ändern. Das sieht so seltsam aus. Ich muss das wieder in ein Seil verwandeln. Wenn ich also zu den Blaupausen
gehe, geh zum Seil klettern und
es hier tatsächlich wieder in ein Seil umwandeln. Okay? Das Problem, mit dem wir
gerade konfrontiert sind, ist, wenn ich hier
klettere und
wenn
ich
nach oben gehe, kann ich hier nicht wirklich in den oberen Teil gehen. Und der Grund ist diese
Kollisionskachel hier. Denken Sie daran, dass wir Kollisionen haben. Diese Kollisionskacheln
blockieren meinen Charakter
daran, sich hierher zu bewegen. Und deshalb müssen wir irgendwie sagen, dass diese Kollisionen beim
Klettern ausgeschaltet werden. Aber wir wollen es nicht wirklich für jeden
ausschalten. Wenn wir wollen, wenn wir
es für alle ausschalten, werden
all diese Feinde vom Boden
fallen. Und so werden alle Spieler , die mit dir verbunden sind, sie werden vom Boden fallen,
wenn es keine Kollision gibt. Wir möchten
es also speziell
für diesen Client entfernen , der Player ist. Und der klügste
Weg, dies zu tun, ist das Erstellen eines eigenen benutzerdefinierten
Kollisionskanals, was sehr, sehr einfach ist. Also bringe ich dir
das jetzt bei. Wir können dies tun, indem wir zu Bearbeiten gehen und zu den
Projekteinstellungen gehen. Und drinnen
können wir zur Kollision gehen, die hier unter dem Motor liegt. Und dann hier in den
Objektkanälen sind dies Kollisionen, also können wir einfach auf neuen Objektkanal
klicken und hier darauf klicken. Und dann müssen wir ihm hier etwas
geben. Nennen wir
es einfach Zeile ist Layer. Und die Standardantwort, lassen Sie es uns einfach so einstellen, dass sie sich überlappt. Klicken Sie auf Akzeptieren. Jetzt haben wir einen Kanal. Was heißt das also? Was erscheint das? Und das erscheint tatsächlich. Gehen wir zurück zu der
Kachelzuordnung, die wir im Kachelmap-Ordner
erstellt haben . Hier haben wir
diese Kollisionen. also daran, dass Sie hier Denken Sie also daran, dass Sie hier in die Render-Komponente
für diese Kachelkarte denken, wenn Sie zur Kollision hinuntergehen, können
Sie sehen, dass Alices hier eine Kollision
findet,
Kollisionspresets. Klicken wir auf diesen
Pfeil, um ihn zu sehen. Sie können sehen, dass es uns alle hier
blockiert. Und wir haben gerade
diesen Kletterspieler geschaffen. Sieh dir an, wie einfach es ist. Es erscheint einfach hier. Wenn Sie also
einen benutzerdefinierten Kanal erstellen, wird er hier angezeigt. Und Sie können es tatsächlich auf eine Einstellung einstellen, je nachdem,
was Sie versuchen. Bisher ist unser gesamter
Spieler ein Bauer. Und wenn der Spieler dran ist, werden
wir von der
ganzen Kollision blockiert , die unter den Kacheln liegt. Und für den Klemmspieler setzen
wir ihn jetzt so ein, dass er sich standardmäßig überlappt. Denken Sie daran, dass Sie dies
jederzeit ändern können indem Sie hier oben klicken
und Kostüm sagen. Und du kannst
es immer in etwas anderes ändern. Nur weil Sie es hier in
den Projekteinstellungen und
in der Kollision gesagt haben, nur weil Sie
den Standardwert auf Überlappung festlegen, können Sie
natürlich
einfach auf Benutzerdefiniert klicken und es in etwas anderes ändern, aber es wird standardmäßig nur
überlappt sein. Also hier gehe ich
zurück, um alles wieder zu blockieren. Standardmäßig ist der
Kletterspieler jetzt auf Überlappung eingestellt, was bedeutet, dass ich jetzt
tatsächlich alle
diese Zeilen hier entfernen lassen
kann . Standardmäßig kann ich jetzt, wenn ich der Kunde bin, der Spieler ist, all
diese Kollisionen durchlaufen , weil sie mich nicht mehr blockieren
werden. Sie werden sich mit mir überschneiden. Also müssen wir ihm
jetzt dem Motor sagen , dass ich, wann immer ich klettere, möchte, dass der Spieler
dieser Cholin ist, der Spieler ist. Ich möchte nicht, dass mein
Spieler immer noch ein Teich ist, denn
obwohl ich
diesen Kanal gerade gemacht habe, wenn
ich meinen Charakter
noch klettere und er
durch diese Kollisionen blockiert wird. Wir müssen also sagen, dass wir unseren Kanal wechseln
wollen. Und wenn ich
jetzt zu einer Spielerbasis gehe, kannst
du es hier auf dem
Sprite oder auf der Kapsel sehen. Hier auf diesem hellen kann
man sehen, dass ich bin,
also ist der Objektkanal verpfändet. Und denken Sie daran die Renderobjekt-Teiche vom
Kollisionskanal
blockiert werden . Also müssen wir
diese Einstellungen ändern. Und machen wir das
in der Spielerbasis in der wir den Kunden haben, wir sind nur daran
interessiert, dies zu tun wenn der Spieler klettert. Machen wir das, bevor wir die Animation
ändern. Lassen Sie mich also all
diese Animationen
zur Seite bewegen , weiter weg. Also wann immer ich in der Linie bin, möchte
ich den Spieler nehmen. also diese
Kapselkomponente nehmen, können
Sie sehen, dass die Kapselkomponente
hier auf Kostüm eingestellt ist, aber hier unten
im Objektkanal ist
sie auf einen Teich eingestellt und wir
möchten nicht, ist
sie auf einen Teich eingestellt und wir
möchten nicht dass sich die Kapsel überlappt. Also lasst uns zurück
zur Kapsel gehen, weniger ziehen Sie das
hier auf der Welt raus. Und wir können
diesen Kollisionstyp ändern. Wenn Sie also runtergehen würden, können
Sie sehen, dass dies
der Objekttyp ist. Und immer gut, sich die Namen
anzusehen , denn dann kann man tatsächlich
wissen, wie es heißt. Wenn Sie also einfach von
hier ziehen und Kollision sagen,
denn das ist es, was wir
daran interessiert sind, uns zu ändern. Ich erinnere mich, dass es Objekttyp
hieß. Versuchen wir zu sehen, ob wir
eine Funktion namens
set object type haben . Und hier setzen oder ist es hier Kollisionsobjekttyp
festlegen. Also klicke hier an. Und wenn ich aus irgendeinem Grund einen für mich
gemacht habe, lasst mich einfach mein altes löschen
und mich hier verbinden lassen. Wann immer wir klettern, bin
ich daran interessiert,
meine kollidierende Kapsel zu wechseln . Ich möchte es in
eine Linie ändern, die Spieler ist. Dies ist der Brauch
, den wir angefertigt haben. Und wenn ich nicht mehr
klettere, möchte
ich
es wieder auf on ändern. Sie können also kopieren, das hier unten
einfügen und so wieder
verbunden sind. Und lasst es uns wegziehen. Hier. Du kannst es
wieder in ein Gedicht umwandeln. Also
wechseln wir es einfach zu einem Klemmspieler,
wenn wir klettern, aber wir ändern es wieder auf ****, wenn wir
nicht mehr klettern. Lassen Sie uns nun kompilieren und speichern, und es ist so einfach wie das. Versuchen wir also zu sehen,
ob wir irgendwelche Fehler haben. Jetzt kannst du sehen,
jetzt kann ich es
durchklettern , weil ich
ein Kletterspieler bin. Objektkanal und
meine Kollisionen. Und ich kann hier rauf gehen, und jetzt kann ich einfach
herumlaufen, weil ich
jetzt in meinem
Pfandobjektkanal bin.
62. Anpassung des Aufstiegs: Okay, also das kleine Problem, das
wir gerade haben, wann immer wir laufen und springen, landet es
manchmal am Seil. Manchmal sieht man, wie es
an der Seite des Seils landet. Also nicht ganz speziell
an der Robe hier. Wir müssen also
den Sprungort anpassen wenn Sie hier
auf das Seil springen. Also lass mich hierher zurück und
gehe zurück zur Spielerbasis. Und der beste Weg, dies zu tun wird irgendwo kontinuierlich
aktualisiert. Und die Sache, an die ich
denke, wenn ich das mache, ist ,
welche Ereignisse ich ständig aktualisieren kann
, die ich verwenden kann? Ich möchte nicht wirklich ein Event
ankreuzen. Das will ich nicht wirklich machen. Wir haben also ein paar Timer, aber diese hören auf, wenn ich meinen Kunden
so eingestellt habe, wenn ich kletterte und das ist, was ständig
aktualisiert wird, hört
dies auf,
wenn ich klettere. Die Sache ist also hier, wenn
wir auf und ab gehen, das wird immer noch aktualisiert. Also bewege ich mich immer noch auf und ab. Also lasst uns das hier machen. Nachdem wir die Bewegungseingabe hinzugefügt haben. Wir wollen
den Standort nur anpassen , wenn wir Cholin
sind. Lassen Sie mich also, denn
wenn ich das nicht tue, wird
es den
Standort anpassen, wenn ich nur mit
dem Seil interagiere und klettern kann. Ziehen wir das also hierher und machen einen booleschen Wert oder
tatsächlich einen Zweig. Wann immer ich klettere, möchte
ich den Standort meines
Kunden anpassen. Was wir also
versuchen, ist, dass wir den Standort
des Spielers darauf einstellen wollen , wo immer dies ist, dieser Schauspieler hier ist
dieser Seilschauspieler. Wo auch immer dieser Schauspieler ist und wenn wir darauf
springen, möchte
ich die Position der
Spieler x festlegen. Denken Sie daran, dass der x-Standort gerade schief läuft. Denn entweder ist der Spieler zu weit links oder
zu weit rechts vom Seil. Es ist also der x-Standort, den
wir hier anpassen müssen. Ich möchte festlegen, dass meine
Spieler x Standort identisch mit diesem
Actors x Standort sind. Wenn ich also zurück
zur Spielerbasis gehe, wenn ich
also hier behaupte, möchte
ich meinen Standort anpassen. Nehmen wir dieses Objekt
oder Klemmobjekt. Lassen Sie mich mit der rechten Maustaste klicken und sagen Zu einem validierten Get
konvertieren. Denn denken Sie daran, wenn Sie sich
nicht mehr überschneiden, wenn ich zu meiner Logik
zurückkehre können Sie sehen, warum
ich das mache. Gehe zurück zur Kletterbasis. Denken Sie daran, wenn Sie
nicht mehr klettern, setzen
Sie diese
Variable auf nichts ein, was bedeutet, dass Sie nichts
in dieser Variablen haben. Deshalb stelle ich
das ein, nur um keine Bugs zu bekommen. Also sehe ich nur, ob
diese Variable gültig ist, ob sie etwas enthält
und wenn ja, wenn es so ist. Lassen Sie mich also hier
den Standort der Schauspieler nehmen ,
aber der Standort der Schauspieler. Und dann bekomme ich auch
den Spielerstandort des Schauspielers. Also hol dir den Standort des Schauspielers. Und dieses, das
Ziel ist Selbst. Denken Sie daran, dass wir in
der Spielerbasis sind, also ist dies der Standort des
Spielers. Dies ist der Standort des Objekts. Ich werde für beide
brechen damit ich X, Y
und Z benutzen kann, weil ich hier nur
an dem x interessiert bin. Ich werde den
Vektor auch hier durchbrechen. Und ich werde diesen Code nur hier
ausführen und den Standort des Spielers
anpassen, Standort des Spielers
anpassen wenn wir nicht am Seil sind. Aber wenn wir uns auf das Seil
eingestellt
haben, möchte ich diesen Code nicht mehr ausführen. Wenn also das x des Seils nicht dem x der Spieler
entspricht, stimmt das, wenn sie
also
anders sind. Also verbinde ich
das hier als gültig. Wenn das stimmt, passe ich
den Standort an. Also werde ich hier tatsächlich eine neue Veranstaltung
machen. Denken Sie daran, dass dies auf
dem Client läuft und wenn
wir einen Standort anpassen, handelt es sich um visuelle Updates. Und das müssen wir
durch eine Abteilungsbenachrichtigung tun. Lassen Sie uns also hier unten ein neues
Event machen. Nennen wir es benutzerdefiniertes Ereignis. Eigentlich machen wir es zuerst in
ein Blueprint-Interface. Lassen Sie mich also zum
Blueprint Interface der Spieler gehen. Und lassen Sie uns eine neue
Funktion namens Anpassen erstellen, wobei
Zeile Standort ist,
zusammengesetztes Speichern. Ich weiß nicht, ob wir gerade Input brauchen
. Ich kann mir gerade nicht vorstellen. Machen wir es einfach und wir können immer Variablen hinzufügen,
wenn wir möchten. Also hier lass es mich nennen und sagen
anpassen, standort klettern. Und das ist eine
Blueprint-Interface-Funktion. Lass es uns durch den Server führen. So benutzerdefinierter Server und
passen Sie die Linie an. Wenn ich
Kletterstandort schreiben kann und lass es uns ändern, um
Antwort und zuverlässig zu laufen. Und von hier aus können wir
dieses Server-Event
natürlich durchführen , nur Orte
klettern. Was wir jetzt tun
wollen, ist hier oben, wenn das stimmt, wenn der Standort des Seils und der x-Standort nicht mit dem x-Standort des Spielers übereinstimmen . Wir möchten den Standort des
Spielers anpassen. Also passe das Klettern an Wir wollen diese
Veranstaltung im Wesentlichen durchführen. Also hier möchten wir den Standort
des Spielers anpassen. Letztendlich versuchen
wir
also , einen
Vektor zu erstellen. Also lasst es uns erstellen. Jetzt. Wir versuchen, einen Vektor
namens Kletterstandort zu erstellen. Und verwandeln wir es in einen Vektor,
weil es sich um einen Ort handelt. Und das hier, letztendlich
wollen wir es einer Rep Notify zuweisen. Und innerhalb dieser
Klemmstelle zum Auswickeln müssen wir nur
den Standort des Schauspielers festlegen. Das ist es, was wir versuchen zu tun. Das Ziel ist Selbst, also versuchen wir, den Standort
des Spielers,
diesen neuen Standort und
diesen angepassten Ort festzulegen diesen neuen Standort und
diesen .
Verbinden wir es hier. Dies ist das, was wir letztendlich tun
wollen. also den Standort des Spielers auf diesen angepassten Ort ein
, der sich an diesem Seilstandort befindet
, der x Standort abseilt. Wenn also das x des
Seils nicht dasselbe ist und als Spieler
fungiert, als Spieler
fungiert, möchten
wir den Standort anpassen. Wie passen wir
den Standort an? Zuerst möchte ich
dieses klumpende Objekt erneut nehmen, Sie können ein
validiertes Get machen, nur
um sicherzustellen, dass es gültig ist. Also nochmal, nehmen wir mal, lass mich das noch einmal kopieren. Wir werden tatsächlich dasselbe
schreiben. Also bekommen wir den Standort der Seile und wir bekommen den Standort des
Spielers. Das einzige,
woran wir interessiert sind, ist,
diesen x-Standort zu ändern , da wir
den y-Standort auf diese Weise nicht wirklich interessiert sind und
daran interessiert sind, dies anzupassen. Wir sind auch nicht daran
interessiert, das z anzupassen. Wir sind nur daran interessiert, das x hier
anzupassen. Wenn ich zu meiner Blaupause zurückkehre, das einzige, woran wir daran
interessiert sind, dies anzupassen. Lassen Sie mich also meinen
Kletterstandortvektor hier nehmen, verbunden und ziehen Sie
davon und sagen Sie „Vektor machen“. Was wir
hier tun können, ist, dass wir den Standort des Spielers
festlegen möchten . Denken Sie daran,
dass dies der Standort oder die Einstellung des Spielers ist. Also wollen wir den
Standort des Spielers auf die Seile x setzen. Dann machen wir y und z. Wir wollen nur
, dass sie gleich bleiben. Wir wollen
das Y und Z des Seils nicht haben. Wir wollen nur das Y und Z
und das Z des Spielers, was auch immer es gerade ist. Wir sind also nur daran
interessiert, das x anzupassen. All diese Informationen
werden gerade
in diesen Vektor fließen . Und wann immer es
die Benachrichtigung der Tour-Vertreter einstellt, wird
diese Funktion hier ausgeführt. Jetzt werden wir den Standort
der Schauspielerin festlegen. Okay, also lasst uns auf Jetzt spielen
klicken, wenn wir aufs Seil springen, Okay, jetzt ist das
wirklich perfekt. Gehen wir zurück, um hierher zu springen. Auch perfekt. Okay, also wenn wir
das Spiel jetzt spielen, spiele
ich als Luke auf
dem Server und
Serena auf der Linie. Also mach sie einfach so
ein bisschen größer. Also auf dem Server und jetzt kann
ich aufs Seil springen. Ich passe meinen
Standort gut an. Z wie auch immer ich gesprungen bin, es passt meinen Standort an. Alices ID auf dem
Client, um sicherzustellen, dass alles funktioniert,
also springe ich passe meinen
Standort richtig an. Sie können auf dem Server sehen, dass
es hier einen Fehler gibt. Ich bin Kunde,
aber irgendwie wird meine Animation
nicht abgespielt. Ich denke, es wird
sich später in
den Lektionen beheben , in denen wir
posieren und aktualisieren. Du siehst jetzt, dass es funktioniert. Also werden wir diese Columbia-Animation innehalten und aktualisieren weil
wir sie offensichtlich nicht
spielen wollen , während wir springen. Aber anfangs
werden wir
diese Sprunganimation einstellen ,
abspielen und stoppen. Ich glaube, es geht durchweg. Die Sache,
mit der es schief geht , ist hier in der Spielerbasis. Es spielt so wie es spielt. Obwohl wir
einen Booleschen Wert hier in
Bewegung nach rechts und links platziert haben . Es spielt die
Animation tatsächlich vorher oder nachher hier ab. Hier in der, in der
Rampe steigt,
nachdem wir das Flipbook
auf Klettern oder Leiter gesetzt haben, geht
es immer noch
hier durch und spielt. Später werden
wir also anhalten und die Animation
starten,
je nachdem , ob der Spieler
springt oder nicht. Also denke ich, dass es sich selbst reparieren wird. Später werden wir sehen. Aber
lass es uns im Moment einfach so sein. Also
funktioniert jetzt alles richtig und das Springen ist in Ordnung,
alles ist gut. Wir passen den Standort an. Lassen Sie uns also kompilieren, alles
speichern und mit der nächsten Lektion fortfahren.
63. Aufstieg entfernen: Okay, also haben wir einen kleinen Bug , den wir jetzt beheben müssen. Und wenn ich zum
Kunden gehe und zum
Gewand gehe und lass mich zu den Ansichtsfenstern
gehen. Ich werde das hier tatsächlich
erhöhen
und hier aufstellen, damit ich
tatsächlich von oben klettern kann. Jetzt kann ich also als Server spielen
und ich klettere hier hoch, klettere nach oben,
das funktioniert perfekt. Aber das Problem ist jetzt,
wenn ich runtergeklettert bin, kann
man sehen, dass das auch gut
funktioniert. Aber wenn ich jetzt
hier oben bin und nach oben klicke, kannst
du sehen, dass ich mich
beruhigen kann, das ist in Ordnung. Aber wenn ich hochklicke,
kann ich es tatsächlich spammen. Und es sieht so aus. Ich meine, es ist nicht wirklich das
größte Problem Ihres Spiels, aber visuell denke ich, dass wir den Spieler dazu
bringen können, dies zu tun. Ich denke, es ist ein
bisschen dämlich, also lasst uns das reparieren. Wie entferne diesen Kunden
Bob, der hier oben spammt. Also lasst uns wieder hierher gehen. Und um dies zu tun,
denke ich, dass der beste Weg darin besteht, eine weitere Kollisionsbox hinzuzufügen, die Ihnen dann verweigert,
die Auf-Taste zu drücken, wenn Sie dies tun. Fügen wir also oben auf diesem Seil eine Kollisionsbox hinzu. Lass uns das in
der Kletterbasis machen. Und hier im Render-Objekt, fügen
wir einfach ein weiteres
Kollisionsfeld hinzu. Suchen Sie
im Kollisionsfeld nach Kollision, und nennen wir dies eine
obere Kollisionsbox. Die Sache, die wir
anfangs hier machen wollen und die Spielerbasis. Was wir
tun wollen, ist, dass wir
eine Veranstaltung machen wollen, die besagt, dass er hochklettern kann. Und das ist im Grunde
nur ein boolescher Wert. Also lasst uns einen Booleschen
Anruf machen und hochklettern. Dies ist eigentlich das,
was wir
tun wollen , und wir werden
es so einstellen, dass es repliziert wird, offensichtlich weil
alle Kunden darüber wissen
müssen. Und so kann Bob klettern, das
versuchen wir zu setzen, und offensichtlich werden wir es durch den Server
einstellen. Lassen Sie uns also benutzerdefinierte
Ereignisse erstellen,
die durch den Server gehen und sagen, dass das
Set hochklettern kann. Und lass es uns hier verbinden. Und jetzt brauchen wir ein, wir brauchen
hier ein normales Ereignis, keinen Server. Lassen Sie mich also
daran denken,
dies auf dem Server auszuführen und auf unzuverlässig zu
klicken. Also wollen wir
ein normales Set namens Set, können Bob klettern und lassen Sie uns das
innerhalb des
Blueprint-Interface machen . Ende der Spielerbasis
Blueprint Interface. Hier eine neue Funktion
namens set zu erstellen, kann hochklettern. Lass uns einen booleschen Wert machen.
Mach das Gleiche. Du kannst hochklettern. Okay? Jetzt können wir zurück zur
Spielerbasis gehen und dieses
Event-Set hier aufrufen . Und jetzt können wir die
Serverereignisse durch dieses ausführen. Mal sehen, wo es
ist, kann hochklettern. Und lass es uns verbinden. Und jetzt wird es
das durchlaufen. Das ist es, was wir versuchen
zu rennen und wir werden es auf „false“
setzen, wenn der
Spieler Bob nicht klettern kann. Also lasst uns kompilieren
und speichern und gehen wir zurück
zur Kletterbasis. Und hier drin haben
wir diese obere Kollisionsbox. Ich werde
es ein bisschen nach oben verschieben, also ist es hier oben, damit ich es kompilieren und speichern
sehen kann. Und wir können zurück zum Seil gehen und wir können die Größe tatsächlich
anpassen. Ich denke nicht, dass es so groß sein
sollte. Ich meine, es
spielt keine Rolle, aber vielleicht ändern wir
es in etwas wie 25. Denk nach, ich kann es einfach versuchen. Und ich lege
es einfach hier rüber. Wenn der Spieler also hier oben auf
dem Boden
steht und diese Box trifft, können
Sie die Aufwärtstaste nicht drücken. Okay, also kompilieren und speichern wir das und lass uns
zurück zur Kletterbasis gehen. Klicken Sie nun auf dieses
obere Kollisionsfeld, Gehen wir nach unten und
klicken Sie auf dieses, wenn die Komponente überlappt. Was sollte also passieren, wenn
Sie diese Box hier überlappen? Was passieren sollte, ist, dass
Sie nicht auf
den Up-Button klicken können und nicht hochgehen können. Schon wieder. Lassen Sie mich einfach den ganzen Code
kopieren. Wir machen das Gleiche. Wir gehen durch
diesen Server prüfen, ob es der Spieler ist, und wenn es der Spieler ist, nennen
wir diesen einen genannt, wir nennen es set kann hochklettern. So kann set hochklettern und es ist die Nachricht, da es sich um eine
Blueprint-Interface-Funktion handelt. So kann klettern Bob ist auf
false gesetzt, denn wenn Sie diese Kollisionsbox
treffen, können
Sie die Aufwärtstaste nicht drücken. Jetzt lassen Sie uns jedoch
die zweite machen , wenn
Sie dieses Feld verlassen. Wenn Sie
zum Beispiel im Untergrund sind , können Sie hochklettern. Lassen Sie mich das also miteinander verbinden. Eine andere Komponente ist auch diese hier drüben. Du kannst hochklettern,
wenn du dich nicht mehr mit
dieser Box überlappst. Die Sache ist also, jetzt haben
wir diesen booleschen Wert. Und so in der Spielerbasis, Mal sehen, wo wir es benutzen können. In der Spielerbasis können
wir hier verwenden, wenn wir überprüfen, ob der
Kunde eingegeben wird, wir möchten nicht, dass der Spieler
klettert, wenn dies auf „true“ eingestellt ist, und er ist dort oben am Boden. Also kann ich hier hochklettern. Wir können sagen, anstatt nur zu sagen,
dass es nicht gleich 0 ist, können
wir dies einfach löschen und
auf etwas anderes upgraden. Wenn es also niedriger als 0 ist,
was bedeutet, dass der Spieler nach unten klettern
möchte, haben
wir damit
kein Problem. Der Spieler kann nach unten klettern. Aber wenn der Spieler und jetzt wir das wieder nehmen können, kann
ich eigentlich einfach, whoops, ich kann tatsächlich einfach
davon ziehen und sagen, ob es größer als 0
ist, was bedeutet, dass der Spieler
ich versuche hochzuklettern. Hier ist das Problem, das wir haben. Also wenn der Spieler
versucht
hochzuklettern und er es darf, kann man Buck klettern. Denken Sie daran, dass sie nicht hochklettern können ,
wenn sie mit
dieser Kollisionsbox
kollidieren . Wenn es also größer als 0 ist, können
wir end sagen. Und sie können Geld klettern. Dann wollen wir
weiter klettern. Und was wir
hier tun können, können wir einfach sagen, was sich daraus ziehen und sagen kann, oder dieses oder Boolean. Und dann können wir das
hier verbinden und uns dieses Jahr verbinden. Was wir also sagen, ist,
wenn der Spieler nach unten drückt,
was bedeutet, dass die Z-Achse negativ sein
wird. Wir können klettern. Wenn die Z-Achse positiv ist, bedeutet
das, dass der
Spieler nach
oben drückt und wir tatsächlich hochklettern
können. Dann werden wir klettern. Es ist also entweder diese Bedingung hier oder diese Bedingung hier. Das
heißt es letztendlich. Jetzt können wir also hochklettern, also überprüft es jetzt, kannst du tatsächlich hochklettern? Und das wird unser
Problem mit dem Spammen beheben. Also lass mich kompilieren und speichern. Ich kann einfach auf Play klicken
und sehen was passiert. Wenn ich jetzt hochklettere, habe ich einen kleinen Käfer. Du siehst, dass ich Bob nicht klettern kann, also gehe ich tatsächlich
zurück und schaue , was ich falsch gemacht habe. Die Z-Achse kann also
hochklettern, durchläuft dies. Und es legt diesen Wert fest. Und lass mich hier runter gehen, um zu sehen ob ich das richtig gesagt habe. Das Problem ist
gerade, dass dies standardmäßig
wahr sein muss , da Sie
standardmäßig nach oben klettern können. Also müssen wir sicher zusammenarbeiten. Denken Sie also auch daran, dass das standardmäßig als wahr
hochklettern kann. Also können wir hier tatsächlich
hochklettern. Du siehst jetzt, dass
wir Bob besteigen können. Und wenn ich auf Bob klettere, kann
ich herumlaufen. Wenn ich auf den Up-Button klicke, kann
ich nicht mehr ausgeben. Aber wenn ich auf
den „Fertig“ -Button klicke, kann
ich die Leiter runterklettern. Jetzt funktioniert es also.
Wir können hier nicht spammen. Wir können einfach runter gehen, aber wir können hier rauf
und runter gehen. Das ist also kein Problem.
64. Pausen der Climb: Das letzte
in diesem Abschnitt möchte
ich die
Clientanimation anhalten, möchte
ich die
Clientanimation anhalten wenn ich nicht klettere. Wenn ich also hier klettere,
siehst du, dass die Animation noch läuft und das
will ich nicht tun. Wir hatten auch
vorher ein Geld, wo ich als Kunde gespielt habe. Und ich mache es hier nur ein
bisschen größer. Wenn ich klettere, siehst du, dass
mein Charakter hier komisch
aussieht, die Animation sieht seltsam aus. Vielleicht wird es sich selbst reparieren
, sobald wir die Animation pausieren und
abspielen. Also lasst uns das versuchen. Gehen wir zurück zur
Spielerbasis. Und drinnen
möchte ich, dass du das
in der Bewegung auf
und ab machst , weil es ständig überprüft, ob ich mich
nach oben oder runter bewege oder
einfach still stehe. Was ich jetzt machen werde,
wird ein bisschen durcheinander und wir müssen das am Ende dieses Videos
aufräumen . Also lass mich das hier
runterziehen. Also möchte ich das
immer aktualisieren , wenn ich klettere, denn
bevor ich klettere und ich wirklich
nichts tun
möchte. Nach diesem klettere ich also.
Trennen wir das. Bevor wir also
den Standort anpassen, lassen Sie uns
die Animation spielen und stoppen. Nehmen wir also unsere Z-Achse hier. Die Z-Achse
wird uns einfach sagen, drückt der Spieler nach oben oder unten oder steht der Spieler still? Wenn dies also nicht gleich 0 ist,
was bedeutet, dass sich der
Spieler bewegt, möchten
wir die Animation abspielen. Um die Animation abzuspielen, kannst
du
dieses Sprite hier machen und
du kannst dann „Play“ sagen, und es
spielt das Flipbook ab. Aber denken Sie daran, dass Sie
das Flipbook nicht einfach spielen
können , weil
Sie sich gerade im
Autokennzeichen des Kunden befinden. Und das ist ein visuelles Update. Auch hier sind wir im
Multiplayer, also
müssen wir es durch eine Wiederholungsbenachrichtigung ausführen. Denn wenn Sie dies tun, wird es
nur ein Kunde sehen. Also lasst es uns entfernen. Und jetzt müssen wir es zu einem neuen
Event machen , das die Pause,
klettern Flip Book heißt. Und das können wir
auf „true“ oder „falsch“ setzen. Gehen wir also zurück zur Interface-Funktion
für die Spielerbasis. Machen wir eine neue Funktion. Und nennen wir das hier. Pause, kletterte. Angenommen, geklettert, Buch umklettern. Machen wir
hier eine Variable bei Boolean. Ich nenne es einfach Pause,
klettertes, beleuchtetes Buch. Und lasst uns kompilieren und speichern. Okay, also lasst es uns hier nennen, blind
pausieren, Buch umdrehen, und wir wollen
es auf den Server laufen lassen, nennen es pause limed Flip Book. Nun, dieser ist auch, hat
auch ein boolesches, das als
Pause Blind Flip Book bezeichnet wird. Okay? Also stelle ich hier nur
sicher, dass ich B
vor meinem Booleschen habe ,
nur aus Gründen der guten Praxis. Und okay, jetzt
haben wir dieses Ereignis, führen es
zuverlässig auf dem Server aus, und wir möchten es auf eine Variable
bewerben. Werben Sie dies auf eine Variable
namens Pause, Cholin, aber kippen Sie Buch und ich werde
hier ein B davor stellen und die
Leerzeichen einfach so entfernen. Okay, das
ist also ein Vertreter benachrichtigt. Klicken Sie also hier,
klicken Sie auf Rep benachrichtigen, kompilieren und speichern. Und lasst uns den Server hier
durchlaufen lassen. Also pausiere. Ich habe jetzt viele. Also lass mich einfach suchen, pausieren, cholin aber Buch spiegeln. Lass es mich hier durchlaufen. Und letztendlich
versuchen wir, zu dieser Pause zu gehen, zu klettern, das Buch zu drehen und zu prüfen, ob die
Pause auf wahr oder verrückt eingestellt ist. Wenn also die Pause auf wahr eingestellt ist, wollen
wir dieses
Sprite machen und Stop sagen. Hier, das Flipbook. Wenn Sie die Maus darüber halten, heißt
es „Wiedergabebücher stoppen“. Also wollen wir
die Animation stoppen. Wenn die Pause stimmt, möchten
wir die Animation beenden. Eine der Pausen ist falsch,
was bedeutet, dass wir die Animation
abspielen möchten. Wir können sagen „Start“
oder „tatsächlich spielen“. Es heißt also Play. Also
spielen wir die Animation ab. Und jetzt gehen wir zurück
und codieren diese Logik. Jetzt haben wir diese Veranstaltung bereit. Wenn wir also klettern und die Z-Achse, wenn wir drücken,
bedeutet das Drücken auf und ab , dass sie nicht gleich 0 ist, also wollen wir sie tatsächlich
verschieben, wenn das stimmt. Also lasst es uns hier verbinden. Wenn das stimmt,
möchten wir die Animation abspielen,
was bedeutet, dass wir
dieses Ereignis Pause, Klettern, Buch
spiegeln, pausieren,
klettern, Buch spiegeln können . Das hier. Wir
können dies also auf „false“ setzen. Da wir es also auf false setzen,
was bedeutet, dass wir
nicht pausieren möchten, möchten
wir
es nur hier einstellen, um es anzuhalten. Wenn dies also auf „false“ eingestellt ist, wird
es die Benachrichtigung entpacken,
hier sind Honorlock-Funktion. Und wenn es auf „false“ eingestellt
ist, wird
die Animation abgespielt. Jetzt möchte ich
die Animation nicht ständig abspielen, möchte sie
nur dann abspielen, wenn
sie noch nicht abgespielt wird. Was Sie also tun können, ist dieses
helle zu nehmen und dann
können Sie Flip Book sagen. Und jetzt können
wir sehen, dass wir, mal sehen, wir haben, da das Rückwärtsfahren spielt, dieser spielt. Wir wollen prüfen, ob
es bereits läuft. Und sagen wir mal, sagen wir „Nüsse“. Also, Whoops, nicht dieses. Es ist nicht B, was nicht boolean ist. Also, was wir hier sagen, schreiben
wir auch ein Ende
Boolean. Was wir jetzt sagen, wenn der Spieler auf und ab
drückt,
ist die Z-Achse nicht gleich 0 und die Animation wird
nicht bereits abgespielt. Dann mach weiter und spiele die
Animation, weil wir nicht wirklich daran
interessiert sind, weiter zu spammen. Spielen Sie diese Animation ab. Wir spielen
die Animation bereits ab. Wenn Sie die Animation also noch nicht
abspielen, wenn die Animation nicht
abgespielt wird und die Spieler
tatsächlich auf und ab drücken, möchten
wir die Animation
abspielen. Lassen Sie mich das einfach vorantreiben. Wir haben
Probleme mit dem Raum, also organisieren wir
die Dinge hier einfach ein bisschen. Okay, also das nächste, worauf
wir suchen wollen, wollen
wir jetzt sagen, der Spieler still steht,
was bedeutet, dass die Z-Achse gleich 0 ist, weil der Spieler
nicht auf und ab drückt. Wenn dies also wieder gleich 0 ist und die Animation bereits abgespielt
wird, möchten wir die Animation
beenden. Also und wieder Boolean, verbinde diese miteinander
und erstelle einen neuen Zweig. Und nimm das Falsche hier. Wir prüfen also,
ob die Z-Achse gleich
oder nicht gleich 0 ist,
was bedeutet, dass sich der Spieler bewegt. Wenn es falsch ist, weil sich der
Spieler tatsächlich nicht bewegt, wird er hier
runter gehen und prüfen, ob sich der Spieler nicht bewegt? Wenn das stimmt. Als würde es auch prüfen, ob die Animation bereits
abgespielt wird. Wenn das stimmt, pausieren
Sie
die abspielende Animation. Ich schiebe die
wieder nach unten. Und so. Jetzt
spielen wir die Animation oder pausieren die Animation,
wenn sie bereits abgespielt wird. Aber wir stehen still. Wir wollen
es tatsächlich pausieren , weil wir
die Animation nicht abspielen wollen , während wir still
stehen. Und als Sache, wenn
alles falsch ist, wollen
wir einfach unseren Standort
anpassen. Also lasst uns das hier runter legen. Und wenn wir hierher ziehen, wenn wir uns bewegen, aber die Animation wird bereits
abgespielt. Lass uns hier runter gehen. Es wird falsch werden,
es wird falsch. Und dann
passen wir nur den Standort an. Es konzentriert sich also zunächst darauf unsere Animation
abzuspielen oder unsere Animation zu
posieren, und dann wird es unseren Standort
anpassen. Okay, also denke ich, dass wir hier nicht
wirklich mehr brauchen. Mal sehen, ob
alles repariert ist. Ich klicke auf Play als
Server und lass mich hierher springen. Du siehst, dass ich nicht spiele. Wenn ich auf und
ab gehe, spielt es. Okay. Es sieht so aus, als wäre
jetzt alles in Ordnung. Großartig. Lassen Sie mich jetzt als Kunden gehen und öffnen Sie es hier. Das funktioniert auch. Mal sehen, ob wir
diesen Bucket noch haben , oder wir müssen ihn
vielleicht reparieren. Also lass es mich hierher bringen. Jetzt haben wir immer noch diese Box, also muss ich mir
ansehen, wo es schief gelaufen ist, diesen Fehler zu beheben, weil manchmal erscheint und manchmal nicht, also haben wir einen Fehler. Und ich denke, wenn wir einfach hierher gehen
und die Spielerbasis bewegen, testen
wir es einfach hier schnell. Wenn ich also den Spieler hier
stehen lasse und ich zur Spielerbasis gehe und ihn trenne, bewege dich nach rechts und links. Vielleicht läuft etwas
schief, weil wir hier auch Animationen einstellen. Also lass mich auf „Play“ klicken. Und wenn ich als Server spiele, eigentlich nicht der Server,
der Client, während ich die Service-Anleihe
habe. Durch Springen klick auf oben. Sie können sehen, dass die vollständige
Animation offensichtlich nicht
aktualisiert wird , weil ich dieses Ereignis
getrennt habe. Aber es spielt richtig. Es scheint, als hätten wir das nicht, wir haben nie ein
Problem auf der Leiter. Es gibt also etwas Dekodierung anfangs ist der
gesamte Code korrekt, es gibt nur diese Updates,
die passieren, obwohl wir ihm gesagt haben, dass wir das nur spielen
wollen, wenn
wir nicht klettern. Also werde ich sehen, was ich dagegen tun
kann. Ich glaube, der beste Weg, diesen Fehler zu
beheben, ist, wenn wir gehen, also spielt er diese Animation ab, aber manchmal
geht es durch und spielt
die On-Ramp-Funktion sexuell. So können wir versuchen, zu dem zu gehen,
denken Sie daran, dass wir diesen Bewegungszustand
hier gemacht haben , diese Bewegung wird gespeichert, tatsächlich die
Statusfunktion der
ausgepackten Bewegungen ausführt . also
hier zur
Bewegungszustandsfunktion gehen , bevor sie sich ändern kann, muss auch überprüft werden, ob
wir klettern oder nicht. Nehmen wir also unseren Kunden zu sein. Klumpt hier und
lasst uns einen Zweig machen. Und jetzt wird es sagen, schreiben
wir hier einen Nuss Boolean. Wenn wir also nicht klettern, darfst du
all diese Bewegungen ausführen. Wenn wir jedoch klettern, tun Sie
nichts. Also so etwas hier. Also lasst uns jetzt zusammen sparen und beten, dass alles in Ordnung ist. Versuchen wir
jetzt zu springen und es funktioniert. Versuchen wir es ein
paar Mal noch einmal, um sicherzustellen, dass es funktioniert. Okay, also
behebt das Problem jetzt. Jetzt funktioniert es und
wenn ich der Server bin und sie sich sehen können,
also springe ich jetzt
als Server, können
Sie sehen, dass das auch funktioniert. So können sich sowohl der Client als auch der
Server sehen. Und noch einmal, nur um
sicherzustellen, dass es nicht nervt. Also hier im Spieler wollte
ich nur meine
Kollision auf der Leiter überprüfen. Als Sprites
generiere ich keine Überlappungsereignisse, also spielt das keine Rolle. Wir, die Überlappungsereignisse
kommen hauptsächlich aus der Kapsel. Klicken Sie also auf die Kapsel schauen Sie hier auf die
Kollisionsvorgaben. Die Gedichte ignorieren sich also
gegenseitig und die Linie
, die Spieler sind,
überlappen sich gegenseitig. Eigentlich werde
ich das auch ändern. Ignoriere einander.
Die Spieler auf den Buchstaben
ignorieren sich also auch gegenseitig. Und Sie können es immer
ändern, wenn es nötig ist, aber das können
wir vorerst tun. Okay, jetzt
funktioniert alles und du kannst jetzt die Kamera sehen. Du kannst sehen, dass es ausbricht. Und das liegt daran, dass Sie nur darauf achten
müssen, es nicht in
diese Kollisionsbox zu legen , sonst kann
es kleiner werden. Ich werde es draußen platzieren, weil wir uns bereits
in der Überlappung befinden. Jetzt klicken wir auf Play. Spiele als Spieler und Client, um sicherzustellen, dass
das Spiel funktioniert. Also haben wir den Kunden hier
und wir haben den Spieler hier. Also antwortet der Spieler
jetzt den Server, Platz, diesen Kerl hier, den
Charakterplatz, Tsarina hier. Und wir bewegen uns. Und das sieht gut aus. Jetzt als Server. Das sieht auch gut und sie können sich nicht gegenseitig blockieren. Okay. Also
sieht alles richtig aus und ich kann den
Up-Button hier nicht ausgeben. Sowohl der Spieler als auch der Client
können die Schaltfläche „Nach oben“ überspannen. Ok, also
funktioniert alles richtig. Und lassen Sie uns versuchen, jetzt S2-Clients zu
spielen, manchmal müssen Sie es als zwei Clients
testen, um zu sehen, ob das auch
korrekt funktioniert. So spielen Serena und Luke, gehen hier rüber und springen auf den Brief ein, dass die
Dinge funktionieren. Der Client und der Server. Wenn Sie also
hier oben auf Spam klicken, spamiert nicht. Aber das ist gut. Alles funktioniert und der Kunde, die Kamera arbeitet. Sie können sehen, dass es
den Standort von ihm anpasst. Einfach so. Also funktioniert
jetzt alles richtig. Und wenn wir in Zukunft auf
irgendeine Kiste stoßen, werden
wir diese natürlich reparieren. Aber im Moment scheint es,
als würde alles funktionieren und es gibt hier
keine wirklich Bugs. Das nächste, was
wir tun können, ist, dass wir an
Gesundheit und Schaden arbeiten
können. Und das wird wirklich
interessant sein, denn jetzt können wir
von den Feinden beschädigt werden. Wir können ihnen Schaden zufügen
und es wird sehr viel Spaß machen. Lassen Sie uns also mit
dem nächsten Abschnitt fortfahren.
65. EXTRA: Bereinigen deines Codes: Also wollte ich
dieses zusätzliche Video hinzufügen weil ich denke, dass es sehr
wichtig ist , dass wir das Projekt
reinigen und ich denke, dass es
ein bisschen chaotisch wird. Lassen Sie uns also einen Teil des Projekts
reinigen. Das erste, was wir tun können, ist hier
in der Spielerbasis reinzugehen . Und hier haben wir unser
Klimasystem beendet und so weiter. Wir haben also
einige Ereignisse, die wir aufräumen können. Hier können
Sie also ab
dem Aufwärts- und Abwärtsgang auf diese Pins
doppelklicken, können
Sie also ab
dem Aufwärts- und Abwärtsgang auf diese Pins
doppelklicken um einen Umleitungsknoten zu erstellen. Und normalerweise mache ich
das, damit es
schlanker aussieht , damit wir hier klicken
und es hier unten schaffen können. Und anstatt zwei
davon zu haben, weil dies
anfänglich
kommt und von derselben Sache kommt. Ich kann einfach
von diesem ziehen und hier
verbinden und ich kann diesen hier
löschen. Und aus irgendwelchen
Gründen lässt es mich das nicht löschen. Lass es mich schließen und
erneut öffnen und löschen.
Jetzt funktioniert es also. Okay, also schiebe ich
das nach unten. Also versuche dein Bestes, um das
alles hier oben zu säubern. Und ich kann das den
ganzen Weg hierher bewegen. Wenn du willst, kannst du zwei davon
machen. Du kannst hier und eins hier machen und es
so verbinden, wenn du willst,
wenn du denkst, dass das sauberer aussieht, denke
ich, das sieht jetzt gut aus,
vielleicht verschiebe es
nach oben. Nein, ich denke, das ist gut. Hier drüben. Wir können diesen Rotz so bewegen. Wir können das hier so
hochziehen. Und dieser Teil des Codes. Das ist wie Das
sieht gut aus. Wir können es etwas nach oben bewegen, vielleicht weiter zurück, so
etwas. Und ich denke, das
sieht bisher gut aus. Also hier unten haben wir die
Berechnung der Z-Achse. Und ich werde es
darunter bewegen , weil
sie zusammengehören. Ich
verschiebe es einfach hier hoch. Dann haben wir den Can Climb Code. Ich werde
all das
hier unten bewegen , damit sie klettern können, ist
fast sauber oder
es ist tatsächlich völlig sauber, also
können wir das einfach näher ziehen. Das ist die Dose klettern, aber ich denke, sie können klettern. Dies sollte die
Nummer zwei sein, da
dies auch einer der ursprünglichen
Codes ist. Ich schiebe das nach unten. Und ich werde diesen Teil des hier aufgeführten
Codes
nehmen , einfach sicher, dass sie hier nicht zur Seite
kollidieren. Dann können wir auch hier
klettern. Dies ist eigentlich der Server, also muss das tatsächlich ein wenig nach unten verschoben
werden, kann dies
aber bewegen, kann darüber klettern. Also fängt es hier
an und geht zum Server. Und dann haben wir das
klettern und wir haben das Pausieren des Flipbooks und das Posen des Flipbooks
kommt von hier oben. Vielleicht kann ich das hier oben platzieren, oder ich schaffe Platz und stelle sie
einfach
nebeneinander hier drüben. Ich stelle gerne
Dinge zusammen damit sie nicht zu weit verbreitet sind, aber ich denke, diese liegen
viel zu nahe beieinander. Also werde ich es tun, ich werde das ein bisschen runterziehen. Das ist, das hier oben
ist der Hauptcode. Und wir haben hier unten einige
Ereignisse. Dies passt also
den Standort an
, der hier passiert. also den Standort anpasse, kann
ich ihn wieder einfach
hier zur Seite stellen , nur um
ihn sauberer aussehen zu lassen. Und ich kann das alles auswählen. Ich werde es wieder ein
bisschen nach unten bewegen, so. Okay, also wir haben
das Set klettert
und kann
diesen Aufstieg hochklettern, ich es einfach hier sein lassen können, es einfach näher bringen, damit
es nicht zu weit weg ist. Das Gleiche mit diesem. Und was wir mit
diesem Code machen können und ihn einfach ein
bisschen näher bringen. Wir können das alles hier nehmen. Und dann können wir anklicken, siehe. Nennen wir es klettern. Klettern Sie sein, vielleicht
nennen Sie es nicht etwas
Besseres oder vielleicht Klettermechaniker oder
eine ganze Textzeile. Sie können auch machen,
denken Sie daran, dass wir auch Kommentare abgeben können , also müssen Sie es nicht
nur hier draußen machen, Sie können es auch nicht. Mach es hier drin, gib ihnen
Farben, wenn du willst, wenn du deine eigenen Regeln erstellst. Manchmal, was ich für meine Spiele
mache, wenn es vom Server kommt, mache
ich einen Kommentar und dann wird
dieser Kommentar gelesen. Also all die roten Kommentare
in meinem Spiel, ich weiß, dass dies der Server ist, also kann etwas tun. Und wenn es speziell
für den Kunden ist, mag
ich vielleicht Rosa
statt Rot. So können Sie versuchen,
Ihre eigenen Regeln erstellen
und alles hier zu
organisieren. Ich werde das hier fit machen. Jetzt haben wir es abgelehnt, Mechaniker
zu sein, wir haben den Sprung. Dieses hier werde ich ein bisschen mehr
aufräumen. Also nähern Sie sich das. Also zunächst nur
sehr, sehr wichtig,
habe versucht, deinen
Code viel schlanker zu machen. Klicken Sie jetzt auf diesen und
verstecken Sie die Verbindung, weil
ich sie nicht wirklich brauche. Und ich werde das alles
verschieben, aber weiter weg. Es gibt also mehr Platz hier. Okay? So etwas. Und jetzt können wir diese einfach untereinander
bewegen. Okay, jetzt haben wir das, und eigentlich
ist dieses ein bisschen durcheinander. Nehmen wir diese Nadel
hier und bewegen sie so. Anstatt so viele zu haben, kann
ich einfach hier doppelklicken, und ich kann
es hier verbinden
und diesen hier unten verbinden. Also kann ich diesen löschen. Und jetzt haben wir diese
mit allen drei verbunden. Also ein bisschen
sauberer, dass wir vorher ein bisschen
zurückziehen können ,
damit wir die Linie sehen können. Ich glaube, alles
andere sieht gut aus. Also können wir das bewegen, die Front so, und wir können
das etwas weiter wegbewegen ,
damit sie nicht kollidieren. Okay, also denke ich, dass
das nach Noten aussieht. Und denken Sie daran, wenn Sie alles hier draußen
reinigen,
denken Sie auch daran, Ihre Funktionen zu überprüfen, um sicherzustellen,
dass alles gut aussieht. Ich denke, als würde hier im Grunde
alles gut aussehen. Wir können es ein
bisschen weiter
weg bewegen , damit sie nicht so
kollidieren. Sie können entweder auf diesen
doppelklicken und es hier so machen. Okay? Jetzt kann ich das wegziehen, und hier kannst du das Gleiche tun. Also kann ich das ein
bisschen weiter weg bewegen. Und das weiter entfernt. Sie können sogar einfach auf diesen
doppelklicken, ihn so nach unten
bewegen und auf q. Zwei klicken. Sie sind miteinander verbunden, so
etwas. So etwas. Ich meine, es wird
viel sauberer. Vielleicht kannst du das alles einfach wegziehen , außer
diesem so, das wird
etwas sauberer aussehen, aber das sieht bisher gut aus. Okay? Wenn Sie also alles
gereinigt haben, versuchen Sie
also alles zu überprüfen,
versuchen Sie alles zu kommentieren, was
sehr wichtig ist, wenn Sie wie
drei Monate später
wiederkommen, Sie haben keine Ahnung
was das alles ist ist, wenn Sie nichts davon
begangen haben. Denken Sie also daran, den Code zu bereinigen, versuchen Sie alles zu kommentieren
und stellen Sie sicher, dass Sie verstehen, was
hier passiert ist und was Sie codiert haben. Die zweite Sache ist, dass Sie Ihre Variablen
bereinigen können. Also was man hier machen kann, zum Beispiel der
Aufstieg hier. Was Sie
hier rechts tun können, können
Sie ihnen eine Kategorie hinzufügen. Also kann ich diese
Kategorie einfach Klettern nennen. Und Sie können sehen, dass es
automatisch zu einer Kategorie hinzufügt. Und das kann es für alle
anderen Kunden tun. Also kann dieser Bob besteigen. Ich kann die Kategorie
jetzt auswählen und die Zeile auswählen. Und es wird sie hier oben automatisch
zusammenbringen. Sie werden klettern, da der
Ort auch klettert. Die Pause stieg und
der Scheck stieg ebenfalls. Also beide,
ich werde sie in Klettern
umwandeln. Jetzt haben wir können klettern
ist auch rückläufig. Und dann haben wir
das Kletterobjekt ist auch das Klettern. Und wir haben noch etwas
anderes hier. Wir haben den Staat der Bewegung. Mit diesem können
Sie beispielsweise einen Spielerbewegungen aufrufen. Und wir haben den Layerstandort. Dieser nennt
es vielleicht Spielereigenschaften, so
etwas oder Ort. Also aktueller Spielerstandort. Wir können auch die
Spielereigenschaften ändern. Aktualisieren Sie die Spielerkamera. Also diese können wir
die Layout-Kamera nennen. Also alles über
die Steckkameras
hier drin und die Werksinfo. Vielleicht können wir es auch ändern, um Eigenschaften zu
spielen. Layer-Spawn und Ort, um auch Eigenschaften
abzuspielen. Und die Player-Kamera, wir können zur Kamera wechseln
und wir haben die Z-Achse. Dies ist die Bewegung.
Vielleicht kannst du es
einfach in
die Spielerbewegung ändern. Jetzt können Sie sehen, dass
Sie
all diese organisiert haben und wenn
Sie sie minimieren, sehen
Sie, wie sauber das ist. Wenn Sie ein
großes Spiel haben, sehr,
sehr wichtig, um Ihren
gesamten Code zu bereinigen. Du weißt also, was los ist. Okay, also lasst uns sparen versucht
, das mit all
deinen Blaupausen zu tun . Und das nächste, was wir tun
können, ist hier draußen. Was wir
hier draußen im Outliner tun können, können
Sie Dinge gruppieren. So
haben wir zum Beispiel die Schweine hier. Ich kann sie alle auswählen und
einen neuen Ordner erstellen. Und ich kann sie Feinde nennen. Und ich versuche
alle meine Schnecken zu finden. Von dieser Schnecke
bis zu dieser Schnecke kann
ich die Umschalttaste gedrückt halten und auf diese
klicken, sie in den
Feindordner
ziehen. Und jetzt haben wir alle
Feinde, die Sie hier sehen können. Okay? Und jetzt haben wir das,
wir haben das Seil hier. Vielleicht können Sie es in einen
Ordner namens Environments hinzufügen. Und ich glaube nicht, dass ich
es so richtig buchstabiert habe. Und das haben wir. Dies ist auch die Umgebung, also werde ich
es hier hineinbringen. Wir lassen den Spieler
mit dem Navigationsnetz beginnen. Vielleicht kann man es Volumes nennen. Und das ist das
Navigationsnetz-Volumen. Nach der Verarbeitung
kann ich tatsächlich
einen neuen Ordner namens
Post-Prozess erstellen. Okay, also können wir
diese Neufassung auch
innerhalb der Lautstärke verschieben und den Spielerstart, wir können einfach hier draußen sein lassen. Wir müssen
es nicht in einen Ordner legen. Jetzt können Sie sehen, dass
dieser auch organisiert ist. Wenn Sie zum nächsten Level gehen
möchten, können
Sie sogar Dinge umbenennen. So
kann es diese zum Beispiel umbenennen. Aber ich denke, es ist vorerst in Ordnung. Okay, also das Letzte,
was Sie auch tun können, können
Sie zu den
Blueprint-Interfaces gehen. Zum Beispiel hier.
Denk an diese. Sie können auch eine Kategorie angeben. So kann man zum Beispiel klettern, man kann ihm wieder eine Kategorie geben,
genau wie die Variablen, und sie
werden alle in einer Kategorie sein. also sehr wichtig
, das für Ihre eigenen Projekte zu tun. Reinigen Sie Ihren gesamten Code. Und ich wollte nur dieses zusätzliche Video
machen nur um es ein bisschen
aufzuräumen. Und jetzt denke ich, dass es
viel sauberer ist, damit zu arbeiten. Und ja, das
war's für dieses Video. Also sehe ich dich im nächsten.
66. Vorbereitung der Flipbooks: Hallo und willkommen
in diesem Bereich. Es ist jetzt an der Zeit, an
der Gesundheit und dem Schaden zu arbeiten, sowohl für den Spieler
als auch für den Feind. Also haben wir
hier in diesem Abschnitt viel zu tun. Also lasst uns anfangen. Zuallererst habe ich hier in den Kursmaterialien
einige Überraschungen oder Texturen
hochgeladen , die
wir zuerst vorbereiten müssen. also zum Charakter gehe, habe ich diesen
namens The Death. Gehen wir also
hier zu den Vermögenswerten und gehen zu Charakteren. Ich werde
es einfach hier hochladen, weil das
sowohl für Serine als auch für den Look gleich ist, wir haben es gerade hier hochgeladen. Klicken Sie mit der rechten Maustaste darauf,
wenden Sie die Papierstruktur 2D an. Wir wissen, dass all diese
Dinge jetzt aussehen werden, wir haben diese Schritteffekte. Schauen Sie also nach Texturen, und ich möchte,
dass Sie diesen Schritteffekt ebenfalls importieren. Das Gleiche gilt für Tsarina hier. Ich sehe, dass ich es bereits für Luke
hochgeladen habe, und versuchen wir
es jetzt für Serena hochzuladen. Also dieser Ein-Schritt-Effekt
wurde für Tsarina
hier hochgeladen und Papier
auf die Einstellungen angewendet. Und bevor wir
sie zu Sprites machen, möchte
ich, dass du zu
gehst, lass uns hierher zurückkehren. Geh zu Feinden. Und drin von hier, Lasst uns die
Schweineschritte nehmen und den Tod wählen. Und lass uns
jetzt zu den Feinden und den Texturen gehen. Und lasst uns das
Schwein hochladen, es und den Tod. Und auch die Schnecke
Hits und Schneckenschulden. Diese beiden laden diese
auch hoch. Und für alle
, die ich hochgeladen habe, wenden Sie
erneut Papier
auf die Einstellungen an. Und ich möchte, dass du aus all diesen
Flip-Büchern machst. Also der Tod HIT
oder beides. Und der Seetod hier. Und auch Luke stechen, dieser namens sieht
Tab Anserinus Schritt aus. Also überspringe ich
das im Video. Wir wissen bereits, was wir hier tun müssen. Also möchte ich, dass du daraus
Sprites kreierst und Bücher umdrehst. Also der größte 180 mal 180 für die Charaktere
und für die Feinde. Wenn Sie die Sprites extrahieren, beträgt
das Raster 90 mal 90. Okay, also hier habe ich die Flip Books
fertig. Für den Schweinetod habe
ich also die Bilder pro Sekunde gesagt, zwei vorerst, ich bin mir bei den vier hier nicht sicher
. Vielleicht muss es sechs oder langsamer
sein, also müssen wir
das später im Spiel testen. Und denken Sie für den Schweinekopf
daran, dieses Bild weniger pro
Sekunde auf eins zu setzen. Ich glaube, dies wird
sich später auf den Code auswirken, also setze ihn auf eins. Und für die
Schneckenköpfe oder den Schneckentod
habe ich gesagt, dass ein
bis acht Bilder pro Sekunde für diese Schnecke getroffen wurden. Ich habe es auf einen
Frame pro Sekunde eingestellt. auch sehr
wichtig, das hier zu tun. Und für die Tiefe hier und die Charaktere haben es
auf acht Frames Sekunden eingestellt. Das ist also die Todesanimation. Und für Luke erfolgt das Stechen
durch Rahmen pro Sekunde. Und das Gleiche hier für Serena ist das Stechen
zwei Frames pro Sekunde. Okay, jetzt haben wir alle
diese Flip Books bereit. Lassen Sie uns, bevor
wir dieses Video beenden, auch
auf die Struktur anwenden. Gehen wir also zu
unseren Blaupausen in den Strukturen und öffnen Sie
die Spielerinformationen. Jetzt können Sie hier sehen, dass wir keine angreifende Animation
haben, also klicken wir auf Variable hinzufügen. Und sagen wir Angriffsanimation. Ich ziehe
das hier hoch. Vielleicht möchte ich es
gleich nach dem Sprung hierher ziehen, spielt keine
Rolle, aber
ich schreibe nur hier,
Paper Flip Book. Es ist ein Papier-Flipbook hier. Jetzt sparen. Und lasst uns das Gleiche
für die Tierinformationen machen. Also das Tier jetzt
haben wir das Idol und bewegen uns, aber wir haben auch
die Hit-Animation. Wir haben die Todesanimation. Das habe ich eigentlich auch
für den Spieler. Lassen Sie mich das zuerst
in ein Papier-Flipbook umwandeln. Wieder hier und hier. So. Okay, jetzt habe ich den
Tod versteckt und füge das
auch für den Spieler hinzu, während wir Änderungen machen. Fügen wir also die
Todesanimation hinzu. Lass es mich einfach hierher
über den Soundeffekt bewegen. Und denken Sie daran, dass das
ein Papier-Flipbook ist. Okay, ich glaube, wir
haben alles hier, also lasst uns alles speichern. Lass uns zum Spieler gehen. Gehe zu Luke und klicke auf
Vollständigen Blueprint-Editor öffnen, klicke auf Klassenvorgaben. Und hier in den Standardeinstellungen der Klasse finden
wir die Spielerinformationen hier. Und Sie können sehen, dass
sie sie hier nicht wirklich
hinzufügen können , obwohl
wir sie hinzugefügt haben. Denken
Sie daran, Sie müssen zur
Spielerbasis gehen, auf Kompilieren klicken, auf Speichern und auf „
Kompilieren“ klicken müssen hier. Da Sie die
Struktur in hier,
die Variablen in hier, hinzugefügt haben , muss
sie hier kompiliert werden. Das Gleiche gilt für den Feind. Bevor wir diese
in Schnecke und Schwein hinzufügen können, musst
du zum
Feind gehen und kompilieren und speichern. Und jetzt können wir sie sehen. Für einen Blick können Sie jetzt auf die Standardwerte der
Klassen klicken und
sehen,
dass wir die Angriffsanimation haben. Und lasst uns einfach nach Schritt suchen. Also Luke, Schritt, weitere Tiefe. Wir können das mit dem
Namen FB Death bezeichnen. Diese Leiter der Animation. Wir hatten eigentlich nichts. Das war nur zum Testen. Und wenn du noch einmal willst,
habe ich dir gesagt, du kannst, du kannst auf diese
Website namens Maples gehen. Ich bin hier und erstelle einen Charakter und versuche
deinen Charakter zu benutzen oder einfach nur zu machen. Siehst du hier, du hast ein paar
Animationen, die du machen kannst. Und Sie können einfach
die Leiteranimation auswählen und
sehen, wie sie aussieht. Oder du kannst einfach
die Seil-Animation
hier platzieren , wenn du willst. Lasst uns das tatsächlich machen. Es sieht also nicht komisch aus. Ich glaube, es nennt sich Climb. Okay, also lass uns jetzt nach Serena gehen und zu Spielern
gehen, Tsarina, nicht hier. Layer Tsarina und öffnet die vollständige Blaupause, dass
es sich um einen NDA-Angriff handelt. Suchen Sie erneut nach Schritt, wählen Sie Salinas, Serena's
und nach dem Buchstaben aus. Lass uns nach
denen suchen, die geklettert sind. Hier. Fügen Sie für die Todesanimation hinzu, suchen Sie
einfach nach dem Tod
und wählen Sie diese aus. Jetzt haben wir
alles ausgewählt. Jetzt machen wir das
Gleiche für die Feinde. Also lasst uns zum Feind gehen. Wählen wir zuerst
den vollständigen Blueprint-Editor
in den Standardeinstellungen der Klasse aus. Lasst uns das finden, das Tierinfo
genannt wird. Und hier in den Hits können
wir nach
Schweinehits und dem Tod suchen. Wir können nach dem Tod des Schweins suchen. Mach
jetzt das Gleiche für die Schnecke. Öffnen Sie den vollständigen Blueprint-Editor
und fügen Sie innerhalb der Tierinformationen die Schneckenhits und fügen wir die Schneckenschulden hinzu. Jetzt haben wir hier alles in der Struktur
hinzugefügt. Wenn diese Dinge jetzt hinzugefügt werden, gehen
wir rüber und machen die
Spieler, die Input angreifen.
67. Hinzufügen der Attack: Nun lasst uns fortfahren und die Angriffseingaben
hinzufügen. Gehen wir zuerst
zu den Projekteinstellungen. Und im Input hier, Lasst uns jetzt
nur noch den Sprung haben. Klicken Sie also auf dieses Plus und fügen Sie einen neuen hinzu, der als Angriff bezeichnet wird. Und ich klicke hier und
klicke auf mein linkes Steuerelement
auf der Tastatur. Jetzt verwende ich
die Lift-Steuerung als Angriffsknopf, aber das ist nur ein Kurs, also kannst du deinen eigenen
Knopf auswählen, wenn du willst. Ich glaube an Maple Story, es war entweder dieser
oder der Alt-Button. Also wähle ich
die weniger
Steuerungstaste auf meiner Tastatur aus. Schließe es, gehe in Blaupausen und innerhalb der
Spieler- und N-Spielerbasis. Lasst uns diese
angreifende Bewegung oder Logik hier in
der Spielerbasis machen. Was ich
hier gemacht habe, habe ich gerade aus dem vorherigen Video alle
meine Knoten ausgewählt und auf C klicken, alle
meine Knoten ausgewählt um einen Kommentar
zu erstellen. Und ich habe gerade diese
eine Bewegung genannt und ich habe die
Schriftgröße auf siebziger Jahre
geändert. Ich habe einfach alle meine Bewegungen. Die Sache, die wir
bisher hier codiert haben. Und so können wir etwas Platz sparen. Und jetzt können wir den
Angriff hier unten machen. Also hier unten möchte
ich, dass Sie rechten Maustaste klicken
und Angriff sagen, wie auch immer Sie es in
Ihren Projekteinstellungen genannt haben. Wähle es hier aus. Und jetzt, für den Angriff, wollen
wir es über
den Server gehen lassen, denn
dies ist wiederum Multiplayer und wir
wollen sicherstellen, dass der Client
nicht betrügt. Und was ich tun werde, ist
, dass wir tatsächlich ein Hier und
die Blueprint Interfaces
und die Spielerbasis
erstellen . Hier. Klicken wir auf Hinzufügen und lassen Sie uns eine neue
Funktion namens Attack erstellen. Und lasst uns einfach
eine neue Variable erstellen. Hier greift B an. Also prüfen wir nur, ob
der Spieler angreift. Jetzt können Sie hier sehen,
dass es manchmal abnervt, angreift. Wenn ich es hier schreibe und
auf Enter klicke , lösche ich
es. Ich weiß nicht, ob es das
manchmal ohne Grund tut. Also
lösche ich das hier, lösche es und erstelle
eine neue Funktion. Jetzt kann ich sehen, ob ich
hier klicke und auf Hinzufügen klicke. Plötzlich funktioniert es. Ich weiß nicht warum es
das macht. Manchmal. Benennen wir es um, um erneut anzugreifen. Hier drüben. Jetzt können wir es tun, wir können es jetzt nennen, indem wir Angriff
sagen und hier den
Ereignisangriff
auswählen. Okay? Wir wollen also, dass dies
durch den Server geht. Wir werden also
ein neues benutzerdefiniertes Ereignis erstellen Serverangriff
genannt wird. Und dieser wird auch
dazu führen, dass Boolean namens B angreift. Rufen wir an, lassen Sie uns das
erste Jahr durch den Server
führen und nennen wir
das Serverereignis hier oben. So. Verbinden wir es. Und jetzt können wir
diesen Angriff von der
Endspielerbasis aus aufrufen . Okay? Und jetzt lassen Sie uns
das so einstellen. Wenn Sie also auf
die Angriffsschaltfläche klicken, setzen
Sie den
angreifenden booleschen Wert auf „true“. Es wird durch
den Server und den Server gehen. Sie können hier mit der rechten Maustaste klicken,
diese auf eine Variable
hochstufen und B angreifend nennen. Und jetzt wird der Server diese Variable auf „true“
setzen. Und offensichtlich möchte ich es
an
die Kunden replizieren , damit sie meine Änderung sehen
können. Okay? Das, was wir hier machen
wollen, ist wir nicht wollen, dass der
Spieler angreift. Wenn Sie bereits angreifen, ergibt
das keinen
Sinn, Zellen, die Sie ständig
spamangreifen
können. Was wir also tun wollen, ist
diesen booleschen Wert zu nehmen und einen Zweig zu erstellen. Und lasst uns hier tatsächlich eine
Kerbe machen, also NICHT boolean. Was wir sagen, ist, wenn
der Spieler nicht angreift Wenn dies
also falsch ist, greift
der Spieler nicht an. Wir können weitermachen und angreifen. Aber wenn wir bereits angreifen, wollen
wir nicht wirklich einen
Spamangriff darüber hinaus machen. Also greife nur an, wenn
du nicht schon angreifst. Okay, also geht
es durch den Server und es wird
die Variable einstellen. Jetzt wollen wir Animationen
spielen und angreifen. Und denken Sie daran, dass wir vor
langer, langer Zeit
diesen Bewegungszustand hier gemacht haben, in dem wir die Bewegungen ändern. Also lasst uns hier eine neue
Bewegung hinzufügen. Wir haben der Struktur eine hinzugefügt. Also lasst uns jetzt tatsächlich
zur Aufzählung gehen, denn hier in der Aufzählung haben
wir diese nur jetzt, wenn ich sie wieder hochziehe . Aber in der Play-Struktur hier haben
wir diese angreifende Animation, haben
wir diese angreifende Animation die
wir im vorherigen Video hinzugefügt haben. Nun fügen wir diese Option
hier in unserer Aufzählung hinzu, die wir auch vor
langer Zeit erstellt haben. Hier in den Enums, in den Bewegungsstaaten. Klicken wir auf Aufzählung hinzufügen
und fügen den Angriff hinzu. Für dieses Tag können
Sie es jetzt nach oben ziehen, wenn Sie möchten. Ich
lasse es einfach hier unten sein. Und jetzt können wir sehen, dass
Sauerstoff verfügbar ist. Wenn Sie es nicht sehen können,
denken Sie daran, auf diesen
Pfeil zu klicken und er wird angezeigt. Jetzt kopieren wir
dieses Set-Flipbook und lassen Sie
es mich mit dem Angriff verbinden. , Denken Sie daran, dass Sie nicht einfach hier
reingehen und
Schritt eins der Stichanimationen auswählen können Schritt eins der Stichanimationen denn da wir ihn
für alle Charaktere dynamisch machen wollen , haben
sie ihre
Gewohnheit Animationen. Wir müssen es hier aus
der Struktur finden, die wir hinzugefügt haben. Wenn Sie also auf die
Struktur klicken, können Sie sehen, Sie keine Pins sehen. Und dies passiert, wenn Sie
auf Nicht verbundene Pins ausblenden klicken. Aber Sie können hier auf
das Häkchen klicken. Also die Angriffsanimation. Und jetzt kann ich auf
diesen Pfeil klicken und du
siehst, dass er erscheint. Jetzt kann ich diese
Angriffsanimation ziehen und mich hier unten in diese
einloggen. Okay, das ist also behoben. Jetzt kompilieren und speichern wir. Was wir jetzt tun können, ist
zurück zum Event Graph zu gehen. Und hier wollen wir Animationen spielen oder angreifen,
denn denken Sie daran, Sie können einfach
Set-Bewegungen States sagen. Das haben wir
bisher benutzt. Und hier muss man
aufpassen, denn jetzt können
Sie sehen, dass wir etwas haben, das
als gesetzte Bewegungen bezeichnet wird, und auch die feindliche Basis. Das ist der Feind, das ist für den Spieler. Achte also darauf,
was du auswählst. Diesen möchten wir vom Spieler verwenden
. Möchte die
Angriffsanimation abspielen wenn der Spieler angreift. Und jetzt, bevor wir hier oben etwas
tun, denken Sie
daran, dass Sie sich nach rechts bewegen. Wir wollen uns nicht nach rechts und
links bewegen , den der Spieler
angreift. Also werde ich mein
A angreifen Boolean hier und sage „Nüsse“. Was ich hier sagen werde, ist, wenn der Spieler
nicht klettert. Lasst uns also einen UND Boolean und der Spieler greift nicht an. Wenn der Spieler also nicht klettert und die
Spieler nicht angreifen, können
Sie sich nach rechts und links
bewegen. Aber wenn der Spieler angreift, wollen
wir uns nicht nach rechts und links
bewegen. Lassen Sie mich
das einfach zur Seite ziehen, damit ich hier tatsächlich
etwas mehr Platz habe ,
damit ich so arbeiten kann. Okay. Jetzt
kompilieren und speichern wir. Und jetzt kannst du sehen, dass es
einen kleinen Fehler gibt und ich
werde dir jetzt nichts davon
erzählen. Ich erkläre es
mir ein bisschen. Also klicken wir auf Jetzt spielen. Denken Sie daran, bevor
wir auf Play klicken,
denken Sie daran, es als Hörserver auf
Spiel zu setzen. Also hier, Theaterstücke, die zu Ende gehört wurden. Klicken wir auf Play. Ich greife an. Du siehst, dass es funktioniert. Okay, es ist in Ordnung. Es greift an. Wir haben
den Angriff nicht auf falsch eingestellt, also wird er für immer angreifen. Das ist also, was kann der
Server jetzt auf dem Client sein? Auch hier
klicke ich auf Steuerelement. Aber du kannst sehen,
dass sexuell nicht funktioniert. Ich kann meine Animation nicht sehen. Denken Sie daran, dass dies
eine visuelle Veränderung ist und eine Wiederholungsbenachrichtigung durchlaufen muss
. Im Moment führen Sie dieses
Ereignis über den Server aus. Der Client hat also keine
Ahnung, was Sie tun denn in dem Moment, in dem
Sie zum Server gehen, kann
der Client nicht alle
diese Informationen sehen ,
es sei denn, sie werden darauf repliziert. Diese Informationen kann
der Client sehen , weil Sie
tatsächlich replizieren. Aber dieser läuft gerade
durch eine normale Funktion. Und es geht nicht wirklich an den Client und Sie
führen ihn über den Server aus, sodass der Client tatsächlich nicht
alles sehen
kann , was Sie
hier schreiben, es sei denn, es wird repliziert. Was ich also tun werde, ist, diese zu
ändern, anstatt sie in eine Vertreterbenachrichtigung zu
replizieren da dies eine visuelle Änderung ist. Ändern wir es stattdessen in
Eric Notify. So können wir den
Kunden darüber informieren. Hier und das greift an. Was ich sagen werde, ist diesen Booleschen Wert
nochmal zu
nehmen, sagen Marken. Wenn Sie also angreifen, möchte
ich diese
Bewegungsstatus angreifende Animation spielen. Gehen wir zurück und stellen
sicher, dass alles in Ordnung ist. Also das ist ja,
also lass es uns jetzt versuchen. Klicken Sie auf Play. Klicken Sie nun wieder als Server auf Control. Das sollte funktionieren. Wenn Sie nun zum
Kunden gehen, klicke ich auf Steuerelement. Jetzt können Sie sehen,
dass es auch angreift. Der Server kann auch sehen, dass
der Client angreift. Denken Sie also daran, dass dies im Mehrspielermodus sehr
wichtig ist. Sie müssen einen Vertreter benachrichtigen, wenn es sich um eine visuelle Änderung handelt. Und wenn Sie es
direkt auf dem Server,
dem Client, abspielen ,
kann der Client nicht alle Dinge sehen, die Sie hier tun, es sei denn, Sie replizieren
es
tatsächlich auf die Clients.
68. Für jede Schleife: Die Sache ist also, dass
wir allen
Gegnern, die wir getroffen haben,
Schaden zufügen wollen . Und um das zu tun, werden
wir für jede Schleife etwas verwenden, das
als eine Schleife bezeichnet wird. Also was wir noch keine Schleifen
benutzt haben, und ich glaube nicht, dass ich dir das noch
erklärt habe. Dies ist also nur ein kurzes Video, das
erklärt, was Loops sind. Fangen wir also hier an. Hier unten haben wir gesagt, bevor wir angreifen werden und es
geht zum Server. Jetzt
wird sich die gesamte Logik innerhalb
des Servers befinden, weil wir
sicherstellen möchten , dass der Client
nicht betrügt. Also lasst uns das hier drin machen. Aber wir werden tun, ob wir
eine Funktion
namens „überlappende Akteure bekommen“ verwenden werden. Also werden wir
etwas treffen und wir werden alle überlappenden Schauspieler
bekommen, also alle Schauspieler
, die wir treffen. Und für diesen werden
wir für jede Schleife
eine Schleife machen. Dies ist der, den
wir benutzen werden. Und lasst uns das verbinden. Welche Akteure
werden sich also überschneiden? Wir werden uns
die Feinde ansehen , denn dies sind diejenigen,
die wir angreifen wollen. Holen Sie sich also alle
überlappenden Schauspieler, holen Sie sich alle
überlappenden Feinde. Und für jeden dieser Feinde wird
es jetzt jeden Feind erobern. Sagen wir also in meinem Level hier, dass
ich fünf Feinde so
übereinander
stapelten. Und ich habe auf meinen
Angriffsknopf geklickt und tatsächlich alle
diese fünf gedrückt. Was wird jetzt tun? Die Überlappung beträgt fünf. So kannst du alle
fünf Feinde sehen. Und jetzt für jeden einzelnen Feind, Was willst du tun? Und was wir tun wollen, jedem einzelnen Feind Schaden zugefügt. Das ist der Loop-Körper. Jetzt wirst du für jeden einzelnen
Feind, den du getroffen hast,
eine Aktion ausführen. Was wir tun wollen,
ist einfach Schaden anzurichten. Jetzt möchte ich
sicherstellen, dass dieser Code nicht ausgeführt
wird, wenn ich
nichts treffe. Wenn du keine Feinde triffst, möchten
wir diesen Code nicht wirklich ausführen. Wir werden also sagen, dass wir das
nehmen und Länge sagen. Also überprüfe die Länge. Und ich nehme
das und sage nicht gleich. Wir können das also tun, indem wir
entweder nicht gleich schreiben oder ein
Ausrufezeichen und gleich sagen. Das ist großartig in der Mathematik,
was nicht gleich bedeutet. Wenn das also ist,
ist die Länge
der sich überlappenden Akteure nicht gleich 0,
was bedeutet, dass ich tatsächlich etwas
getroffen habe. Dann können Sie diesen
Code ausführen. Wenn die Länge jedoch 0 ist, tun
Sie nichts,
weil wir diesen Code wirklich nicht ausführen möchten,
wenn wir nichts getroffen haben. Dies ist sehr einfach
für jede Schleife, es wird einen Blick auf
alle sich überlappenden Akteure werfen. Also haben wir vielleicht drei Feinde getroffen. Und für jeden
dieser drei Feinde wollen
wir Schaden anrichten. Und das werden wir in
der nächsten Lektion tun.
69. Spieler Schaden anwenden: Lasst uns nun
noch einmal in
den Spieler-Blueprint einsteigen und sehen, wie der
Spieler Schaden anrichten kann. Hier in der Playerbasis haben wir
das
im letzten Video gemacht. Also mache ich den Angriff hier. Und übrigens, wenn Sie es
noch nicht gesehen haben, können
Sie sehen, womit wir
bisher gearbeitet haben. Die Variablen, sie sind hier im Pin wie kreisförmig. Aber dieses ist ein Quadrat und es hat viele kleine
Quadrate darin. Und das nennt man Array. Und Sie können es hier sehen, wenn
Sie eine neue Variable erstellen. Zum Beispiel habe ich das ganz Zufall
genannt. Sie können sehen, wenn Sie hier auf den Typ
klicken, den variablen Container, können
wir den Typ tatsächlich
von einem einzelnen in ein Array ändern . Was ist der Unterschied
zwischen diesem und diesem? Also, was wir
bisher gemacht haben, sagen wir zum Beispiel
Spieler, die verbunden sind. Nehmen wir zum Beispiel die verbundenen
Spieler und ändern sie hier
in die BP-Spielerbasis. Sagen wir also, was wir damit machen
wollten ist, sie alle
in einer Variablen zu speichern. Du kannst das also nicht einfach hier nehmen
und hier einstellen. Wie wenn ein Spieler eine Verbindung herstellt, setzt
man diese Variable. Diese Variable kann nur eine Information
enthalten. Diese Variable
lautet beispielsweise, ob der Spieler
angreift oder nicht. Und lass mich sehen, ob wir hier
andere Variablen haben. Diese Variable enthält gerade den
Bewegungsstatus. Wenn Sie es also auf „fallen“ einstellen, wird dieser
Bewegungszustand fallen. Sie können also nicht
mehrere Informationen
gleichzeitig
innerhalb dieser Variablen haben mehrere Informationen
gleichzeitig . Sie können
dies jedoch tun, wenn Sie es in ein Array
ändern. Um
Spieler verbunden zu speichern, sind alle Spieler
in einer Variablen verbunden. Also nicht nur ein Spieler, du musst
ihn tatsächlich in ein Array umwandeln. Und wenn Sie auf Variablentyp
ändern klicken, können
Sie sehen, dass sie
wie dieses Quadrat werden. Und was das ist, ist
jetzt das Array, das Sie können, Sie können es sich
als große Box vorstellen. Und ich habe dir schon gesagt, du kannst dir diese
normale Variable
als Box mit einigen
Informationen vorstellen . Diese kann man sich als
eine große Schachtel mit kleinen
Informationskisten vorstellen . Also kann ich jetzt
alle Spieler hier speichern ,
alle Variablen. Und was ich hier tun kann ist, dass ich
das nehmen und sagen kann. Und ich kann tatsächlich einen
der Spieler kriegen und
etwas damit machen. Ein Array ist also nur eine
große Box,
die
beispielsweise alle verbundenen Spieler enthält . Vielleicht enthalte ich alle Pons, während es
nur eine kreisförmige ist,
also nur eine einzige
normale Variable, sie enthalten kann, nur eine Information
enthalten kann. Wenn Sie jedoch ein Array haben, kann
es
mehrere Informationen enthalten. So zum Beispiel alle Spieler, die mit dem Server verbunden
sind. Hier, die sich überlappenden Akteure, enthält
es alle überlappten
Akteure. Und sagen wir, ich habe mich
an diese gebunden. Und das sind fünf Feinde. Jetzt, mit diesen fünf Feinden, kann
ich sie
jetzt hier in meiner Schleife aufbrechen. Jetzt habe ich jeden
einzelnen Feind hier. Und jetzt wollen wir
mit unserer Schleife Schaden zufügen, dass wir jedem einzelnen
Gegner, den ich getroffen habe, Schaden zufügen wollen . Wenn also die Länge nicht 0 ist,
was bedeutet, dass wir jemanden getroffen haben, möchten
wir vorsichtig sein
und sagen Schaden anwenden. So
schadet man etwas. Verwenden Sie diese Funktion
hier, wenden Sie Schaden an. Jetzt müssen wir angeben, worauf
Sie Schaden anrichten möchten. Wer ist der beschädigte Schauspieler? Das ist der Feind und
der Feind ist da. Denken Sie daran, Sie haben alle sich überlappenden Akteure genommen , die
die feindliche Basis sind , also die Feinde. Und für jeden Feind willst
du ihm
Schaden zufügen. Okay, was ist der
Schaden, den Sie anrichten möchten? Und wir müssen tatsächlich
angeben, welchen Schaden
der Charakter verursacht. Gehen wir also zurück zu den
Spielerinformationen, unserer Struktur, Spielerinformationen und fügen wir
eine neue Variable hinzu, die
als Basisschaden bezeichnet wird. Vielleicht können wir diesen Schaden später
verbessern. Dieser
heißt also Basisschaden, und wir können ihn hier oben verschieben. Es spielt keine
Rolle, aber ich strukturiere
die Dinge einfach so. also für den Basisschaden wir also für den Basisschaden zurück zur
Spielerbasis Kompilieren und Speichern. In den Klassenvorgaben
Eigentlich
kannst du einfach nicht in
der Klassenstandard sein, du kannst einfach hier darauf klicken. Wenn wir es hier in den
Player Properties Player Info finden, ist
dies die Struktur
und hier klicken. Standardmäßig möchte ich nur, dass der Basisschaden
vielleicht etwa fünf ist. also jedes
Mal fünf Schaden an, wenn du etwas triffst. Jetzt, wo wir
das Set haben und lassen Sie uns
das hier nehmen und
lassen Sie es uns brechen. Und wir können
diesen Basisschaden jetzt nutzen und ihn hier einstecken. Jetzt, später, wenn du Upgrades für ein Spiel
machen willst, werden wir das wahrscheinlich für unser Spiel
tun. Und nicht wirklich
im Basiskurs werde
ich wahrscheinlich Bonusabschnitte hinzufügen
, werde
ich wahrscheinlich Bonusabschnitte hinzufügen um immer mehr in
diesem Spiel zu entwickeln , bis es riesig
wird. Aber vielleicht habe ich das schon
aufgenommen. Schau dir also
meinen Bonusbereich an, wenn du dieses
Video ansiehst. Also hier richten wir
den Basisschaden an. Wenn wir jedoch später
Upgrades hinzufügen möchten und später
möchten wir diesen Schaden erhöhen. Sie können einfach
eine neue Variable erstellen. Nennen Sie es beschädigt, Multiplikator und Kompilieren und Speichern als Standard. Jetzt ändern wir es in einen Float, und lassen Sie
es uns nicht in eine ArrayList ändern, sondern behalten Sie es einfach in
einer einzigen Variablen. Ziehen wir es raus. Und denken Sie standardmäßig daran, es
auf eins zu setzen. Der beschädigte
Multiplikator ist also nur einer, was dem Basisschaden entspricht. Nun werden wir sagen, wird das mit dem Multiplikator
multipliziert? Und dann verbinden wir es hier. Wenn
wir jetzt Upgrades durchführen, können
wir diesen
Multiplikator einfach erhöhen, zum Beispiel zwei. Es wird also sagen, dass der
Basisschaden mal zwei Mal ist, was dann mehr Schaden anrichtet. Aber jetzt machen wir
einfach eins hier. Ich werde das
ein bisschen Gewicht bewegen besser organisiert
zu bleiben. Nun der Ereignisanstifter, wenn Sie die Maus darüber halten, heißt
es der Controller, der
dafür verantwortlich war, diesen Schaden zu
verursachen. Und das ist der Spieler. Also sind wir in einem Spieler und
um den Controller des Spielers zu bekommen, kannst
du einfach „Controller holen“ sagen. Und get controller ist
eine Funktion, die besagt, dass Controller
für diesen Akteur
zurückgibt. Also der Controller des Spielers,
du kannst es so machen. Für den Schadenstyp können
Sie
ihn einfach in Schadensart ändern. All das, wie der Schaden näher, den wir gerade nicht wirklich
brauchen. Okay, so richten Sie also Schaden an. Und wenn wir hier alles retten, jetzt in der feindlichen Basis, was passieren wird,
wenn ich jetzt zum Feind gehe, hier in der feindlichen Basis, haben
wir nicht wirklich
viel getan. Aber hier können Sie Ereignis,
Schaden sagen , und das ist ein
Ereignis, das wir noch nicht benutzt haben. Jeder Schaden
wird nur Schaden
erleiden , der
bis zu diesem Zeitpunkt passiert ist , und wir können etwas damit
tun, zum Beispiel können wir von der
Gesundheit dieses Feindes
abziehen. Bevor wir
das beenden, lassen Sie mich etwas mit
den Kollisionen
machen auch etwas mit
den Kollisionen
machen, denn wenn ich hier in den Viewport
gehe, lass mich
tatsächlich zu
einem der Feinde gehen. Die Schnecke auch. Öffnen Sie den Blueprint-Editor. Ich denke, diese Trefferbox ist viel zu groß und wenn der Spieler über den Feind
springt, wird
der Spieler getroffen, wenn
Sie diese Überlappung betreten. Ich möchte nur, dass sie getroffen werden wenn du dieser Schnecke sehr
nahe bist. Also denke ich, dass
dieser sehr riesig ist. Was wir
hier tun können, ist einfach
eine weitere Kollision hinzuzufügen , die
dafür verantwortlich ist, den Spieler zu beschädigen. Und lasst uns hier hinzufügen gehen und
nach Kollision suchen. Eigentlich keine sphärische Läsion. Lasst uns das wählen. Ich denke, das ist in diesem Fall
besser. Und ändern wir den Namen
in diesen in Kollision. Und ich möchte, dass du es tatsächlich
schaffst, lass es uns nicht hier hinzufügen, ich bin in der Schnecke,
das ist mein Fehler. Gehen wir zurück zur
Spielerbasis und fügen sie hier hinzu. Also Kollision, Kollisionssphäre und nennen es Kollision, weil wir es auf allen Feinden
wollen, nicht nur auf der Schnecke. Jetzt gehen wir zurück zur Schnecke und jetzt kannst du es
kleiner machen, um diese Schnecke zu passen. Schnecke, wir können
diesen Kugelradius einfach kleiner machen. Sie können es auch nach unten ziehen. Und vielleicht machen wir es 20. Dann sehe ich, dass das 20 ist. Und wenn Sie es auch von der rechten Ansicht aus
sehen können. Denken Sie daran, dass wir über
die orthogonalen Ansichten
im Intro gesprochen haben, die richtige Ansicht. Und Sie können dies vom Drahtgitter in
den schrägen Modus ändern und Sie können die Schnecke sehen. So kann es auch hier in dieser Ansicht angepasst
werden, das ist manchmal viel besser. Aber 20 Ich denke, ist
eine gute Hitbox. Gehen wir zurück
zur Perspektive. Was wir jetzt tun
wollen, ist einfach
die Kollisionen für all diese zu nehmen . Also lasst uns kompilieren und speichern. Gehen wir zurück zur feindlichen Basis. Also hier in der Kapsel möchte
ich runter gehen und
auf diese Kollisionsvoreinstellung klicken, um zu überprüfen, ob alle Kollisionen, mit denen wir
arbeiten, korrekt sind. Also denke ich, dass das in Ordnung ist. Wir müssen
hier wirklich nichts tun. Klicken Sie also jetzt auf die Kollision und klicken Sie auf diese
Kollisionsvorgabe. dass
wir dieses Denken Sie also daran, wie zuvor, in einer früheren Lektion, Problem damit hatten, dass
die Schnecken austreten, als würden sie in der
Nähe der Rampe laufen. Und das war eigentlich auf die weltstatische
Überlappung
zurückzuführen und ich möchte eigentlich
nicht, dass sie ausfallen. Ich werde zuerst, Sie können
Schritt darüber charakterisieren. Nein, das kannst du nicht. Und lasst uns hier Gewohnheit machen. Und dann
ignorieren wir einfach die Weltstatik. Das Muster
geht also nicht oder die Schnecken
werden sich nicht darin beundern. Klicken Sie auf das Sprite
und stellen Sie sicher, dass
es keine Überlappungseffekte erzeugt. Und ich glaube, das ist hier erledigt. Gehen wir also zurück
zur Spielerbasis. Für die Spielerbasis werden
wir
eine Kollision hinzufügen , bei der Sie sie
erkennen können, den Angriff. Also lasst uns hier eine neue
Kollision machen und ich werde sie an
das Sprite anhängen , damit du sehen kannst,
warum ich es anfüge. Zuerst füge ich
hier einfach eins hinzu. Kollision, sagen wir
die Kollisionsbox. Und ich gehe in die
richtige Ansicht, Lead-Modus. Jetzt kann ich sehen, wo ich es tatsächlich nicht
in der Spielerbasis
hinzufüge . Lasst uns sie
im Pleuralraum machen , weil alle Spieler gleich sind. Es würde also keinen Sinn machen, es in Luke und dann Serena zu
tun. Also lasst uns die
Größe hier machen. Der Grund, warum wir
die Größe in
der Schnecke gemacht haben, ist, dass alle Feinde unterschiedlich sind. Aber für die Spieler sind
sie alle gleich. Also lasst uns die Größe
hier in der Spielerbasis machen. Und was ich hier machen möchte, machen
wir zuerst das x. Und ich denke etwas wie 20. Und für das Y
kann ich es hier nicht sehen. Vielleicht wie 20 oder 25,
spielt keine Rolle. Lass uns einfach 20 machen. Und für das Z hier, also wie viel hoch und runter? Ich denke, 30 ist eine gute Zahl. Also lasst uns 30 versuchen. Und bringen wir es etwas
näher an den Charakter. Was ist, wenn sich die Feinde
in dieser Kollision befinden? Sie können Schaden anrichten. Wenn Sie tatsächlich,
bevor wir das tun, gehen
wir zur Kollision und prüfen, ob
alles in Ordnung ist. Okay. Also ist alles in Ordnung,
bis auf eine Sache. Also hier
kann man wieder spielen oder darüber
hineintreten. Nein, das kannst du nicht. Es wird Überlappungsereignisse erzeugen. Und jetzt lass mich das
auf Benutzerdefiniert setzen , weil ich hier etwas
hinzufügen muss. Jetzt kannst du vorher
und die feindliche Basis sehen. Wenn Sie nun auf diese
Kollision klicken, die wir gemacht haben, können
Sie sehen, dass der
Objekttyp weltdynamisch ist. Jetzt ist das Problem, wenn
Sie diese
Weltdynamik haben , dass sie sich
gerade für diese Kollisionsbox überlappt, als ob die Schnecke in
Ihre Nähe geht und sich dann
mit dieser Box überlappt, diese Schnecke wird Schaden anrichten dein Charakter und das
ergibt wirklich keinen Sinn. Warum mein, mein, ich möchte, dass der Feind hier in
dieser Kapsel in mich
eindringt , bevor er Schaden anrichten kann. Nicht wirklich, wenn es meine Angriffsreichweite
überlappt, würde
das keinen Sinn ergeben. Hier sieht man also
das Ende einer Basis. Dies ist ein Objekttyp
der Weltdynamik. Also
gehe ich zum Spieler hier wegen dieser
Angriffskollision, und ich werde es so einstellen, dass er die Weltdynamik
ignoriert. Also wird es hier nicht wirklich
mit mir kollidieren. Ich möchte nur, dass es beschädigt wenn es meine Kapsel
blockiert. Und du kannst sehen, dass meine Kapsel
die Welt dynamisch zwei Blöcke hat , also werde ich von diesem Feind
getroffen. Klicken Sie nun hier an,
ändern wir den Namen davon. Nennen wir es eine Tag-Kollision. Lass uns kompilieren und speichern und
lass mich auf Play klicken und ich kann dir tatsächlich etwas
Cooles zeigen , damit wir auch
daraus lernen können. Jetzt können wir sehen, ob du etwas sehen
willst. Wenn Sie also möchten, wenn Sie die Kollision
anzeigen möchten , weil
Sie debuggen, können
Sie auf diese
Kollision klicken und diese
namens Hidden Game entfernen. Verstecktes Spiel, entferne
das, klicke auf Play. Und jetzt kannst du
die Kollisionsbox hier vor
dir und ihrem Spiel sehen. Und Sie können sehen, wenn
ich auf diese Seite drehe, die Kollisionen
tatsächlich hinter mir liegen. Also brauchen wir die Kollision
, um mir auf jeder Seite zu folgen. Und deshalb ist es wichtig. Wenn du das willst, füge
es hier in das Sprite ein. Es ist also tatsächlich
an das Sprite gebunden. Es ist also ein Kind. Und Sie können auf Play klicken und es wird
sich mit diesem hellen drehen. So kann es jetzt sehen, dass es
tatsächlich richtig folgt. Es ist also sehr cool
, daraus zu lernen. Ich lasse zu, dass dies nicht in Spielen versteckt wird, damit wir
tatsächlich sehen können , was los ist. Damit. Ich glaube, ich habe es nicht mehr. Lassen Sie mich diese
Kapsel hier für
den Spieler überprüfen , um sicher zu sein,
ob das Ding richtig ist. Jetzt können Sie also sehen, dass Kapsel ignoriert
wird, ist der
Knochen, der der Feind ist. Ich werde eigentlich Überlappung
einstellen, weil wir durch den Arm
beschädigt werden wollen. Es macht also keinen Sinn, den Knochen
zu ignorieren. Das ist jetzt richtig
und für die Sprites wird
dieser Teil
keine
Überlappungsereignisse
generieren . Sagen wir also wo alles, ich glaube, alles stimmt. Jetzt in der Spielerbasis wir
jedem einzelnen Feind Schaden zu , den wir treffen. Das Problem, das wir in der
nächsten Lektion beheben werden, ist, wenn ich angreife, wird
es für immer angreifen. Lassen Sie uns also in der nächsten
Lektion übergehen und das beheben.
70. Angriff anhalten: Also hier bei diesem Code haben wir
bisher festgelegt, dass der Angriff wahr
ist. Und wenn es hier in der
Unwrap Funktion der
Fall ist , wird
es diese
angreifende Bewegung einstellen. Jetzt wollen wir etwas tun
, wenn der Angriff falsch ist. Und was wir möchten, dass Sie dies tun, ist wir dies kopieren möchten. Jetzt kannst du das tun, setze es
einfach auf den Leerlauf, damit wir nicht mehr
angreifen. Und wir müssen dies
irgendwann als falsch festlegen, denn bisher haben wir es gerade so
eingestellt, dass es hier oben wahr ist. Und das stimmt jetzt, aber wir haben nirgendwo in
unserem Code
angegeben , wann es falsch sein wird. Also lasst uns das tatsächlich machen. Also sagen wir hier, bevor wir
irgendetwas mit den Feinden machen. Sagen wir also ja, wenn ich hier bin, wenn ich mich überschneide, wenn meine Länge 0 ist, wenn ich keine Feinde treffe, möchte
ich einfach aufhören anzugreifen weil ich niemanden getroffen habe. Also nehme ich das
und setze es auf „falsch“. Wenn Sie dies jedoch nur tun, wird
es dies
gleichzeitig tun, wenn Sie angreifen. Sie können also sehen,
dass ich auf
Angriff klicke und
gleichzeitig angreife, wird
es meine Animation stoppen. Anstatt das
sofort zu machen und es mich
einfach noch einmal spielen zu lassen ,
muss ich
eigentlich niemanden treffen. also hier klicken, können Sie
sehen, dass ich auf Warteschlange klicke, aber nichts passiert, weil ich sofort von
„true“ auf falsch gehe. Sie müssen ein wenig warten,
bevor Sie es auf false setzen, da Sie warten müssen, bis die angreifende Animation abgespielt wird. Und du kannst das
auf sehr kluge Weise tun. Du kannst das Sprite
hier nehmen und „Flip Book“ sagen. Jetzt kann ich die Länge
dieses Flipbooks bekommen und es heißt, erhalte die Länge
des Flipbooks in Sekunden. Du kannst verstehen, wie lange dieses
Flip Book läuft. Du kannst dich tatsächlich verzögern. Denken Sie daran, dass wir diesen Verzögerungsknoten verwenden Verbinden wir also
die Verzögerung damit. Der Code wurde also so lange verzögert lange diese Animation dauern wird, und durchlief das. Und nachdem es fertig ist, gehen
wir rüber und
setzen es auf „false“. Also wenn ich jetzt auf
Play klicke und du zu
diesem Charakter gehst und lass
mich nicht wenn jemand hier ist. Wenn ich also jetzt treffe,
siehst du, dass es funktioniert. Das ist also richtig.
Jetzt kann ich schlagen und es stoppt meine Animation
nach sexuell gespielt. So kannst du diese Animation
wieder langsam und schneller machen , indem du
zum Beispiel zwei Charaktere
zu Luke gehst . Wenn Sie diese
stechende Animation erhöhen, wird
diese Animation natürlich viel schneller gestoppt . Jetzt wird es von
den Frames pro Sekunde gesteuert. Jetzt, wo wir den
Angriff erledigt haben, denken Sie daran, wenn Sie mit dem
Angriff auf die Feinde fertig sind, denn wenn ich jetzt spiele
und Feinde treffe, können
Sie sehen, dass es
für immer spielt, weil ich nicht
angegeben habe wenn ich aufhöre,
wenn ich tatsächlich Feinde treffe, denn dieser ist gerade dann, wenn
du keine Feinde triffst. Wenn ich
wieder Feinde treffe , mache ich das Gleiche. Also ziehe ich das einfach
hierher , wenn diese
Schleife abgeschlossen ist. Wenn du also allen Feinden
Schaden zugefügt hast, höre
ich
meinen Angriff hier auf . Und das wird
sehr, sehr schnell passieren. Es wird also so aussehen, als hättest
du nichts getroffen. Weil Blueprint-Code so schnell
läuft, ist es verrückt. Wenn wir also
nichts hören oder wenn Sie Ihren Angriff
abgeschlossen
haben, hören Sie auf anzugreifen. Also lasst uns jetzt sehen, wenn ich jemanden treffe, kannst
du sehen, dass es jetzt
die Animation stoppt , nachdem
ich die Feinde getroffen habe. Oder selbst wenn ich
niemanden höre, wird es aufhören.
71. Feind beim Erhalt von Schäden: Okay, jetzt, da
wir einen Großteil
der Tech-Animation codiert haben und
jetzt Schaden anrichten. Lasst uns tatsächlich zum
Feind gehen, der feindlichen Basis. Hier wollen wir diesen nennen,
dieses Ereignis hat irgendeinen Schaden genannt. Und wir wollen dem Feind
Schaden zufügen. Was wir also tun wollen, ist, dass
wir zuerst in die Struktur
gehen und Gesundheit für
den Feind hinzufügen wollen. Ich glaube, das haben wir noch nicht gemacht. Gehen wir also zu Blaupausen und Strukturen und zu
den Tierinformationen. Und hier fügen wir
eine neue Variable hinzu, nennen Sie diese eine Gesundheit. Und dafür, lass uns gehen und auf Float klicken. Und für die Gesundheit ziehe
ich diesen einfach nach oben. Okay, also lasst
uns das retten und gehen wir zurück zur feindlichen Basis. Kompilieren und speichern Sie jetzt. Jetzt können
Sie es für diese Struktur herausziehen
und Sie können sie brechen. Und jetzt können Sie sehen, dass wir
diese Gesundheitsvariable haben und standardmäßig die Schneckengesundheit, ich weiß nicht, wir können es auf 25 oder 15 setzen. Lass es uns bis 15 machen. Eigentlich beträgt unser
Spielerschaden gerade fünf, also werden drei Treffer die Schnecke
töten. Gehen wir also zu den Standardwerten der
Klassen und hier und zu den Tierinformationen. Für diese Schnecke hat
sie also 15 Gesundheit. Und vielleicht für das Schwein. Wenn wir runter zum Schwein gehen, Schwein hier, dieses Schwein, werden
wir den
Schweinen vielleicht 230 Gesundheit bringen. Es ist also die doppelte Stärke
des Feindes oder der Schnecke. Und auch dafür ändere
ich
die Kollision nur ein bisschen. Dafür wie wir
es mit der Schnecke gemacht haben. Vielleicht senke es einfach wie 25. können wir später machen. Als ob wir prüfen
und sehen können, ob das zu groß und zu klein
ist. Also lasst uns jetzt
zur feindlichen Basis zurückkehren. Jetzt ist die Gesundheit entweder 30, wenn es ein Schwein ist, oder es ist
15, wenn es sich um eine Schnecke handelt. Aber jetzt wird es das dynamisch
machen. Der Schaden, den wir hier
vorher angelegt haben, und die Spielerbasis, der Schaden am Basisschaden, den wir
angelegt haben , entspricht dem
beschädigten, der hier herauskommt, und der Spieler verursacht
fünf Schaden. Was wir also sehen können,
was wir sagen können ist diese Gesundheit, die gerade 15
für die Schnecke ist, subtrahieren, wie
den Schaden subtrahieren, der fünf ist. Jetzt ist die Gesundheit zehn, denn 15 minus fünf sind zehn. Dies ist die aktualisierte Gesundheit. Dies ist die zehn Gesundheit, die
von der Schnecke übrig bleibt. Und jetzt werde ich dir etwas Neues
beibringen,
eine neue coole Sache, von der
nicht viele eigentlich
wissen, dass nicht viele eigentlich
wissen, viele tatsächlich einen Fehler machen obwohl es zu Blaupausen
fortgeschritten
ist, ist wie Sie legen fest, wie Sie Variablen dynamisch
innerhalb der Struktur festlegen . Denn im Moment
hast du all diese Variablen
und das ist cool. Sie haben sie hier
in Ihrer Struktur festgelegt. Aber wie
ändert man den Wert tatsächlich? Lassen Sie mich diese jetzt entfernen. Jetzt ist die Gesundheit
gerade hier 15. Wie ändert man es hier
durch das Gameplay
dynamisch auf zehn ? Tun Sie das, indem Sie
aus dieser Struktur ziehen. Und dann schreibst du Sets. Und hier unten sagst du gesetzte Mitglieder in Animal
Info in der Struktur. Jetzt muss es also was mögen, welches Mitglied möchtest du einstellen? Und rechts, wenn
Sie wieder hier klicken, können
Sie alle Pins sehen und
ich möchte die Gesundheit einstellen,
das ist es, woran ich
interessiert bin. Also möchte ich diese
Gesundheit in dieser Struktur auf
diese neue Gesundheit aktualisieren , die jetzt
zehn ist, nachdem der Schaden
angelegt wurde. Also verbinde ich es hier. Und jetzt müssen
Sie diese Variable
erneut festlegen, da Sie
sehen können, dass dies wie
ein gedrehtes Quadrat ist,
was bedeutet, dass dies nur
eine temporäre Variable ist. Du musst es erneut einstellen, und es ist nicht wie
der kreisförmige Stift. Das bedeutet also, dass ich
meine Tierinformationen nehmen und
diese Tierinformationen erneut einstellen muss. Nun, all diese anderen
Informationen hier, die untätige Animation
bewegen sich, Hit und Tod. Es wird
es genauso einstellen. Das einzige, was
sich ändern wird, ist die Gesundheit. Und da dies
durch den Server läuft, möchte
ich
dies tatsächlich replizieren, um sicherzustellen, dass mein Client diese Bearbeitung
auch sehen kann da dieser Schaden
Sie hier sehen können. Es heißt nur Autorität, dieses Ereignis wird nur auf dem Server
ausgelöst. Denken Sie also daran
, diese Informationen auch wieder
an den Client zu replizieren . Und das ist eigentlich
alles wie es ist. Wir müssen
hier nicht wirklich mehr tun , um es
ein bisschen mehr zu strukturieren. Vielleicht kann ich
die einfach ein bisschen in die
Richtung ziehen und es einfach hier
aufstellen. Versuchen Sie also, so
strukturiert wie möglich zu sein. Klicken Sie auf diesen Pin,
strukturieren Sie ihn vielleicht so, und ich bringe alles
näher, einfach so. Klicken Sie auf q. Okay, jetzt haben wir das, und wenn Sie sehen möchten, ob das funktioniert
oder nicht, müssen
wir es auch testen,
um zu sehen, ob es funktioniert. Ich kann jetzt hier drucken. Eine Druckzeichenfolge. Ich kann
die Höhe der Gesundheit ausdrucken. Sie können es also auch von hier aus tun, also können Sie es ziehen
und ausdrucken. Sie können auch sehen, ob Ihre
Struktur tatsächlich aktualisiert wurde. Also können wir das noch einmal brechen. Und jetzt können wir
die neue Gesundheit drucken , die Sie hier drüben
gesetzt haben. Also lasst uns kompilieren und speichern. Wann immer es getroffen
wird, wird
es Ihnen den
Schaden oder den gesünderen Schaden mitteilen. Also
gehe ich zum Beispiel zu dieser Schnecke, ich klicke auf die Hüften. Und du kannst hier oben sehen,
dass zehn Gesundheit übrig steht. Und wenn ich nicht weiß, ob
das dieselbe Schnecke ist, hat es
jetzt noch fünf Gesundheit. Wenn ich jetzt einen anderen Feind treffe, hat er zehn Hilfe beim Aufheben. Also ist es jetzt richtig, es hat zehn Gesundheit übrig,
wenn ich es
noch nicht gehört habe und wenn ich es noch
einmal treffe, hat es fünf. Wenn ich es nochmal treffe, hat es 0. Jetzt
funktioniert es tatsächlich richtig. Das Problem ist jetzt,
wenn ich es treffe, sagst du, du wirst sehen, dass es
minus fünf, minus zehn sagt. Also geht es weiter, es
geht weiter im Minus. Und das müssen wir beheben. Was Sie hier also tun müssen ist, wenn Sie
hier abziehen, etwas verwenden, das als Klammer
bezeichnet wird. Klammer. Und wir werden
diesen namens Float auswählen, weil wir mit Floats
arbeiten. Also werden wir den Wert
festklemmen damit er niemals unter 0 gehen kann. Was ist also, wie hoch ist der Wert? Der Wert ist dieser, den
wir festklemmen möchten. Okay? Was ist das Minimum? Wir wollen nicht unter 0 gehen. Das Minimum ist also 0. Und das Maximum ist
nur der Betrag , den dieser Feind in Gesundheit hat. Ich ziehe das einfach und setze es auf das Maximum ein. Was auch immer wir
von Anfang an gesagt haben, dann werden wir diese Gesundheit hier
festlegen. Anstatt also direkt
hierher zu gehen, wird
es
durch einen Kunden gehen und sicherstellen, dass er nicht unter 0 liegt. Und dann werden wir diese Gesundheit hier anwenden
oder bearbeiten. Okay, also so etwas. Und lasst uns mit mir kompilieren, doppelklicken Sie auf diesen
Pin, um ihn
etwas organisierter zu machen , so
etwas. Okay, kompilieren
und speichern, und jetzt klicken wir auf
Play und testen es aus. Also, wenn ich jemanden treffe, also wenn ich das treffe und hier
tatsächlich treffe, 10500, kann es jetzt sehen, dass
es nicht unter 0 gehen kann. Ich weiß, dass wir
diese Schnecke
immer sterben lassen können , wenn ich 0 treffe. Also lass es mich mit diesen
Schweinen testen, damit wir 25 sehen können. Und jetzt können Sie sehen, dass es viele Zahlen druckt und das liegt daran, dass ich tatsächlich
mehrere Feinde treffe. Das funktioniert jetzt. Das hat 2015, dieser
andere hat 20. Sie können also sehen, dass ich
alle Feinde treffe und es funktioniert, wenn ich mich
mit mehreren Feinden überlappe. Wieder kann unter 0 gehen. Das funktioniert jetzt also
einwandfrei. Nur um zu prüfen, ob die
Spielerbasis auch geklemmt werden muss. Wir müssen hier nicht wirklich etwas
festklemmen. Das einzige, das einzige, was wir brauchen um die Geschäftsgesundheit zu erhöhen, und
das müssen wir wahrscheinlich auch tun, denn der Spieler am Feind schadet dem
Spieler, was später getan hat. Jetzt
funktioniert das. lösche diesen Code hier. Und das ist im
Grunde das ****. Man sieht also, dass es nicht
wirklich zu komplex ist. Wir nehmen nur die Gesundheit, subtrahieren den Schaden davon und setzen ihn dann
in diese Struktur ein.
72. Enemy: Jetzt ist es an der Zeit, die
gegnerische Hit-Animation zu machen. Bisher
treffen wir nur die Feinde und sie
spielen keine Animation. Also müssen wir das jetzt machen. Für die Animationen haben wir
diese tatsächlich viel
früher erstellt, weil
wir die Aufgabe
erstellt haben,
Sie finden tatsächlich einen weil
wir die Aufgabe
erstellt haben, zufälligen Ort. Und hier benutzen wir diesen, wo wir den
Bewegungszustand in Bewegung setzen. Also diese hier
und die feindliche Basis, wir können
es tatsächlich ändern, weil wir nicht wirklich erst jetzt die
Bewegung und den Leerlauf haben. Wir haben auch den Treffer-Effekt. Und lassen Sie
es uns einfach umwandeln wie der Spieler, der Spieler, den wir haben diesen,
unreife Bewegungen Status. Lassen Sie uns es auch in
einen Bewegungszustand umwandeln. Ich denke, das ist eher so, dass es uns viel
besser dienen
wird als ein boolescher Wert. So wie wir
das noch einmal machen, lassen Sie uns einfach das Hier
und die Aufzählung verwenden. Lass uns das einfach benutzen. Wir
müssen nicht wirklich ein neues machen. Also drinnen hier,
weil der Spieler auch eine Hit-Animation haben
wird , werden wir das nicht für den Spieler hier
verwenden. Wir werden
nur einen Effekt erzielen, aber Sie können einfach entweder eine neue Aufzählung
für den Feind machen. Ich
werde das eigentlich nur benutzen weil wir meistens dasselbe
verwenden. Ich füge diese Treffer hinzu. Und ich
werde tatsächlich auch den Tod hinzufügen, aber das werden wir gerade nicht
programmieren, aber ich füge ihn gerade hinzu. Und was wir jetzt tun wollen, gehen wir
jetzt zurück
zur feindlichen Basis. Also im Feind, der feindlichen Basis, Lasst uns jetzt alles retten und fügen
wir diesen
Bewegungszustand hier hinzu. Nennen Sie es also Bewegungszustand. Lassen Sie uns es in
Essen oder Aufzählung ändern, was als E
Bewegungsstatus bezeichnet wird, der hier ausgewählt ist. Und jetzt ziehen wir es raus. Und das ist es, was wir hier
setzen wollen , anstatt uns zu bewegen. Und jetzt brauchen wir anstelle
eines Booleschen, lasst es uns löschen. Wir brauchen hier eine Aufzählung, die Bewegungsstaat
genannt wird. Also das Gleiche. Und lassen Sie uns den
Namen in den Bewegungsstatus ändern. Verbinden wir es hier. Whoops, ich habe es nicht so
getroffen. Und jetzt noch einmal, denken Sie daran, dass
dies ein Vertreter benachrichtigt, also müssen wir es
zu einer Wiederholungsbenachrichtigung machen. Und hier drüben
trennen wir dies, indem wir Alt
gedrückt halten und klicken. Jetzt kommt dieser vom
Blueprint-Interface, also müssen wir
den Boolean hier ändern. Wir können einfach
darauf klicken und löschen. Gehen wir also hier zum
Blueprint-Interface, und das ist für den Feind. Und hier setze den Status Bewegungen, ich werde
es hier löschen und
einen neuen namens Auswählen des
Aufzählungsbewegungsstatus erstellen und es Bewegungszustände
nennen. Jetzt wird es wieder aus irgendeinem Grund ausfallen. Es ist manchmal ein bisschen nervig
, dass das ausfällt. Manchmal kann man
den Motor und die Muttern schließen. Und manchmal
kann man das hier einfach löschen. Ich
lösche es einfach. Ja. Klicken Sie nun auf Hinzufügen. Mal sehen, ob das jetzt funktioniert. Das funktioniert jetzt, ich
weiß nicht warum es das macht. Nehmen wir manchmal an, setzen Sie Bewegung,
Daten, Kompilieren und Speichern ein. Gehen wir zurück zur
Spielerbasis, eigentlich nicht zur Spielerbasis, zur gegnerischen Basis. Also statt ein
hier, die Bewegung, Lassen Sie uns kompilieren und speichern, um
sicherzustellen , dass alles korrekt ist. Verbinden wir es jetzt. Okay, also setze die
Bewegungsdaten korrekt. Jetzt gehen wir das durch, Es geht durch den Server, und jetzt wird es
diese OnReceive-Funktion aufrufen. Nehmen wir also diesen bewegenden Zustand und sagen, dass Switch Autorität hat. Genau wie das, was
wir
bisher gemacht haben , das Autorität hat. Wenn du es bist, lass uns sie ausschalten, damit wir nicht wirklich alle haben. Die Sache ist,
dass wir nur den Leerlauf haben. Nehmen wir das
hier hell und sagen Set Flip Book. Jetzt haben wir nur das Idol und lassen mich das
ein paar Mal kopieren. Hier. Wir haben nur drei Dinge. Wir haben den Leerlauf, wir haben, sie rennen, also bewegen sich. Und wir haben den Treffer-Effekt. Wir werden später
die Tiefe haben. Also fürs Laufen benutze
ich einfach den Lauf richtig. Also benutze entweder den Lauf links oder rechts, das
spielt keine Rolle. Ich benutze
den Lauf genau hier. Für den Kopf. Ich benutze das hier. Also lasst uns diese Animationen einstellen. Nehmen wir unsere
Tierinformationen und brechen sie hier auf. Also brech. Und lass es uns hier nehmen. Jetzt im Leerlauf stecke ich es hier ein. Und für den Umzug stecke
ich es hier ein. Und für die Hits Animation, hier auf den Tod
einsteckt, werden
wir auch damit warten. Klicken Sie später darauf, blenden Sie nicht verbundene Pins aus, ziehen Sie
es zurück und kompilieren und speichern Sie. Und jetzt haben wir
alles, richtig. nun sicher, dass Sie, wenn Sie dies vergessen
haben, Stellen Sie nun sicher, dass Sie, wenn Sie dies vergessen
haben, achten Sie darauf, in jeden
Feind zu gehen und stellen Sie sicher, dass Sie in den Klassenvorgaben alle diese
Animationen hier
festgelegt haben , sonst wird es nicht funktionieren. Okay? Jetzt gehen wir
zurück zur Basis. Und hier,
anstatt uns zu bewegen, lasst uns Ihre öffnen, wir müssen hier tatsächlich etwas
ändern. Also
geh in der feindlichen Basis jetzt zu deinem Feind. Und drinnen von hier. Und definierte zufällige Aufgaben. Denken Sie daran, dass Sie
diesen Bewegungszustand
auf „Bewegen“ setzen und sich nicht bewegen. Aber im Moment ist
es eigentlich kein boolescher Wert mehr. Es ist der Bewegungszustand. Also halte ich die Kontrolle und klicke hier, um dies zu entfernen. Und das werden
wir in R1 umwandeln, oder? Denken Sie daran, die feindliche Basis zu hören Es ist das Laufrecht
, das wir für
die Bewegung im Verhaltensbaum
in dieser Aufgabe verwenden ,
die wir hierher bewegen werden
. Denken Sie daran, dass im
Verhaltensbaum auch
diesen Bereich hatte , in dem wir die
Bewegung boolean auf falsch gesetzt haben. Anstatt falsch zu sein, können
Sie es also auf den
Leerlauf setzen und
sehen , dass es bereits selbst repariert ist. Gehen wir also zurück zum
Verhaltensbaum. Jetzt
benenne ich dies um,
anstatt Bewegung Boolean zu setzen. Lassen Sie mich es einfach umbenennen, zu meinen Aufgaben
zurückkehren und dies in den Status „
Bewegungen einstellen“
umbenennen, da es nicht mehr wirklich
ein boolescher Wert ist. Es ist schön, so
organisiert zu bleiben. Jetzt ist alles in Ordnung. Jetzt gehen wir zurück
zur feindlichen Basis. Jetzt haben wir alles
in einen Bewegungszustand verwandelt. Hier möchte ich
die Hit-Animation spielen,
sobald ich als Feind
Schaden erhalte. Also werde ich diesen
kleinen Weg so ziehen. Ich werde sagen, Setze
Bewegungszustände. Ich nenne das
vom Feind. Denken Sie daran, dass
es nicht
vom Spieler ist, sondern vom Feind. Also wähle es hier aus und verbinde es und
verbinde es hier. Und ich werde
meinen Treffer-Effekt so spielen . Okay? Also klicke auf
Play, um es zu testen und klicke auf meinen Spieler. Und ich glaube, ich kann es gerade nicht
testen. Wenn ich also auf Treffer klicke,
siehst du, dass es trifft
und es ist alles wie ein Bug. Aber manchmal stoppt es
die Animation, weil sie sich
tatsächlich noch in deinem
Verhaltensbaum befindet. Aber du siehst, dass es funktioniert. Testen wir es also für den Spieler, Lass uns für den Kunden. Hier können
Sie also für den Client die Änderung sehen, die
der Player vom Server vorgenommen hat. Für den Kunden funktioniert
es auch. Wenn ich mir den Server
anschaue, kann ich sehen, dass diese Änderung von der Kline aus
vorgenommen wurde. Lassen Sie mich nur sicherstellen, dass
ich keine Bugs habe, ändern Sie es, um als Kunden zu spielen. Beide sind also Kunden. Das ist ein Klein,
das ist ein Kunde. Und lass mich diesen
Spieler auswählen, Omega kleiner. Es ist immer schön, wenn Sie
zwei Bildschirme haben, da
Sie einen Client auf einen
und den anderen hier platzieren können. Weil ich es nicht wirklich mag kann
ich das hier
für diesen Kurs nicht machen. Ich muss alles
auf einem Bildschirm haben. Wenn Sie also auf diesen
hier klicken,
sehen Sie die Änderungen, die
es anwenden , können beide Clients
die Änderung sehen. Okay. Das ist also richtig. Alles funktioniert.
Wir haben keine Kiste. Lass es mich hier für das Schwein testen. Und du kannst sehen, dass das Schwein
auch für das Schwein arbeitet. Das Problem ist, dass sie
sich gerade bewegen. Lasst uns das einfach sehr,
sehr schnell machen und wir können
tatsächlich eine schnelle Lösung machen. Also hier, wenn Sie angreifen
und wenn Sie getroffen werden, nehmen
wir diese
Bewegungskomponente und sagen den Bewegungsmodus einstellen, genau wie das, was wir mit unserer Leiter
gemacht haben. Stellen Sie also den Bewegungsmodus ein. Denken Sie daran, dass
wir es für unseren Brief auf Fliegen gesetzt haben. Aber dafür setzen wir es
einfach auf „None“ weil wir uns überhaupt nicht bewegen
wollen. Lassen Sie uns kompilieren und speichern. Und hier als dieser Kunde, lass mich zu den Schweinen gehen. Es ist viel einfacher zu
sehen, dass man diesen Feind trifft. Und du kannst
jetzt sehen, wenn ich es treffe, es bewegt sich nicht mehr. Okay. Nett. Und der Grund, warum es sich
plötzlich bewegt, ist, dass es immer noch
unseren Verhaltensbaum läuft. Und gerade jetzt ist der
Bewegungsmodus auf „None“ gesetzt, also steckt er hier fest. Das funktioniert also
richtig und wir müssen noch etwas Code machen, damit
es reibungsloser aussieht. Jetzt, da die
Animation funktioniert, wir das näher. Das nächste ist, dass wir den Verhaltensbaum
immer dann stoppen wollen , wenn der Feind Kopf ist weil wir nicht herumlaufen
wollen.
73. Den Verhaltensbaum stoppen: Okay, also um den
Verhaltensbaum am Spielen zu hindern. also daran, dass dies der Verhaltensbaum
ist. Es spielt
die gesamte Animation immer noch ab,
wenn Sie getroffen werden. Aber wir wollen
diese Animation beenden. Der Grund, warum ich das
tue, ist, nachdem wir den Feind in Maple Story getroffen haben, wird der Feind Sie ständig
verfolgen. Wenn ich also hier auf Play klicke
und diese Schnecke hier treffe, wird mich
diese Schnecke jagen. Es wird nicht
so gehen und es
wird nicht so gehen. Es wird tatsächlich nach
dem Spieler suchen und es wird
mich finden und mich jagen. Das ist es, was wir versuchen zu tun. Bevor wir das tun, stoppen
wir den Verhaltensbaum damit wir dies nicht
mehr ausführen wollen , wenn
die Feinde zuschlagen. Hier. Bevor wir das tun, machen wir das Sprite und wir
wollen die Logik beenden wenn sie
diese Hit-Animation beendet hat. Also, genau wie zuvor
mit der Angriffsanimation, können
wir
für die Hit-Animation
das Sprite nehmen und Flipbook sagen. Wir können die Länge nehmen. Wie lange läuft dieses Flip
Book? Wir können einen Delay-Knoten machen. Verzögern Sie es mit wie lang
diese Hit-Animation ist. Und danach nehme
ich
diese Bewegungskomponente
und
sage sofort die Bewegung stoppen. Also hör auf alles, was
du so machst. Und danach willst
du
den Verhaltensbaum stoppen. Im Moment
stoppt dieser nur die Bewegung des
Feindes, aber Sie möchten den
Verhaltensbaum auch vollständig stoppen. Und dies geschieht, indem man
den Controller des Feindes bekommt. Denken Sie also daran, dass Sie im Multiplayer einfach „Controller“ sagen
können, denn im Moment sind wir
im Feind. Also kriegen wir den
Controller für diesen Feind. Wir haben zugeschlagen. Und dann werden wir sagen
, Gets NME ref. Denken Sie daran, dass wir vor einer Weile
feindliche Referenz bekommen haben. Wenn Sie sich nicht erinnern, versuchen Sie, in die Schnittstelle zu gehen und schauen Sie sich
diese eine feindliche Basis an. Dies ist der Feind
des Schiedsrichters, den du gemacht hast, dem du hörst, dass er auch eine
Selbstreferenz So kannst du hier auf
den Feind verweisen. Mit diesem Controller
, den Sie haben. Jetzt können Sie davon ziehen und Sie wollen
bekommen, jetzt haben Sie,
Sie haben den Controller, was Sie angeben möchten, genau wie bevor wir
sagten, get feind ref. Nun, dieser Controller,
Sie sprechen speziell über
diesen KI-Controller. Wir müssen also angeben
, dass wir
speziell über
diesen KI-Controller sprechen . Um dies zu tun,
denken Sie daran, dass ich
einfach auch Besetzung sagen könnte, denn Casting
beziehen Sie sich einen Entwurf wie diesen. Aber für den
KI-Controller ist
es eine große blaue
Blaupause, genau wie die
Spielerbasis und so weiter. Also erstelle ich eine
eigene Schnittstelle. Also klicke hier. Und denken Sie in den Blueprints
daran, dass Sie hier
ein Blueprint-Interface erstellen können. Nennen wir das hier. Nennen wir es KI-Controller. Anstelle des Spieler-Controllers
ist jetzt ein KI-Controller. Und hier sagen wir uns den
Controller holen oder nennen
wir es wirklich Ai bekommen. Prolog ref. Lassen Sie uns dafür eine Ausgabe
machen, und die Ausgabe ist AIC-Feind. Dies rufen wir
an den API-Controller auf. Nennen wir es KI-Controller. Und jetzt haben wir diese Variable. Denken Sie nun daran, hier
in den Feind zu gehen und
in den KI-Controller zu gehen. Und denken Sie daran, zu den
Klasseneinstellungen zu gehen und
diese
KI-Controller-Blueprint-Schnittstelle hinzuzufügen . Hier kompilieren Sie Save. Jetzt können Sie die Funktion sehen. Und hier werden wir die Selbstreferenz
machen. Genau wie das, was wir bisher
gemacht haben, nichts Neues. Jetzt, da wir das hinzugefügt haben. Jetzt können wir einen Verweis auf diesen KI-Controller machen,
ohne zu kosten. Wenn ich also zur feindlichen Basis gehe, kann ich
jetzt sagen, hol aae,
kontrolliere unsere Referenz. Okay, nun, als Referenz der
Luftregler ,
um einen Verhaltensbaum
zu stoppen , müssen Sie nur davon nehmen
und die
Gehirnkomponente dieser KI nehmen. Also bekomme die Gehirnkomponente
und sage: Stoppt Logik. Jetzt wird es
den Verhaltensbaum stoppen. Was ist der Grund? Ich sage nur Treffer
für den Kopf des Feindes. Für uns
spielt es hier keine Rolle. Also der Kopf des Feindes
und es wird diesen KI-Controller
aufhalten. Okay, wenn ich also
auf Jetzt spielen klicke und ich gehe zum Spieler
und treffe diesen Feind. Es wird
diesen Feind treffen und du kannst
sehen, dass er vollständig stoppt. Es wird sich nie
bewegen, weil ich
den Verhaltensbaum
tatsächlich gestoppt habe . Jetzt kannst du es
danach bewegen, nachdem wir es getroffen haben. Es ist also nicht vollständig statisch. Sie können
diesen Bewegungsmodus einfach kopieren. Ich gehe
zurück und füge es ein. Jetzt wird es wieder von
keinem zum Laufen gehen. Jetzt werden wir also
wieder laufen, nachdem du getroffen wurdest. Und denkt daran, dass wir diese Verzögerung festgelegt haben. So lange Ihre Animation für die Header-Animation
ist, Sie werden sie verzögern. Denken Sie daran, ein einfacher
Fehler, den ich mir vorstellen kann ist hier und die Vermögensfeinde. So zum Beispiel für
den Schneckenhit-Effekt. Denken Sie noch einmal daran, ich sagte
vorher, dass dies sehr
wichtig sei , die Frames
pro Sekunde für diesen Wärmeeffekt zu ändern , obwohl es ein Frame ist. Denn wenn Sie es wie Standard auf 15
einstellen, wird
diese Verzögerung hier sehr,
sehr klein sein , also werden wir
diese Animation hier nicht einmal bemerken. Also schicke es an eins,
was 1 Sekunde bedeutet. Es ist also ein Frame pro Sekunde. Und es wird 1 Sekunde warten, und dann wird es
das spielen. Okay, also setzen wir es auf
laufen, jetzt können wir spielen. Wann immer Sie
es treffen, wird
es die
Kopfanimation abspielen und dann wird es in den Gehmodus wechseln
. Aber im Moment ist es
im Gehmodus, aber wir haben nicht wirklich angegeben, dass es
tatsächlich wieder laufen soll. Lassen Sie uns das also machen, bevor
wir dieses Video beenden. Und denken Sie daran, wir können einfach die eingestellte Bewegungslast oder
nicht die Motivzustände verwenden. Und hier in der feindlichen Basis,
gesetzt, Bewegungen Zustand. Und lasst uns einstellen, dass es richtig läuft, denn wir wollen
wieder laufen. Okay, das
sollte es also für dieses Video sein. Also lasst uns einfach spielen und
sehen, ob es funktioniert. Jetzt habe ich den Feind und er wird in
die laufende Ladung gehen. Jetzt wird es gerade
stecken bleiben, weil wir ihm nicht gesagt haben,
wohin wir gehen sollen. Und damit werden
wir in der nächsten Lektion
arbeiten, in der wir
dem
Feind sagen, dass Sie die Ebene
tatsächlich
verfolgen werden.
74. Feind auf der Suche nach dem Spieler: Jetzt wollen wir, dass der Feind
den Spieler jagt. Wenn der Feind also vom Spieler getroffen
wird, wird er rübergehen und den Spieler
jagen, der ihn getroffen hat. Also lasst
uns zuerst alles retten. Lassen Sie mich das
alles tatsächlich schließen, weil es ein
bisschen zu viel wird. Fangen wir hier von
Anfang an. Also hier im Feind möchte
ich, dass du den gegnerischen Controller öffnest. Und hier in den
Komponenten klicken Sie hier und schreiben Sie Sensor. Sie können also sehen, dass wir
etwas haben, das zum Erfassen aufgerufen wird. Es wird also unseren Spieler
spüren. Das klingt nach, das
klingt wie ein Skynet. Es wird jetzt ein bisschen gruselig. Also lassen wir die Pons spüren und es wird
die Punkte spüren. Also der Spieler, und das einzige, was ich hier ändern
werde, kannst
du sehen, was er tun kann. Zum Beispiel kann es Geräusche hören. Wenn du also wie
ein schleichendes Spiel wie
Metal Gear Solid machst, kannst
du diese
warme Empfindung ein schleichendes Spiel wie
Metal Gear Solid machst, an die Sonne haben, Geräusche
senden, wenn du
an die Wand klopfst und so weiter. So ziemlich cooles Zeug. Aber das einzige, was
wir hier
im peripheren Blickwinkel ändern werden, werde
ich es auf
180 setzen, damit es 360 aussehen kann. Lassen Sie uns kompilieren und speichern. Das ist das einzige, was wir
tun mussten . Jetzt schließen wir es. Lasst uns die feindliche Basis öffnen. Also hier in der feindlichen Basis, wenn der Feind beschädigt
wird. All das haben wir in
den vorherigen Lektionen gemacht. Also jetzt bewegt
sich der Punkt wieder. Was wir jetzt tun wollen, ist, dass
wir den Spieler jagen wollen. Wenn du also anfängst, dich zu bewegen,
willst du den Spieler jagen. Die Sache, die wir benutzen werden
, heißt
Ai move to the one to the one one to the one one one Ai ist zu sich gezogen. Also wird es
zum Spieler wechseln. Jetzt wird es dir
hier den Punkt sagen, wer sich bewegt. Es ist nur Selbst, es ist der Feind. Also werde ich davon abziehen
und mich selbst sagen. Das ist der Teich. Okay,
worauf bewegt es sich? Es wird zum Spieler wechseln
. Aber wir haben hier nicht wirklich eine
Referenz für den Spieler. Hier sehen Sie angezettelt von, und das ist es, was ich den Schaden angerichtet
habe, und das ist der Controller. Das ist also eigentlich
der Spieler-Controller. Wir können es von hier aus in der
Fahrt benutzen. Klicken Sie mit der rechten Maustaste darauf und
sagen Sie fördert eine Variable. Ich nenne es
Player-Controller, der hier verbunden ist. Und denken Sie daran
, diese Informationen zu replizieren , damit der
Client dies auch sehen kann. Jetzt haben wir die
Plake-Kontrolllinie. Daraus können wir jetzt den
Teich holen. Nehmen Sie also den Spieler-Controller, bleiben Sie und kontrollieren Sie weiter. Das ist es, was Sie im Mehrspielermodus
tun können. Sie haben also den
Controller und Sie können ihn von
diesem Player-Controller aus steuern. Jetzt haben wir den Spieler,
und jetzt können Sie sehen, wie Sie den Standort des Schauspielers
bekommen. Jetzt haben wir den Standort des
Spielers und er
wird zu
diesem Ziel jagen. Es geht also auf den Standort
des Spielers hin. Okay, wem jagt es?
Wer ist das Ziel? Das Ziel ist der Spieler. Es ist also einfach nur dieses. Dies ist der Player Pawn. Also werden wir es einfach hier verbinden. Und wie ist der
akzeptable Radius? Wenn es diesen Radius erreicht hat, wird er aufhören, weil
es dir
gelungen ist, den Spieler zu jagen. Ich senke es nur ein
bisschen ab, vielleicht zwei Einheiten. Also nur ein bisschen
niedriger als zuvor. Okay, ich
verlege das hier rüber. Und um
die Dinge ein bisschen mehr zu organisieren, ist dieses
vielleicht
hier oben und doppelklicken Sie darauf damit es sichtbarer ist, so
etwas. Okay, also sehr, sehr,
sehr, sehr leicht zu verstehen. Also geht es, also geht
dieser Teich in Richtung des
Ziels der Spieler, dem Ort. Und es jagt
diesen Spieler her. Okay, also werde ich Erfolg haben, wir müssen etwas tun. Was sollte also passieren, wenn
du den Spieler erreichst? Und das ist etwas
, das wir später verbessern
werden. Also nicht wirklich im Moment. Versuchen wir es also auszuprobieren. Also lass uns mal sehen, Lass uns spielen. Und jetzt können wir sehen, ob
ich zum Beispiel diesen Feind und ich rennen kann. Du kannst jetzt sehen, dass es mich
tatsächlich erreicht hat. Und wenn ich das noch einmal mache, lass mich tatsächlich viele dieser Feinde entfernen ,
denn jetzt, wo wir mit dem
Feind arbeiten, wirst du es sehen. Whoops, ich lösche
das Ganze. Sie werden viel
klarer sehen, was ich eigentlich
mit nur einem Feind arbeite. Also lösche ich all diese Feinde und füge sie später hinzu. Vielleicht brauche ich nur
einen
hier unten , nur um das zu testen,
beide raus. Und ich kann auf Play klicken. Testen wir es jetzt. Zum Beispiel, auf diesem großen werde
ich es jetzt treffen. Und es wird mich
für immer jagen, bis es mich erreicht. Also sehr cooles Zeug. Jetzt wird es zu mir gehen und wenn es sich zu mir bewegt, wird still stehen, um mir
tatsächlich Schaden zuzufügen. Jetzt macht es nichts anderes, weil wir ihm
bei Erfolg nicht gesagt haben , was es
tun sollte, wenn es mich erreicht. Jetzt könnte ich vielleicht einfach davon
abziehen und einfach ewig
weiterschleifen und vielleicht
wird es mir einen Fehler geben. Versuchen wir hier zu spielen. So erfolglos, dass es mich
einfach weiter schmecken kann. Also wenn ich diese Schnecke
hier treffe und sie jagt
mich und es trifft mich. Und wenn ich jetzt verschwinde,
siehst du, dass es
mich jetzt für immer verfolgt. Jetzt ist es mein Haustier.
Es ist nicht mein Feind. Ich habe eine Schnecke als Haustier. Ich kann das Schwein
auch so haben, wie ich es hatte. Es läuft, sie werden
mir jetzt für immer folgen. Okay? Wie du dir das vorstellen kannst, kannst
du auch ein Haustiersystem erstellen in dem du einfach dem Spieler
folgst. So können Sie all diese
Tools sehen, die nützlich sind, um
diese Tools zu kennen , damit wir
sie so verwenden können, wie Sie es möchten. Okay, ziemlich cooles Zeug.
Ich lösche das. Was ich jetzt hier machen möchte, möchte
ich das in
der nächsten Lektion tun, in der wir verbessern wie der Feind
um ihn herumläuft , wenn er den Spieler
erreicht.
75. Verbessere den Feind auf der Jagd des Spielers: Okay, also möchte ich
diesen Code ein wenig verbessern. Wann immer es sich
zum Spieler bewegt, möchte
ich nicht weiter zu
diesem Spieler wechseln und den Spieler weiter
verfolgen. Ich möchte, dass sich die Bewegung ein bisschen zufällig
anfühlt,
obwohl dies nicht der Fall ist. Was ich möchte, dass du
hier auf Erfolg machst, möchte
ich etwas
namens Move Tool verwenden. Und wählen wir diesen aus, der
sich bewegt an Ort oder Schauspieler nennt . Okay, jetzt
geht es zum Spieler, und wann immer er erreicht, wird
der Spieler
diese Funktion ausführen , die man
zum Standort oder Schauspieler bewegen nennt. Und ich werde diesen
benutzen, Dislokation hier. Also lasst uns
diesen Ort aufschlüsseln. Minute Pause,
Machen wir einen Vektor. Und das erlaubt uns, X, Y und Z zu
sehen. Und jetzt, hier im
Controller, braucht
es die KI-Controller, wie Sie sehen können, wenn Sie die Maus darüber
halten. Also können wir nicht sagen, bekomme den
Controller und füge ihn hier hinzu. Es wird es nicht akzeptieren. Es braucht speziell
den KI-Controller. Ich sage KI-Controller. Und Sie können sehen, dass wir diesen
namens „Get AI Controller“ haben . Und wer ist der kontrollierte Schauspieler? Denken Sie daran, dass wir uns in der
feindlichen Basis befinden, also können wir uns einfach so selbst
sagen. Also wie ist der Standort hier? Wen ziehe ich auch um? Jetzt, um das Ziel zu erreichen, müssen wir uns nicht
wirklich an
irgendetwas anschließen , weil es heißt, zum Standort oder zum Schauspieler zu
wechseln. Und ich benutze
einfach den Standort. Was ist der Ort, an dem
wir auch umziehen. Aber ich will es tun ist hier, ich kann es dir tatsächlich zeigen. Wenn der Spieler also hier
steht, lass mich zum Beispiel einfach
Tsarina nehmen, damit wir
ihn viel besser visualisieren können. Serena steht also hier. Wenn der Feind den Spieler
erreicht, möchte
ich, dass der Feind
100 oder ähnliches
Einheiten in diese Richtung bewegt . Und dann wird der Feind zu diesem Spieler
zurückkehren. Und wenn du
diesen Spieler wieder erreichst, möchte
ich 100
in diese Richtung bewegen. So bewegt es sich also weiter. Denn im Moment bewegt es sich
einfach zum Spieler und es ist einfach so geblieben. Aber ich möchte, dass es sich hier ständig so um
den
Spieler bewegt , also jagt es den Spieler weiter, aber es hat ein
bisschen mehr Bewegung, als nur
hier beim Spieler festzustecken. Wenn wir also hier zur
feindlichen Basis zurückkehren, also was ich überprüfen werde,
wann ich zuerst überprüfen muss, ob dieser Feind von dieser Seite
kommt, müssen
Sie auf diese Seite gehen. Wenn der Feind jedoch von dieser Seite
kommt, müssen
Sie auf diese Seite gehen. Also muss ich überprüfen welcher Seite der
Feind kommt. Also muss ich zuerst
den Spieler nehmen. Ich muss wissen, wo
der Spieler ist. können wir hier machen. Nimm das nochmal. Eigentlich
kopiere ich den Code hier. Also bekommen wir
den Spieler die Kontrolle darüber, die Kontrollpunkte zu bekommen. Also der Spieler, und wir bekommen den Standort
des Spielers. Ich werde das brechen,
denn das einzige, woran ich
interessiert bin , ist dieser rote Drehpunkt, was die X-Achse bedeutet. Ich interessiere mich also nur für
die X-Achse. Das Z oder das Y sind mir egal. Also lasst uns wieder hierher gehen. Ich interessiere mich nur für
die X-Achse. Jetzt habe ich den Standort des
Spielers. Ich brauche auch den Standort des
Feindes. Und ich kann einfach sagen, hol dir Standort des
Schauspielers, weil wir bereits im Feind
sind, also das Ziel selbst. Und lass mich das auch brechen. Breche diesen Vektor, damit ich X, Y und Z sehen
kann. Also werde ich fragen, ist das x, also sind es
die Spieler, x. Ist das weniger als der
Ort dieses Feindes? Und was bedeutet das
ist der Feind, der hier stehende Feind? Es wird fragen,
denken Sie daran, hier, wenn Sie sich das x anschauen, wenn ich in diese Richtung gehe, wird
es um 0 sein. Also wird es hier
ins Minus kommen. Wenn ich in diese Richtung gehe,
siehst du, dass es sinkt. Also bin ich, ich frage gerade, ist der Standort des Spielers,
der x-Standort? Ist es weniger als die Feinde? Und gerade jetzt ist es, denn gerade jetzt steht der Spieler,
der hier
stehende Feind, dieses X, man kann sehen, dass das x hier
für den Spieler
weniger ist als das für den Feind. Es bedeutet, dass der Feind
tatsächlich aus
dieser Richtung kommt , wenn das stimmt. Was sollte also
passieren, wenn das Atom aus dieser Richtung
kommt? Und das
müssen wir gerade hier angeben. Hier können wir also einen Zweig machen. Und lasst uns das ein
bisschen wegziehen. Also können wir einen Zweig machen
und sehen, ob das stimmt. Wenn das stimmt, wollen wir diesen Feind auch bewegen. Wie minus fünfhundert, fünfhundert minus 100 Einheiten. Denn denken Sie daran, wann Sie
den Spieler erreichen und wenn wir
sagen, dass
Sie den Standort verschieben , sind Sie minus 100,
was bedeutet, dass
Sie minus 100 im X erreichen werden,
was bedeutet, dass der Charakter tatsächlich
wird, oder der Spieler beim
Feind bewegt sich 100 an diesen Ort, weil
Sie hier einen Minuspunkt haben. Das ist es, was
wir versuchen zu tun. Also sagen wir hier, wir sagen, dann
nimm das stimmt, nimm
dann die Feinde x Ort und subtrahiere
100 davon. Und jetzt ist dies der
neue x-Standort. Y und Z, wir
interessieren uns nicht wirklich für sie, also werden wir sie einfach so
anschließen, wie sie sind. Was wir jetzt sagen,
ist, dass die Spieler
jetzt der x-Standort des Spielers sind ? Ist es weniger als die Feinde? Das bedeutet, dass der Feind
hier steht und der Spieler hier
steht. Wenn ja, das stimmt, dann beweg diesen Feind minus, was immer
das X gerade ist, was hier ist, minus 100 Einheiten. Das ist unser neuer Zielstandort,
was bedeutet, dass Ihre neuen
Zielstandorte hier drüben sind. Der Feind wird also von hier nach hier
ziehen. Okay? Also sehr, sehr
einfach, hier zu tun. Und die andere Sache ist, wenn es falsch ist, müssen
wir das nehmen und sagen, dann werden Sie 100 plus 100 Einheiten
bewegen. Denn denken Sie daran, wenn es falsch ist, bedeutet das, dass der Feind hier
steht. Das heißt, wenn Sie den Spieler
erreichen, möchten
Sie, dass Ihr neues Ziel plus 100 und x ist, weil Sie es auf diese Weise bewegen
möchten. Plus 100 macht es 800 und
etwas hier drüben, okay? Wenn du also in die andere
Richtung stehst, willst du plus 100 sein. Das ist also dein neues Ziel hier. Also wenn ich diese einfach hierher ziehe, also das x, das y und z, ist uns das
egal. Es ist nur das X, das wir anpassen. Und das wird unser neues Ziel sein. Aber anstatt diesen Code
einzufügen,
kopieren , wenn
Sie dies sehen, wie Sie sehen, einfach Einfügecode und sie sehen 100% gleich aus, bis
auf einen Wert. Sie können Ihren
Code tatsächlich ein bisschen besser machen. Sie können etwas tun, das
als Select-Load bezeichnet wird. Was Sie hier tun können,
ist, anstatt
diesen Zweig zu machen und so zu tun, können
Sie sehen, dass dies
der gleiche Code ist und es
tatsächlich eine schlechte Kodierungspraxis ist tatsächlich eine schlechte Kodierungspraxis ,
weil Sie nur Code
kopieren was fast das Gleiche ist. Also kann es das ein
bisschen besser machen. Anstatt hier, kannst
du es tun, lass mich das
trennen. Und stattdessen addieren oder
subtrahieren wir jetzt entweder 100 davon. Wir können daraus ableiten und
wählen und diese
namens Select Load verwenden. Und jetzt dieser boolesche Wert, verbinden
wir es
stattdessen mit hier. Jetzt wird es sagen, dass
es der Standort des Spielers ist, dieser x-Ort ist weniger als
der Standort des Feindes. Wenn das stimmt,
müssen wir erneut subtrahieren,
wenn das stimmt. Anstatt diese nur zu tun, können
wir eigentlich einfach Minus sagen, ich sage eins minus 125. Ich glaube, ich habe
mit dieser Nummer getestet. Ich glaube, das ist der beste. Und wenn es nicht stimmt, was bedeutet, dass der Feind hier
steht, wollen
wir 125 hinzufügen. Sie können also hier sehen, dass
wir nicht wirklich all
diese Kopie einfügen
müssen. Jetzt wird es automatisch
für uns
erledigt , damit wir den gleichen Code nicht kopieren und
einfügen müssen . Es wird wählen,
Nehmen, schauen Sie sich das an, wenn
es wahr oder falsch ist. Und es wird diese Zahl
machen, als würde sie minus
oder plus diese Zahl machen. Und wir können nicht wirklich hinzufügen, als ob wir es hier nicht einfach
direkt verbinden können , weil es auf diese Zahlen gesetzt
wird. Was wir tun müssen, ist
diesen x-Wert zu nehmen , und wir müssen diese Zahl darüber
hinzufügen. Also hier müssen wir diese Zahl
hinzufügen. Nehmen wir zum Beispiel an, das x ist derzeit 600 für den Feind. Dann geht es, wenn
das hier stimmt, wird
es
600 plus minus sagen, was nur
minus 600 minus 125 bedeutet. Und es wird das
als neuen x-Standort festlegen. Wenn der Feind hier ist, wenn das falsch wird, so war das wahr
und das war falsch. Es sagt 600 plus 127, dann wird es an diesen Ort
ziehen. Okay, das ist also viel besser als das
Einfügen von Code. Wenn Sie also sehen, dass Sie
Code kopieren und einfügen, gibt es wahrscheinlich einen
besseren Weg, dies zu tun. Wieder kannst du gerne
zu meinem Discord gehen. Ich bin bereit, dir
bei all diesen Dingen zu helfen. Es ist schön,
all diese guten,
guten Praxis-Dinge zu haben ,
wenn Sie programmieren. Du magst es also nicht, also ist es gut, so
sauber zu bleiben. Okay, damit wir diesen Zweig tatsächlich
entfernen können. Wir brauchen es nicht mehr wirklich. Testen wir es also tatsächlich. Jetzt
müssen wir also tatsächlich etwas tun denn wenn Sie
an diesen Ort ziehen, müssen
wir die Bewegung
hier wiederholen und fertig werden. Ziehen wir diesen Stift
und wiederholen Sie das einfach. Ich bin hierher gezogen. Ich
doppelklicke auf diesen Pin , um Umleitungsknoten zu erstellen. Lassen Sie es tatsächlich etwas
sauberer aussehen , damit es nicht verwirrend so etwas
auszusehen. Jetzt kompilieren und speichern wir
und lasst uns spielen und sehen, was passiert, wenn wir etwas
vergessen haben. Nochmal, ich gehe hier hin. Und lass mich tatsächlich den Spieler
löschen, den Spieler hier, wieder spielen. So als würde Luke
den Nagel treffen. Es wird sich zu mir bewegen. Wenn es mich erreicht,
wird es 125 an
diesen Ort bringen , wenn es mich wieder
erreicht, 125. Sie können sehen, dass dies
die Bewegung ist, die wir
hinzugefügt haben , und das ist Phi, ziehen Sie sie hier wieder nach oben. Wenn es mich erreicht, wird
es entweder minus
125 zu den aktuellen
X-Standort-Tags plus 125 verschoben . Es wird an
diesen Ort gehen , wenn der
Film fertig ist, es wird
diese Bewegung wiederholen, was bedeutet, wenn er
steht,
wenn ich zum Beispiel zum Spiel zurückkehre, wann Wenn du hier stehst,
wird es mich dann wieder jagen. Und wenn es mich dann wieder
erreicht, wird
es
diesen Code noch einmal wiederholen. Es läuft also ständig in dieser kreisförmigen
Bewegung. Und ich denke, das ist ein
bisschen reibungsloser, um die Bewegung so zu machen,
denn jetzt, wenn ich weggehe , wird es mich
wieder jagen. Also
funktioniert alles richtig. Verfolge mich jetzt, wenn es mich erreicht, es wird 125
in diese Richtung gehen. 125 in diese Richtung. 125 in diese Richtung
geht weiter und jagt
mich wieder, wenn ich weggehe. So sehr coole Bewegung
und
das können wir hier mit dem Schwein versuchen . Sie können sehen, wie sich das Schwein bewegt wie
die Animation des Schweines. Eigentlich funktioniert es gut. Okay. Also wird es mich jetzt jagen. Und sie stehen
mir immer wieder gegenüber und jetzt
gehen sie 125 in diese Richtung. Und es gibt, als gäbe es
einen kleinen Bug mit diesem, wir müssen möglicherweise die
Rampenkollision hier beheben. Es ist wahrscheinlich eine Kollision
mit der Statik hier. Was Sie also
hier in der Basis tun können, können
Sie auf die Kollision klicken, können tatsächlich alles
ignorieren außer dass der Po1 und
der Kunde Spieler ist. Bewegen Sie sie also einfach von der Überlappung,
weil wir uns
hier für diese Kollision hier nicht wirklich mit irgendetwas überlappen
müssen mit irgendetwas überlappen
müssen. Und für diese Kapsel. Wir können das nicht wirklich tun,
weil es jetzt läuft, sie werden
vom Boden fallen. Wahrscheinlich. Du kannst sehen, dass es keine Feinde gibt,
weil sie
durch den Boden fallen. musst du also in
der Kapsel haben. Also klicke jetzt auf das Spiel, lass uns sehen, das ist die
Schnecke, das Schwein hier. Okay, und lassen Sie uns diesen Ort
verschieben. Ups, ich hab es nicht getroffen. Okay,
ich glaube, es funktioniert jetzt, also hören sie jetzt
nicht hier auf der Rampe ab. Okay, so sehr cool. Jetzt haben wir eine sehr einfache, sehr einfache KI-Bewegung. Und es sieht sehr cool
aus, sieht auch zufällig aus, obwohl es ein
sehr, sehr einfacher Code ist. Es sieht also auch zufällig aus, obwohl es nicht
mit Zufall zusammenhängt. So sehr coole Sachen, die
wir hier gemacht haben. Und ja, das
war's für dieses Video. Ich hoffe, du hattest Spaß. Ich hatte
Spaß beim Erstellen und lass uns
zum nächsten übergehen.
76. Feind beim Anwenden von Schäden: Okay, jetzt sind wir bereit, den Feind den Schaden anrichten zu lassen, denn bisher ist eigentlich nur der Spieler, der hier diesen
Schaden anrichtet. Also richtet nur der Spieler
den Schaden an. Wir brauchen den Feind, um dem Spieler ebenfalls
Schaden zuzufügen. Und um diesen Schaden anzurichten, wollen
wir ihn hier nicht wirklich auf
irgendeinen Schaden programmieren , weil
wir möchten, dass der Feind den Schaden
anrichtet,
obwohl er von niemandem getroffen
wird. Wenn der Spieler also in
den Feind tritt, obwohl der Spieler ihn nicht getroffen
hat, kann er dennoch Schaden anrichten. Lassen Sie uns also einfach
ein separates Ereignis
mit dem Namen Start
angewendeter Schaden machen . Und das werden wir tatsächlich
sofort tun
wollen, wenn sie in das Level
spawnen. Okay, also lasst uns zurück zu den Schnittstellen und
in der feindlichen Basis, lass mich
hier eine neue Funktion machen , die alles anfängt. Und nennen wir es
beginnt angewendeter Schaden. Und lasst uns einfach einen
booleschen Wert machen, in dem wir
den angewendeten Schaden sagen , und dies
kann entweder wahr oder falsch sein. Ja, das war's vorerst. Also lasst uns kompilieren, speichern und zur feindlichen Basis zurückkehren. Und was wir hier
sagen können, ist, dass wir mit der rechten Maustaste klicken können und
Start sagen , Schaden
anrichten und dieses Ereignis hier
aufrufen können. Jetzt wird dieser wieder durch den Server gehen,
um sicherzustellen, dass es nicht der
Client ist, der nicht betrügt. So startet der Server Schaden anrichten. Normalerweise nenne ich
sie einfach den gleichen Namen wie die normalen Ereignisse
und laufe auf dem Server. Zuverlässig. Und jetzt müssen wir diesen boolean hier, wir müssen es offensichtlich
wieder hinzufügen, Schaden anrichten. Jetzt können wir sagen, wir können, wir können
hier einen Zweig schreiben und sagen, ob das stimmt oder falsch
ist. Und damit
wollen wir etwas tun. Wir wollen also anfangen,
den Schaden anzurichten, wann immer
er wahr ist und falsch ist, wir wollen keinen Schaden mehr
anrichten. Und wann setzen wir
es auf „true“ oder „false“? Lassen Sie mich also zuerst
diese Serverfunktion hier ausführen , hier
Startlichtschaden und verbunden. Wann wollen
wir den Schaden anrichten? Wir möchten
den Schaden anrichten, wenn der Spieler
mit dem Feind kollidiert. Wenn der Spieler, wenn
ich zum Feind zurückkehre, wenn ich zurück zu einer Schnecke gehe,
wenn der Feind hier mit dieser kleinen
Kollisionsbox wenn der Feind kollidiert, wollen
wir anfangen, dem Spieler
Schaden zuzufügen. Davor
möchten wir keine beschädigten Fälle anwenden. Denken Sie daran, dass wir unseren Code
optimieren, also wollen wir
den Schaden nicht 24-sieben anrichten, ich möchte nur
Schaden anrichten, wenn der Spieler
mit dem Feind interagiert. Ich gehe
hier zur feindlichen Basis und gehe zum Ansichtsfenster, klicke auf diese Kollision, gehe nach
unten und
klicke dann auf
n-Komponenten-Überlappung. Beim
Komponentenbeginn eines Labors, was wir
genau wie zuvor gemacht haben, möchten
wir es über
Switch ausführen, haben die Berechtigung,
sicherzustellen , dass es der Server
ist, der dieses Ereignis ausführt. Und wieder möchte ich dieses Mal
eine neue überlappung machen dieses Mal
eine neue überlappung damit wir das auch zur
gleichen Zeit tun können. Ich werde prüfen, ob sich der Spieler
überschneidet, was sich
damit überschneidet. Also nochmal, Schauspieler
hat Layer markiert. Wir wissen, wir wissen, dass der Spieler
den Tech-Spieler hat und wir
können jetzt einen Brunch machen. Ich glaube nicht, dass ich es noch
erklärt habe, aber du kannst auch einen
Zweig machen, wenn du einfach gedrückt hältst, B auf deiner Tastatur
gedrückt hältst
und dann
klickst, du kannst auch
Verzweigungen erstellen. So eine sehr coole Abkürzung
, die du machen kannst. Wenn das Tag also ein Spieler
für diesen Schauspieler ist, werden
wir
Schaden anrichten und
wir sind nur daran interessiert, dieses Event hier durchzuführen. Es fängt also an,
hier in der gegnerischen Basis Schaden zu liegen. Und wir werden das auf wahr
setzen. Wenn wir nun die Überlappung beenden, wo Sie nur diesen Code kopieren
möchten, fügen Sie
diesen ganzen Code ein und wir möchten den Schaden
nicht mehr anrichten. Okay, so optimiert
man es also. jetzt für den angewendeten Schaden tun möchte, Was ich jetzt für den angewendeten Schaden tun möchte, ist,
dass ich kontinuierlich Schaden
anrichten möchte. Ich werde dir zeigen, warum ich
dir eigentlich nicht zeigen kann, warum ich es
wirklich sehr schnell erklären kann. Also wenn der Spieler dabei ist nimm einfach den
Spieler, nicht die Schnecke. Wenn also der Spieler hier
unter dem Spieler
in diesem Feind steht ,
laufe ich herum, gehe
ich in den Feind. Ich werde getroffen. Ich verliere die Gesundheit. Aber wenn ich in
dieser Sphäre sicher bleibe und ich mich
nie damit überlappt. Obwohl ich ungefähr zehn Sekunden stehe
, werde
ich keinen Schaden anrichten,
weil
Sie am Ende Schaden anrichten und
anfangen, sich zu überlappen . Aber denken Sie daran, dass
dieses Ereignis nur einmal
ausgeführt wird, da es nur dann ausgeführt
wird, wenn
Sie sich überlappen. Und dies wird
einmal ausgeführt, da dies der Fall ist, dieses Ereignis wird einmal ausgeführt. Und das ist, wenn du anfängst, den Feind zu
überlappen. Aber wir möchten diesem Spieler
kontinuierlich Schaden
zufügen , wenn Sie
sich nicht von diesem Feind entfernen. Vielleicht verursacht es dir
alle zwei Sekunden einen Schaden , wenn du nur noch in
diesem Feind
stehst. Wir möchten die
ganze Zeit überprüfen, ob der Spieler
tatsächlich
hier drin steht und wir Schaden anrichten
möchten. Also hier sind wir, wir
prüfen schon,
ob der Spieler
hier in dieser Box
steht , weil wir anfangen Schaden
anzurichten, wenn der Spieler in dieser Kollision
ist und wir Hör auf, hier
Schaden anzurichten. Denken Sie noch einmal daran, dass Sie es vielleicht
schon erraten haben, wenn Sie kontinuierlich Schaden anrichten
möchten, also müssen
Sie das Wort kontinuierlich einen Timer verwenden. So genau wie das, was wir vorher gemacht haben. Stellen Sie also den Timer nach Ereignis hier ein. Wir werden von hier aus fahren
und es zu individuellen Ereignissen machen. Nennen wir das einen
angewendeten Schaden. Wir haben diese benutzerdefinierten Ereignisse und möchten etwas Schaden
anrichten. Der Schaden, den wir anrichten möchten. Lasst uns tatsächlich
Looping machen und ich werde jede 0,12-Ära
überprüfen. Das bedeutet also, dass Sie zehnmal pro Sekunde
Schaden anrichten. Und das wird später Sinn ergeben, als würden wir dies reduzieren. Aber was wir tun wollen, lassen Sie es uns hier runter bringen. Was wir tun wollen, ist
wieder, überlappende Schauspieler zu bekommen. Wir sind also daran interessiert, die
gesamte Spielerbasis zu erhalten. also alle sich
überlappenden Spieler bekommen, wollen
wir allen
Schaden zufügen. Und lasst uns
davon ziehen und für jeden sagen. Diese Methode, wenn wir
bereits vom Spieler
zu den Feinden gegangen sind, ist sie
jetzt in die
entgegengesetzte Richtung. Jetzt sind es die Feinde, die den Spielern
Schaden zufügen. Stellen Sie einfach sicher, dass Sie hier die Spielerbasis
ausgewählt
haben und nicht die gegnerische
Basis oder etwas anderes. für jeden dieser Spieler Was wollen wir für jeden dieser Spieler tun? Jetzt? Sie können auch die
Länge überprüfen, ob sie gleich 0 ist, aber das macht
keinen Sinn, da Sie bereits überprüfen
, ob die Spieler hier drin
stehen oder nicht. Also für jeden dieser
Spieler, die in
der Kollisionsbox
stehen . Auch hier wollen wir
davon fahren und sagen Schaden anwenden. wen
möchte ich jetzt Schaden anrichten? Der beschädigte Schauspieler? Es ist der Spieler. Es
ist also nur dieser Typ hier. Und wir müssen angeben, wie
viel Schaden jeder Feind mischt. Also müssen wir auf
die Struktur in
den Tierinformationen zurückgehen . Und hier müssen wir eine
neue Variable namens Damage hinzufügen. Lassen Sie
es mich einfach hier oben ziehen, unter Gesundheit, und lassen Sie es mich in einen Schwimmer
umwandeln. Sparen Sie hier und die feindliche Basis
jetzt können wir kompilieren und speichern. Jetzt können wir zu den Feinden gehen. Im Schwein hier können
wir also einen Schaden anrichten. Klicken wir also auf
die Standardwerte der Klassen, gehen Sie zu Tierinformationen. Und so richten diese Schäden beispielsweise die Schweine 15 Schaden an. Oder vielleicht
sagen wir vielleicht 20 Schaden
für die Schweine und
hier für die Schnecken. Wenn wir zu den
Klasseneinstellungen für die Schnecken zurückkehren, tun sie das
vielleicht,
sagen wir, dass sie zehn Schaden anrichten. Lassen Sie uns kompilieren und speichern. Okay, jetzt
machen sie zehn beschädigt, das Schwein verursacht 20 Schaden, also verdoppeln Sie den Schaden. Und hier können wir
die Tierinformationen nehmen, sie
aufbrechen und den hier hinzugefügten Schaden nehmen
. Und jetzt ist es dynamisch. Was auch immer Feind es ist, sie werden
ihren Schaden anrichten. Okay, was ist der Controller , der
für diesen Schaden verantwortlich ist? Wir befinden uns also in
der feindlichen Basis, also brauchen wir nur den
Controller dieses Feindes. Auch hier können Sie ziehen und
sagen, Gets Controller. Und das ist es für die Schadensartliste ändert
sich hier in den Schadentyp. Und das sind alles,
was wir hier brauchen. Jetzt richten wir diesem Spieler tatsächlich
Schaden zu. Jetzt, später, werden wir einen Gott-Modus
hinzufügen, damit der Spieler zehnmal pro
Sekunde nicht beschädigt
wird , weil dies
im Wesentlichen das ist , was
gerade passiert. Der Spieler wird
zehnmal pro Sekunde beschädigt. Aber wir werden später den
Gott-Modus hinzufügen. Es gibt also eine
Zeitspanne , in der der Spieler nicht beschädigt
wird. Aber im Moment war das
alles, was wir tun mussten. Und lasst uns
zur nächsten Lektion übergehen.
77. Spieler:innen erhalten Schäden: Okay, jetzt
müssen wir den Spieler codieren, der den Schaden
vom Feind
erhält. Gehen wir nun zurück
zur Spielerbasis und gehen wir zum Event Graph. Ich ziehe
das Ereignisdiagramm tatsächlich hier rüber und klicke mit der rechten Maustaste und sage Tabs
schließen nach rechts. Das haben wir also nur jetzt geöffnet. Jetzt haben wir nur
den Angriff erledigt, und jetzt müssen wir tatsächlich irgendeinen
Schaden anrichten. Lasst uns mit der rechten Maustaste klicken
und Schaden anrichten. Jetzt haben wir diese Veranstaltung. So wie beim Feind Hier müssen wir
bei jedem Schaden die Gesundheit des Spielers
subtrahieren. Und ich bin mir eigentlich nicht sicher, ob wir das gemacht haben.
Ich weiß es nicht mehr. Gehen wir also zur
Struktur und anstelle von Spielerinformationen, und das haben wir nicht. In den Spielerinformationen müssen
Sie also eine neue
Variable namens Health hinzufügen. Diesen kannst du nehmen, du kannst es zu
einem Schwimmer machen, bewege es nach oben. Ich verschiebe es nach oben. Speichern Sie hier und die
Spielerbasis, die Sie für die Spieler
kompilieren und speichern
müssen. Ich klicke einfach hier, sie haben alle die gleiche Gesundheit. Also setze ich einfach einen
Standardwert für alle ein. Zum Beispiel, für die Gesundheit, machen
wir einfach so etwas wie 70. Ich weiß nicht, es ist
nur eine Zufallszahl. Also nur 70.
Kompilieren und speichern wir jetzt. Und für die geteilten Informationen können
wir es jetzt nehmen
und wieder brechen. Und was wir tun wollen, ich werde einfach alles
verstecken und einfach die Gesundheit zeigen. Das ist das einzige, woran ich gerade
interessiert bin. Also nehme ich die Gesundheit
des Spielers, subtrahiere, subtrahiere und subtrahiere
den Schaden davon. Zum Beispiel
wird diese Schnecke zehn Schaden anrichten. Also wird es hier sagen,
worauf wir es eingestellt haben. Also 17 minus zehn
werden hier 60 sein. Das ist also die neue
Gesundheit, genau wie zuvor müssen
wir hier die
Gesundheit einstellen. also aus dieser Struktur ziehen, müssen
wir Set schreiben und Set-Mitglieder
auswählen. Was wir
innerhalb dieser Struktur aktualisieren möchten, müssen
wir die
Gesundheitsvariablen aktualisieren. Ich wähle es hier
rechts aus, lege es hier hin. Das ist also der neue Wert. Und genau wie zuvor, bevor ich das noch einmal mache, klammern
wir diesen Wert,
damit er nie unter 0 fällt. wir mit der rechten Maustaste und sagen klettern“ und wählen Sie diese
aus, die als Klemm Der Mindestwert ist also 0. Lassen Sie mich eigentlich einfach mit
dem Wert hier oben verbinden. Der Mindestwert ist 0. Und der Höchstwert. Jetzt kannst du nicht einfach hier
reingehen und das
verbinden, denn im
Moment wird es tatsächlich so sein. Was Sie also für
dieses Maximum tun können, können
Sie wieder von dieser
Gesundheit ziehen und hier verbinden. Das ist also die maximale Gesundheit. Dann kannst du
es
hier verbinden und diese einfach verbinden. Ich ziehe das nach unten,
lass es mich ein bisschen
vorwärts bewegen und das so nach unten ziehen
. Es wird also den Wert festklemmen und Ihr Bestes geben, um
ihn so sauber wie möglich zu machen. Manchmal ist es eigentlich ein bisschen
schwierig und so etwas. Okay? Also so etwas. Wir klemmen den Wert jetzt fest
und stellen sicher, dass er
nicht unter 0 fällt. Und du musst wieder hier in der äußeren Struktur
einstellen, du musst
diese Player-Info-Struktur
erneut einstellen und replizieren. So kann der Client es auch sehen nur um sicher zu sein, dass
Informationen nicht abhören. Und jetzt
erhält der Spieler diesen Schaden. Sie können es also wieder auf den Bildschirm
drucken, da wir derzeit keine Benutzeroberfläche
haben, das werden
wir später tun. Aber Sie können diese Struktur durchbrechen und die Gesundheit
hier hinzufügen , damit wir
diese neue Gesundheit zeigen können. Sie können es auf den Bildschirm drucken und sehen, ob es funktioniert. Also
spiele ich diesen Spieler, ich gehe
in den Feind. Du kannst sehen, dass es mir schadet und es wird
mir zehnmal pro Sekunde schaden. Denken Sie daran, dass wir diesen
Timer auf dem Feind haben der
sagt, Schaden
von 0,1 Sekunden anzuwenden. Also zehnmal pro Sekunde. Sie können sehen, dass es
niemals unter 0 fällt, also ist das richtig. Es hört immer auf, wenn
ich nicht mehr kollidiere. Aber Sie können sehen, dass wir hier
vielleicht ein kleines Problem haben denn wenn es
mit meiner Angriffskollision kollidiert, es mir tatsächlich
Schaden zu. Und das will ich nicht machen. Ich möchte nur meinem Charakter
Schaden zufügen, also müssen wir das beheben. Okay, also habe ich mit
den Kollisionen herumgespielt und nur um dir ein bisschen Zeit zu
sparen. Also hier in der Spielerbasis, in der Kapsel habe versucht,
deine Kollisionen zu meinen zu machen. Also um
es ein bisschen zu erklären damit wir es auch verstehen können. Wir erzeugen also
Überlappungsereignisse. Hier. Das einzige, was
diese Kapsel vier ist, also ist das die Kapsel des Spielers. Wir möchten dem Spieler nur
Schaden zufügen. Und denken Sie daran, wenn Sie
zum Feind gehen und auf
dieses Kollisionsfeld klicken, ist
dies die Box, die uns Schaden zufügen muss
. Sie können dieses Feld auch sehen,
wenn Sie darauf klicken und auf „Im Spiel ausblenden“ klicken und diese
entfernen, damit Sie es im Spiel sehen
können. Wenn Sie also auf Jetzt spielen klicken, können
Sie die Box
um den Feind herum sehen, und dies ist die Box, die uns Schaden zufügen wird
. Also diese Box hier,
denken Sie daran, diese Box, wenn Sie zur Kollision gehen, ist
es eine Weltdynamik. Dies ist also das
Wichtigste mit dem
wir uns überschneiden müssen. Es ist nicht ****, also ist
die Kapsel ****. Aber diese ist eine
Weltdynamik. Wenn wir also zu einer Spielerbasis gehen, müssen
wir die Welt blockieren. Dynamisch. Blockieren, was bedeutet, dass ich
gerne damit interagieren möchte. Das heißt nicht, es
bedeutet nicht, dass wir das ignorieren, diese Ignorierung über
einen Block ignorieren, wenn ich
tatsächlich ein Ereignis daraus machen möchte . Also werden wir
die Weltdynamik blockieren,
was bedeutet, dass
wir mit ihr interagieren werden,
sowie mit der Welt statisch, weil die Statik ist, sind diese Kacheln auf dem Boden
und wenn Sie das entfernen, du wirst
durch den Boden fallen. Alles andere können wir tatsächlich
ignorieren, so ablenkbar, also haben wir keine Fahrzeuge, Physikkörper, andere Gedichte. Wir müssen gerade nicht wirklich
mit anderen Pons interagieren . Ich glaube verrückt. Weil der Schaden tatsächlich von dieser Weltdynamik
kommt. Nicht wirklich die Feindkapsel. Es war dann die Feindkapsel, richtig, wir müssen den Teich
nicht ignorieren. Aber im Moment kommt es
von dieser Kollision, die eine Weltdynamik ist. Deshalb
ignoriere ich alles und behalte diese beiden
nur an. Für diesen Hellen erzeugen
wir
keine Überlappungsereignisse. Lassen Sie uns das also überspringen.
Für den Angriff. Es ist eine Weltdynamik und wir ignorieren alles,
denn das einzige, was wir mit dieser Angriffsbox benutzen,
ist, dem Feind Schaden zuzufügen. Und wir wollen
Schaden anrichten, wenn diese Box hier
mit dieser kleinen Kollision interagiert. Und denken Sie noch einmal daran, dies
ist eine Weltdynamik. Wir wollen also
interagieren, als ob wir uns mit der Weltdynamik
überschneiden, Schaden anrichten wollen
, der hier der Feind ist. Der Feind ist Kollision. Das ergibt also Sinn.
Gehen wir jetzt zum Feind. Also die Feindkapsel, wir blockieren alles, aber wir überschneiden uns
mit den Pons und dem Kunden, die Schichten sind. Und lass uns zur Kollision gehen. Hier. Es ist alles dynamisch. Wir ignorieren tatsächlich
alles außer ****. Denn die Art und Weise, wie der Feind **** den Schaden anrichtet, besteht darin, in den Spieler zu
gehen. Und es läuft eigentlich nicht
in diese Angriffsbox hier. Es läuft in unsere Kapsel
und unsere Kapsel ist dran. Und deshalb muss ich mich
hier im Feind mit der Kollisionsreaktion des Bauerns
überschneiden. also sehr wichtig, einen
Blick auf alle
Kollisionen zu werfen. Welcher Objekttyp sind sie? Wenn es ein Bauer war
, musste ich hier reingehen
und mich mit dem Bauern überlappen. Und wenn es so war, sagen
wir mal, es war Cholin Spieler und ich
wollte Schaden anrichten,
dann musste ich weitermachen und mich mit dem Kletterspieler
überlappen. Ich habe versucht, sich das anzusehen, versuchte herumzuspielen und zu sehen, wie es funktioniert. Also
lasst uns alles retten. Jetzt. Klicken wir auf Play. Lass uns diesen Spieler spielen. Wenn du hier
mit meiner Box interagierst, erhalte
ich keinen Schaden. Das ist gut für dich. Interagiere mit mir. Ich erhalte
Schaden, weil es hier mit
meiner Kapsel
interagiert. Und hier. Wenn ich jetzt sehen kann, ob ich nur zu meinem
Angriff, Angriffskollision
zurückkehre , verursacht
es keinen Schaden, es sei denn, er kommt
tatsächlich in mich hinein. Das funktioniert also wie beabsichtigt. Jetzt funktioniert dieser Code für
den Spieler, der den
Schaden erhält, ebenfalls. Also lasst uns das vorerst
löschen. Jetzt, da wir das getan haben, wollen
wir nicht wirklich ständig Schaden
anrichten. Lasst uns also in der nächsten Lektion
eine Art Gott-Modus erstellen .
78. Player: Okay, also lasst uns einen
Gott-Modus für den Spieler hinzufügen. Lasst uns jetzt in die Spielerbasis gehen. Lasst uns eine neue Variable
namens Gott-Modus erstellen. Sei also Gott-Modus, und es ist nur ein Boolean
, den wir hier benutzen können. Wir haben diesen booleschen Gott-Modus
genannt, und wir wollen diesen Gott-Modus einstellen wenn wir hier
Schaden erleiden. Kurz bevor ich das alles tatsächlich
berechne, wollte ich nur
meinen variablen Gott-Modus nehmen und
ich möchte ihn auf wahr setzen, weil wir uns jetzt im Gott-Modus befinden. Wir wollen nicht einfach so
beschädigt werden. Und denken Sie daran,
dies auch an den Kunden zu replizieren. So kannst du sehen, dass du dich innerhalb
des Gott-Modus-Zustands befindest. Für den Gott-Modus müssen
wir ihn also auf „true“ setzen, aber wir
müssen ihn irgendwann auf false setzen. Und du musst eine
Art Dauer angeben. Lassen Sie uns also tatsächlich
eine neue Variable namens Guard Mode Time erstellen. Und lassen Sie es uns in einen Schwimmer umwandeln. Lassen Sie uns kompilieren und speichern. Für den Reiseführer, China-Zeit. Ich setze es
auf 1,5 Sekunden, damit der Feind mich
die nächsten 1,5 Sekunden nicht beschädigen kann. Ich nehme das an
und sage Verzögerung wie folgt. Und ich werde
nur eine Verzögerung festlegen nachdem ich meine Gesundheit berechnet habe. Und dann stelle ich hier meinen Gott-Modus auf falsch ein. Okay, jetzt sitzen wir also
auf wahr, wenn wir
Schaden bekommen und nach 1,5 Sekunden setzen
wir ihn auf „false“. Okay, also gehen wir jetzt
zurück zum Feind. Und hier muss man tatsächlich danach als Boolean
suchen. Weil wir jetzt nur zehnmal pro Sekunde
Schaden anrichten . Aber stattdessen gehst du hierher. Du machst ein, bekommst
überlappende Schauspieler und du gewinnst
alle Spieler. Jetzt musst
du für jeden dieser Spieler prüfen, ob sich der
Spieler im Gott-Modus befindet. Nehmen Sie dies also und
sagen, müssen Sie zunächst
angeben, dass Sie mit diesem
Spieler, Spielerbasis,
kommunizieren. Wir müssen also sagen, Get Layer REF, die wir schon vor langer Zeit
gemacht haben. Verbinden wir es
als lass mich das vorerst
trennen, damit
wir sehen können, was wir tun. Jetzt nehmen wir
das und sagen Gott Modus. Also bekommen wir diese
Godmodus-Variable. Und nur wenn der
Gott-Modus nicht stimmt, können
wir Schaden anrichten. Also können wir „Nüsse“ sagen, Boolean. Wenn also der Gott-Modus falsch ist, wenn wir uns nicht im Gott-Modus befinden, machen
wir einen Zweig. Wenn wir uns nicht im Gott-Modus befinden, können
wir so Schaden
anrichten. Wenn wir uns jedoch im Gott-Modus befinden, wenden Sie
keinen Schaden an,
tun Sie nichts. Dies ist also der
ganze Gott-Modus-Code. Also nochmal, sehr mächtig, Booleans wie diese zu
benutzen. Und ja, also müssen wir das
jetzt noch einmal verbinden. Wer ist der beschädigte Schauspieler? Kann es einfach
von diesem Spieler hierher ziehen. Von hier aus musst du
es nicht machen. Du kannst es einfach von hier aus machen. Das ist jetzt etwas sauberer. Jetzt versuchen wir es tatsächlich
zu testen und zu sehen. Und ich glaube, wir haben unsere Druckzeichenfolge
gelöscht. Und lassen Sie mich, lassen Sie mich eigentlich, wir können hier einfach eine Zeichenfolge ausdrucken. Also drucke String aus und
lass es uns hier ausdrucken. Eigentlich. Lasst es uns zuerst brechen. Lasst uns die Gesundheit nehmen
und ausdrucken. Also kurz vor der Verzögerung werde
ich einfach ausdrucken. Und dann nehme ich diese Verzögerung, gehe zurück zu dieser Druckzeichenfolge gehe hier zu dieser Verzögerung zurück. Also werde ich
diesen Wert einfach ausdrucken, bevor ich verzögere. Mal sehen, was es macht. Also lasst uns auf Play klicken. Ich gehe in den Feind, ich bekomme Schaden an 60. Und erst nach 1,5 Sekunden
nach dem Gartenmodus werde
ich wieder angegriffen. Dieser Code funktioniert jetzt. Großartig. Löschen wir
das und verbinden es wieder. Okay, jetzt haben wir die Godmodus-Funktionalität zum Spiel
hinzugefügt.
79. Player VFX: Jetzt müssen wir
einen Blinkeffekt
hinzufügen wenn der Spieler getroffen wird. Also hier drüben in der Spielerbasis sind
wir wieder hier drin, wir müssen
einen beschädigten Effekt für
den Blinkeffekt machen. Also lasst uns hierher gehen und neue Events
machen. Jetzt müssen wir es in
unser Blueprint-Interface schaffen, aber ich bin mir nicht sicher, mit welchen Variablen ich gerade arbeiten muss. Lassen Sie uns es also einfach
als benutzerdefinierte Variable
oder benutzerdefinierte Ereignisse erstellen und wir können dies später
einfach in ein
Blueprint-Interface verwandeln. Ich nenne es Schaden VFX, was visuelle Effekte bedeutet. Und ich bin genau wie
bei diesem Video, wir werden
den Spieler nur zum Blinken bringen, wenn du Schaden
vom Feind bekommst. Und natürlich müssen wir dies wieder über
den Server
laufen, um
sicherzustellen , dass der Client das tut,
was er darf. Ich werde es
zuverlässig
durch den Server laufen und ich rufe den Server hier oben auf ,
der beschädigte VFX
genannt wird. Okay, und hier unten, jetzt, dieser Schadenseffekt,
bisher haben wir Variablen für die Rep Notify
verwendet. Aber ich werde mich
hier für den Sprung erinnern. Wenn ich also zum Sprung hochgehe, haben wir einen Multicast benutzt. Und wenn du dich nicht erinnerst, haben wir
das
schon lange benutzt. Ein Multicast macht
dasselbe wie ein Vertreter benachrichtigt. Zeigen Sie also all diese
Informationen dem Kunden an. Der Multicast
kostet diese Informationen jedoch nur für bereits verbundene Spieler oder
Spieler , die in Ihrer Nähe stehen. Es ist also der Spieler, der
sehr weit von
dir entfernt steht , wird nicht sehen, was
der Multicast macht. Dies ist in Ordnung, um einen
Schaden-Effekt zu verwenden, da Sie nur zwei Sekunden lang blinken oder wo auch immer, wie lang es ist. Und dann wird dieser
Blinkeffekt verschwinden. Es spielt also keine Rolle für die Spieler, die
zehn Kilometer von dir entfernt sind zehn Kilometer von dir entfernt oder für Spieler, die noch
nicht verbunden sind. Es ist in Ordnung, dass sie diese Änderung nicht
sehen, weil es nur ein Blinkeffekt und Sie wieder normal werden. Lassen Sie uns also
ein benutzerdefiniertes Ereignis erstellen und Multicastschaden VFX
nennen. Und lassen Sie uns das
auf dem Server ausführen. Zuverlässig, aktuell,
nicht auf dem Server. Lass es uns auf Multicast ausführen. Zuverlässig. Und den Multicast wir werden es
durch den Server laufen lassen. Denken Sie noch einmal daran, ein Multicast, Sie ihn nirgendwo
anders ausführen können , außer vom Server. Nennen wir es also hier
MC beschädigte V-Effekte. Du kannst nicht, du kannst das nicht hier oben
nennen. Dies funktioniert nicht, da
dies nicht der Server ist. Dies ist sowohl der
Server als auch der Client. Also gehe hier runter und lege den Multicast
hier unten , der durch den Server läuft. Jetzt wird der Multicast
das tun , diesen Blinkeffekt. Also für den
Blinkeffekt sehr, sehr einfach. Fangen wir an, damit zu arbeiten. Nehmen wir dieses Sprite. Und wenn es will
ist hier auf dem Sprite, wollen
wir diese Farbe ändern. Wenn Sie auf die
Farbe für das Sprite klicken, möchten
Sie dieses Alpha ändern, wodurch Ihr
Charakter durchsichtig ist. Wenn ich hier kündige, klicke ich
auf einen meiner Charaktere. Wenn ich also auf Tsarina klicke
und in die Ansichtsfenster gehe , klicke ich
hier auf sie und klicke auf die Sprite-Farbe. Und dann nehme ich die Lautstärke ab. Du kannst hier sehen, dass der Spieler eigentlich
nicht die Lautstärke bekommt, das Alpha, tut mir leid, mein schlechtes. Das Alphabet hier kann man sehen, dass
der Spieler unsichtbar wird. Das Problem ist gerade, dass
der Spieler von vollständig sichtbar zu
völlig unsichtbar wird. Es gibt also kein dazwischen
und das brauchen wir. Und das, was es
verursacht, ist wegen dieses Materials maskiert, unbeleuchtet, ein Sprite-Material. Wir müssen das tatsächlich ändern. Versuchen wir es auch hier zu
ändern. Also kann ich dir zeigen,
wenn du darauf
klickst, du siehst nichts. Und das liegt daran, dass Sie hier
auf diese Einstellungen klicken müssen. Und dann müssen Sie
auf Entwicklerinhalte anzeigen klicken, Engine-Inhalte
anzeigen
und Anmeldeinhalte anzeigen. Wenn Sie also auf
Zeigen der drei klicken, sehen
Sie, wie diese
Ordner angezeigt werden. Wir
müssen sie nicht wirklich benutzen. Aber wenn du jetzt nach
Serena gehst und hier
färbst, kannst du jetzt sehen, dass du
viel mehr Materialien sehen kannst , wenn
du Recht hast, unbeleuchtet. Weil wir
mit Pixel-Los arbeiten, interessieren
wir uns nur für unlit. Verwenden Sie dieses sogenannte
Transluzenz oder durchscheinendes unbeleuchtetes
Sprite-Material anstelle von Masken. Ich wähle das aus. Sie können jetzt
sehen, wenn ich auf diese helle Farbe klicke und
mein Alpha abnehme, wird
es einen
Zwischenwert geben, sodass er nicht direkt
unsichtbar ist. Es gibt tatsächlich ein
Zwischen-Level hier, und wir können diesen
Blinkeffekt so auf und ab bewegen, der Spieler wird beschädigt. Okay, lassen Sie es uns
wieder auf eins setzen und lassen
Sie mich auf diesen Pfeil klicken, um zur Standardeinstellung
zurückzukehren. Ich möchte nur zu
meiner Maske zurückkehren, weil dies die Standardmaske
ist. Wir werden
das durch Code ändern. Also geh zurück zu meinem Spieler hier. Also müssen wir zuerst das Material
ändern. Gehen Sie also hierher,
sehen Sie sich festgelegtes Material an und wählen Sie es hier aus. Jetzt. Geben Sie an, welches Material es ist. Jetzt wollen wir es nicht noch einmal direkt hier
ändern. Denken Sie daran, wir sind
im Multicast und ich mag
es oder nicht, dass
ich alle meine Variablen
zum sehr grundlegenden Ereignis hier bringen muss. Also dieses Material, du kannst es
ziehen und hier ablegen. Sie können
es weiterhin zu Ihren Events hinzufügen. Und das ist das Hauptereignis
, das es ausführen wird, das hier drüben ist. Denn wann immer
Sie hier Schaden erleiden, werden
wir
unseren Schaden als Auswirkungen bezeichnen. Und du wirst es hier laufen lassen. Und hier
wählen Sie das Material aus. Und wir möchten die
Transluzenz auswählen. Und gehen Sie unten nach unten, durchscheinendes unbeleuchtetes
Sprite-Material. Stellen Sie sicher, dass der unbeleuchtete ist. Okay, jetzt haben wir
unser Material geändert , okay, was jetzt? Jetzt wollen wir das Alpha ändern, aber wir wollen
einen Blinkeffekt erzielen. Und das geschieht
durch einen Timer. Wir können dazu
wieder einen Timer benutzen. Stellen Sie also Timer nach
Ereignissen ein. Mach einen hier. Und es wird
ein paar Mal in die Schleife gehen. Und wie lange, wie viel
Zeit wird es laufen? Und ich habe einen guten Weg gefunden, dies zu tun,
damit wir hier den
Gott-Modus übernehmen können. Denken Sie daran, dass der Gott-Modus 1,52 ist. Wenn Sie also hierher legen, wird dieser
Blinkeffekt
nur alle 1,5 Sekunden erzielt. Und ich denke, das heißt, ich
muss es viel schneller machen. Also muss ich diese Zahl teilen. Ich habe den Weg gefunden, als wäre die beste Zahl 16. Also wird es das tun
wie dividieren Sie dies durch 16, was 1,5 dividiert durch 16 bedeutet, und das ist 0,09. Es ist also, als würde man hier 0,09 schreiben. Es ist fast so, als würde man 0.1 schreiben, was zehn Mal pro Sekunde bedeutet. Okay, also wird
es hier viel blinzeln, also kannst du es so machen. Wenn Sie also
Ihren Godmodus-Timer ändern, wird er
sich entsprechend ändern. Also können wir es hier machen.
Es ist jetzt also irgendwie dynamisch. Also stelle ich stattdessen mein
Material hier ab. Anstatt es also hier oben zu machen, ziehe
ich
dieses Setmaterial. Ich fühle mich von hier getrennt. Ich lasse
es
hier oben so verbinden und ich
muss eine Veranstaltung machen. Ziehen Sie also von
hier runter und sagen Sie Schaden. Lassen Sie uns
zuerst ein benutzerdefiniertes Ereignis erstellen, Schaden wirkt sich auf Schleife aus. Und jetzt können wir unser Material
verbinden. Zuerst wollen wir, dass unser
Material durchscheinend ist. Dann wollen wir das
hell nehmen und die Farbe einstellen, die
Farbe, die auf
Sprite-Farbe eingestellt ist, heißt es hier? Und jetzt wollen wir auch
diese helle Farbe einstellen. Jetzt können wir es hier nicht wirklich noch einmal
ändern,
denken Sie daran, dass Sie es durchlaufen müssen
. Ziehen Sie also von hier aus, legen Sie es in dieses Ereignis ein. Und jetzt, anstatt
neue Farbe zu sagen, sage
ich einfach Farbe. Und noch einmal, ziehe sie durch diese Ereignisse, bis sie hier oben
landen, wo
du es ändern kannst. Okay, also für die Farbe klicke
ich einfach hier. Und ich werde das Alpha
ändern. Daran
interessiere ich mich bis 0.5. Es ist also die Hälfte des Durchsichts. Unser Spielercharakter
wird also halb durchsichtig sein. Okay, also ändern wir die
Farbe und das Material. Jetzt ist der Spieler also
halb durchsichtig und dann wollen
wir ihn verzögern. Also setze ich einen
Delay-Knoten und möchte löschen. Lassen Sie mich diesen
Godmodus-Timer noch einmal nehmen. Ich wollte es verzögern, sagen
wir mal wieder geteilt
durch 16 hier. Und eigentlich
möchte ich es durch 16 teilen. Die können nicht dasselbe sein. Ich möchte das durch acht teilen. Es ist genau wie hier zu schreiben. Zum Beispiel möchten Sie dies jede Sekunde
ausführen und möchten
dies um 0,5 Sekunden verzögern. Und dann möchten Sie diesen Code
kopieren weil Sie jetzt durchsichtig sind. Aber ich möchte in meinen normalen Modus
zurückkehren, weil ich denke daran, dass wir
einen Blinkeffekt erzielen. Also gehe in meinen durchsichtigen Modus und dann gehe ich
wieder normal. Und ich will nur die Hälfte der
Zeit dessen, was da oben ist. Lasst uns das also tatsächlich auf acht
ändern. Es wird also 1,5
Jahre geteilt durch acht heißen. Und hier wegen der Verzögerung werde
ich
es viel schneller machen. So geteilt durch 16. So können Sie sich dies
durchprobieren und sehen was für Sie funktioniert, wenn Sie
möchten, dass es schneller blinkt. Offensichtlich müssen Sie diese Zahlen
erhöhen. Wenn Sie langsamer blinken möchten, müssen
Sie
diese Zahlen reduzieren. Also werden wir es hier um 16
oder Gott-Modus-Zeit geteilt durch 16
verzögern . Und dann werden wir
die Materialien auf das einstellen , was
sie vorher waren. Ich
kopiere einfach das Einfügen und jetzt können wir das
Material einfach hier einstellen. Wir müssen
all diese Dinge nicht durchmachen , glaube
ich nicht. Also lasst uns das einfach versuchen. Wenn Sie also einfach unbeleuchtet schreiben, haben
Sie genau wie
diesen namens Maskiert auf Let's helles Material. Dies ist der Standardwert. Und die neue Farbe. Hier in Rot ist eins, grün, eins, blau. Dies bedeutet, dass es eine weiße Farbe und das Alpha auch eins ist. Also jeder, alles
hier ist eins. Und lass mich kompilieren und speichern. Also lasst uns jetzt prüfen, ob wir
alles haben und
nichts bekommen. Also lasst es uns versuchen. Versuchen wir das Spiel zu spielen. Und wenn ich in den Feind gehe,
siehst du, dass ich tatsächlich diesen Blinkeffekt habe. Es gibt einen kleinen Fehler. Ich werde tatsächlich dunkel. Ich gehe nicht wie
meine eigenen Farben, also klicke ich hier. Und das liegt daran, dass
das hier nicht weiß ist. Also 111, jetzt ist es weiß,
denn wenn es hier nicht weiß, sexuell dunkel ist
und wenn es dunkel ist, wird
dein Charakter dunkel und du kannst deine Pixel nicht
sehen. Also geht's 1.5110 und Alpha. Jetzt versuchen wir es noch einmal. Und Sie können jetzt sehen, dass
Sie die Pixel sehen können wenn Sie blinken,
einfach so. Okay, jetzt ist es
tatsächlich richtig. Und irgendwann wollen
wir diesen Blinkeffekt tatsächlich stoppen. Was wir also tun wollen, ist hier, wir wollen es stoppen, nachdem
die Godmodus-Zeit vorbei ist. Nach diesen 1,5 Sekunden sind
wir also nicht
mehr in unserer Bauchmoduszeit und wir wollen es stoppen. Machen wir also einen neuen
Timer dafür und
sagen wir, dass Sie einen Timer nach Ereignissen einstellen. Und dafür werde
ich einfach von diesem Ereignis
ziehen ein benutzerdefiniertes Ereignis
erstellen. Nennen wir es
Stop-Schaden, die Auswirkungen. Und das ist sehr einfach. Nach 1,5 Sekunden wird es einfach so sein. Verbinde den Gott also mehr
Zeit mit diesem Timer. Nach diesem Gott-Modus ist die
Zeit vorbei, wir werden
diesen Griff übernehmen. Lassen Sie mich also mit der rechten Maustaste hier klicken dies zu einer Variablen
fördern. Und nennen wir es Schaden
den Effekt-Handle. Und lasst uns
solche verbinden. Jetzt haben wir eine
Variable davon. Jetzt, nachdem die Zeit
im Gott-Modus vorbei ist, werden
wir diesen Timer nehmen
, der hier ist. Wir nehmen
es und sagen klare
und ungültige
Zeit oder von Händel,
was bedeutet, diesen Stub zu löschen, diesen Timer. Nachdem der Gott-Modus vorbei ist, werden
wir
diesen Code hier stoppen. Und offensichtlich
wollen wir das nicht schleifen. Das wird nur einmal laufen. Okay, also kompilieren und speichern wir. Probieren wir es also aus.
Klicken wir auf Play und lass mich auf den Feind stoßen. Ich blinzle. Und nachdem die
Patin mal vorbei ist, blinke
ich nicht mehr. Und wenn ich wieder in
den Feind gehe, blinkt
es. Ich gehe wieder zurück. Lassen Sie mich eigentlich, das ist der Kunde. Lassen Sie mich als Listened Server zum
Spiel zurückkehren. Ich möchte es als
Server und Clients spielen. Ich werde
es minimieren, nur um sicherzustellen , dass ich nichts gekauft habe. Immer schön, Dinge
im Multiplayer zu testen. So wie der Player jetzt, als Client, blinke ich und er arbeitet als Server. Ich blinzele uns an beiden zu arbeiten. Okay, also funktioniert es gut. Und wieder können Sie zum Kunden
wechseln und
sicherstellen, dass alles funktioniert. Ich schaue mir nur beide hier
an. Also Serena und Luke, wenn ich hineingehe, blinzele ich. Okay, also funktioniert es. Großartig. Jetzt funktioniert der Code. Sie können immer versuchen, dies ein wenig zu
organisieren, daher würde ich Ihnen raten, dies zu tun. Lassen Sie mich einfach diese
näher zusammen. Aber diesen können wir es hier
hochziehen , also ist es
nicht allzu verwirrend. Und mit diesem
Sprite, schnell hier, kann es darum gehen, Knoten
wie hier umzuleiten. Sie können einen
Umleitungsknoten wie diesen erstellen. Und dafür kannst du auch eine umgeschriebene Notiz
machen. So etwas hier. Es sieht also ein bisschen
organisierter aus. Diesen kann ich eigentlich
einfach hier runterziehen. Und dieses Sprite können Sie auch eine Umleitungsnotiz
machen. Also immer schön organisiert zu
bleiben. Das kann ich nicht genug sagen,
weil
Ihr Projekt irgendwann sehr
groß sein wird und das
sehr schwer zu lesen sein wird. Also so etwas. Jetzt hast du das alles
fertig. Okay, jetzt ist das
der Schaden-Effekt. Und jetzt können Sie für diesen Schadenseffekt jetzt für
die Schaden-V-Effekte ihn in
ein Blueprint-Interface-Ereignis verwandeln . Aber lassen Sie uns damit in
der nächsten Lektion
warten , denn wir
werden einen Impuls hinzufügen. Lasst uns also zur
nächsten Lektion übergehen.
80. Player: Okay, also als letztes
für den Schaden, denke
ich, dass wir dem Schaden einen
Impuls hinzufügen müssen. Wenn der Spieler den Feind
trifft, wenn ich in den Feind gehe, ,
anstatt nur zu blinzeln möchte
ich auch meinen Charakter
drängen,
anstatt nur zu blinzeln, also gibt es diesen Impuls. Also lasst uns das machen. Du machst das, indem du
die
Charakterbewegung nimmst und du sagst „ Impuls
setzen“ und eigentlich
keinen Impuls setzen. Lass mich einfach suchen,
ich denke, es heißt hier Add Impulse, Add Impuls. Und du willst
diesen Impuls hier hinzufügen. Also lass mich das zurückziehen
und den Impuls hier hinzufügen. Genau so. Nun, für diese Anzeige, für diesen Impuls, müssen
wir
sie wieder durch diese,
diese Ereignisse hier ziehen ,
genau wie zuvor. Und jetzt kannst du den Impuls einstellen. Jetzt müssen Sie
daran denken,
diese Geschwindigkeitsänderung hier zu überprüfen . Und lasst uns kompilieren und speichern. Und jetzt haben wir jetzt
einen Impuls hinzugefügt, aber diesen Impuls können
Sie es ausprobieren. Zum Beispiel schreibe ich 500 im Z und du kannst
sehen, was passiert. Du kannst versuchen, auf Play zu klicken, immer schön, es zu testen. Also was auch immer du
tust, versuch es. Du siehst jetzt, wenn
ich den Feind treffe, werde
ich
im Z um 500 nach oben gedrängt. So füge ich Impuls hinzu. Okay? Jetzt können wir hier etwas
Spaß machen für den Impuls. Jetzt verwende ich die gleiche Methode wie
die, die
ich zuvor benutzt habe. Also lass mich sehen, wo ich diese Methode
tatsächlich benutzt habe. Es könnte die feindliche Basis sein. Hier drüben. Eigentlich haben
wir überprüft, wo der Feind
im Vergleich zum Spieler steht. Und wir bewegen diesen Feind. Ich möchte eigentlich das Gleiche
machen. Für den Spieler möchte
ich meinen
Spieler also rückwärts schieben, wenn
du auf diese Weise kommst . Wenn ich auf diese Weise komme, möchte
ich meinen Spieler auf diese Weise
rückwärts schieben. Je nachdem, auf welcher
Seite des Feindes du den Feind
oder den Feind triffst, der dich trifft. Du willst
rückwärts auf diese Seite geschoben werden. Genau wie die UN-Basis werden
wir dieselbe
Methode verwenden. Also gehe ich hier zurück
zu meiner Spielerbasis. Und so wie wir das tun können ist, dass ich das ein bisschen nach unten
bewegen werde, also habe ich hier mehr Platz. Ich bekomme jetzt den Standort
des Spielers. Also hol dir den tatsächlichen Standort. Denken Sie daran, dass wir gerade im
Spieler sind. Holen Sie sich also den tatsächlichen Standort mit einer Selbstreferenz
und den Zielen. Ich werde
es brechen, weil wir uns nur für den x-Wert interessieren, weil der x-Wert hier
ist. waren wir nur interessiert. Jetzt brauche ich den Standort für meinen, für meinen Feind und wir
können ihn von hier aus bekommen. Also haben wir das bisher nicht gemacht. Also können wir es von
hier aus angezettelt tun,
denken Sie daran, dass wir vom
Feind Schaden
erhalten , damit wir den
Controller für den Feind bekommen können. Also kann ich mit der rechten Maustaste hier klicken, dies auf einen Controller oder eine
Variable
bewerben und ihn
feindlichen Controller nennen. Verbinden wir es jetzt. Und ich kann hier klicken und es
replizieren, nur um sicherzustellen, dass die
Clients
den Wert dieser Variablen sehen können . Und jetzt haben wir den
feindlichen Controller. Also können wir diesen
Controller nehmen und C wird kontrolliert ****. Jetzt haben wir den
Bauern des Feindes. Und wir können sagen, hol dir
Schauspielerstandort. Jetzt haben wir den
Standort des Feindes. Und ich möchte
es noch einmal brechen, weil ich mich nur für die X-Achse interessiere. Jetzt
frage ich mich hier, ist das x für den Spieler? Ist es weniger als das, was
es für den Feind ist? Nun, das heißt wieder, wenn meine Feinde hier stehen, und wenn mein Spieler hier
steht, frage
ich
die Spieler im Grunde nur um den x-Wert
niedriger als die Feinde. Und in diesem Fall ist es
falsch, weil mein Charakter, wenn ich es tatsächlich treffen kann und das
nicht treffen kann, jetzt
kann ich es hier nicht treffen. Also lass es mich hier finden. Serena angeführt. So. Jetzt wird der Spieler gerade falsch sein, weil die Feinde x tatsächlich
niedriger ist als mein Spieler. Hier im Spieler, fragen wir
gerade, ist mein Spieler niedriger
als mein Feind? Was ist falsch? Also lasst uns noch einmal
von dem Impuls her ,
bevor wir irgendetwas tun, lasst uns von hier aus fahren
und sagen „Vektor machen“. Genau wie zuvor. Anstatt unseren Code
einzufügen, können wir einfach
diesen Select-Float verwenden, wenn wir zu dem gegnerischen Base
von Kamm zurückkehren ,
der unserem Code gegenübersteht . Ziehen Sie also von hier und
sagen Sie Lasten auswählen. Was Sie jetzt tun können ist hier und die
Schnittstelle, die Sie hier sehen, wir haben das Plus hier gemacht,
weil wir
den Standort und was auch immer
wir umziehen wollten . In diesem Fall wenden Sie
nur eine Kraft an, als würden Sie nur einen
Impuls anwenden, zum Beispiel 500. Wir kümmern uns also wirklich nicht
um die Werte für
X und Y und Z. Wir wollen nur, dass es statisch ist. Also hier für das Z, fügen
wir einfach
etwas wie 300 hinzu. Also haben wir einen
Impuls von 300 nach oben gewonnen. Für das x werden wir das
nicht wirklich nehmen und dazu sagen
und so weiter. Weil dieser nur
der ästhetische Impuls ist, zum Beispiel etwa 300. Es ist entweder
300 oder minus 300, 300 oder minus 300 je nachdem, aus welcher
Richtung ich komme. Jetzt müssen wir feststellen, dass
ich es hier verbinden werde. Wir müssen bestimmen
, welche Richtung welche ist. Sagen wir also hier,
ich stehe hier. Mal sehen, Lasst uns als Spieler
hier stehen. Ich frage jetzt, ist mein x-Wert
niedriger als die Feinde? Ich werfe einen Blick
auf diesen Spieler. Du siehst, dass es 615 ist. Klicken Sie auf diesen Feind ist 710. Also im Moment, ja, mein x für den Spieler ist
niedriger als die Feinde. In
diesem Fall
wird es also tatsächlich wahr sein , wenn man
reinkommt. Also stimmt es jetzt. Also gehe ich
hier zum Feind. Ich möchte eigentlich rückwärts geschoben
werden. Und jetzt ist mein Rückwärts eigentlich
nur minus 300, weil ich sehen
kann, dass der Spieler
rückwärts schiebt , im Minus geht. Es wird diese Zahl senken. Also hier schreibe ich
minus 300. Und offensichtlich, wenn du
auf der anderen Seite
bist, wird es falsch
werden, was bedeutet, dass ich das jetzt hier machen muss. Falsche Bedeutung hier. Jetzt gehst du
auf den Feind zu. Du wirst
weggestoßen und
den Spieler wegschieben. Dies, diese Seite hier
wird plus 300 sagen,
was bedeutet, dass Sie hier auf diese Weise
weggedrängt werden. Es ergibt also keinen Sinn hier. Sagen wir Eins, 100. Und jetzt wird es entweder minus
300 oder 300 im Impuls
gelten . Okay? Lassen Sie uns das also einfach ein
bisschen besser
organisieren, so. Okay, jetzt haben wir diesen Code angewendet und ich glaube, wir
verpassen jetzt nichts. Klicken wir also auf Play
und sehen, was passiert. Jetzt bin ich der Spieler. Ich
gehe auf den Feind zu. Ich werde auf diese Seite
gedrängt. Das ist richtig.
Jetzt gehe ich von dieser anderen Seite
hier aus. Das ist richtig. Ich werde auf diese Seite
gedrängt. Wenn ich von dieser Seite
komme, werde ich
von dieser Seite hierher gedrängt. Jetzt werde ich jetzt in
die richtige Richtung geschoben . Okay? Jetzt können wir also machen,
manchmal kann man
lustige Dinge machen , die
man hier sehen kann. Sie können einen Impuls hinzufügen. Der Feind stößt dich weg,
während du springst. Wir haben also viel Kraft. Wenn Sie möchten, können Sie
die z-Wertkraft vielleicht auf 150 senken , mal sehen, wie das aussieht. Vielleicht ist es zu viel im z. Ich kann so etwas machen. Oder du kannst einfach, ich
denke es war witzig. Vielleicht ist es
etwa 250
statt 300 oder repariere so
etwas. Man sieht es manchmal so, als ob
man bereits eine Geschwindigkeit hat, weggeschoben werden kann. Wenn Sie möchten, können Sie
Ihre eigene Geschwindigkeit auf 0 einstellen ,
bevor Sie beschädigt werden. Dies wird das Problem beheben, aber ich denke,
das ist hier in Ordnung. Jetzt siehst du hier
das, dieses Schwein hier. Wenn ich es treffe und hier gehe, wingt es manchmal
hier draußen auf der Rampe. Und das liegt daran, dass Sie versuchen, das frühere Video anzusehen in dem wir die Schnecke repariert haben,
damit sie hier nicht gebellt hat. Wir haben es nicht wirklich für
das Schwein getan, weil das Schwein es ist, du kannst sehen, dass es jetzt Dollar ist. Und wir haben es nicht wirklich für das Schwein
repariert, nur für die Schnecke,
weil das Schwein tatsächlich hier hochläuft. Aber du kannst, genau wie zuvor, als wir es
im früheren Video repariert haben, glaube
ich an Abschnitt
eins, der Feind sein. Als wir den Feind erschaffen haben, kannst
du einfach die Kugel, die
Kollisionssphäre
vergrößern und dann den Feind
runterziehen. Und das wird das Problem beheben. Okay, jetzt haben wir
diesen Push-Effekt. Ich blinkende Wirkung, wenn
wir beschädigt werden. Jetzt sind wir bereit, als
hätten wir den gesamten
Schadenseffekt verursacht. Lassen Sie mich das einfach hier organisieren. Lass mich das hier rüberziehen. Jetzt, da wir
all das fertig haben, können
wir tatsächlich anfangen,
am Tod der Spieler zu arbeiten. Und danach glaube ich, dass
wir die Benutzeroberfläche machen können. Lassen Sie mich das also einfach näher ziehen, stellen Sie sicher, dass auch die feindliche
Basis organisiert ist. Und ich glaube, alles
sieht gut aus. Wenn du willst, kannst du alles
kommentieren. Und wieder können Sie all
diese Dinge hier
innerhalb von Kategorien
organisieren . Und ich denke, alles
sieht gut aus. Wir können das so runterziehen es ein
bisschen besser aussehen
lassen. Ich weiß nicht, so
etwas. Und ja, das
war's für dieses Video. Und lasst uns alles speichern und lass uns
zum nächsten übergehen.
81. Player: Lasst uns jetzt am Tod
der Spieler arbeiten. Bisher haben wir
den Hitzeeffekt gemacht und wenn
wir in den Feind gehen, bekommen
wir Treffer
und verlieren die Gesundheit. Aber wir haben bisher noch nicht
an dem Tod gearbeitet. Das haben wir bisher also. Lasst uns jetzt das Spiel beenden und
mit den Todesfällen beginnen. Also haben wir hier eine Menge
Dinge zu tun. Gehen wir also zuerst zur
Spielerbasis. Und drinnen
wollen wir ein neues individuelles Event machen. Und das sind die
Schaden-V-Effekte. Ich werde es tatsächlich
auskommentieren damit wir hier nicht verwirrt werden. Und ich nenne
es einfach Schaden die Effekte. Dann haben wir den Schaden hier. Hier möchten wir programmieren. Die Hauptsache. Lassen Sie mich diesen Schadenseffekt also nach unten
verschieben. Und das ist der Angriff. Das werde ich auch kommentieren
. Fallen Sie ihn in den Sack. Okay. Also hier dafür, jeder Schaden. Lass mich mal hier nachschauen. Hier
berechnen wir also die Gesundheit und
setzen die neue Gesundheit ein. Und was wir hier tun wollen, wir möchten prüfen, ob die
Gesundheit 0 ist, weil wir das Todesereignis anrufen
wollen ,
wann immer es 0 ist. Lasst uns zuerst
das Todesereignis machen. Woraus sollte es bestehen? Also lass mich das hier runterziehen. Machen wir eine neue Veranstaltung namens und wir können
es einfach zu einer Gewohnheit machen. Eigentlich wird
es nur einen booleschen Wert enthalten, also wissen wir das bereits. Gehen wir also hier zur
Interface-Player-Basis. Und nennen wir es einfach Tod. Und wir können eine Eingabe
eines Booleschen namens B is dead hinzufügen. Der Spieler ist also tot. Und hier können wir das Ereignis
„tot“ oder „Tod“ nennen ,
nicht tot. Und was wir
tun können, ist, dass wir benutzerdefinierte Ereignisse nennen
können , die
tatsächlich das genannt werden, was ich herausgefunden habe. Also sehr cooles Zeug. Wenn Sie mit der rechten Maustaste klicken, können
Sie
anstelle von benutzerdefinierten T-Punkten schreiben, und
auf die rechten T-Punkte erhalten
Sie
diese benutzerdefinierten Ereignisse automatisch. Also sehr, sehr schnelle
Verknüpfung hier, um
die benutzerdefinierten Ereignisse zu erstellen und es
uns in
die Todesfälle des Servers zu schaffen. Gehen Sie also durch den Server und lassen Sie ihn zuverlässig auf dem
Server laufen. Und lasst uns den
vom Server hier oben laufen lassen. Und dann müssen wir dafür sorgen, dass
das Boolesche B tot ist. Und lasst es uns hier durchlaufen. Was wir hier tun können, können
wir mit der rechten Maustaste klicken und zu einer Variablen
werben. Und wir können es so nennen. Ist das, in Ordnung, also dieses, was ich tun möchte, möchte ich, wenn wir
also vom
Feind getroffen werden und wir 0 Gesundheit haben, wollen
wir unsere
Todesanimation einstellen. Und übrigens
habe ich mich
bisher im Video verändert . Ich habe dir vorher gesagt, dass wir unsere Todesanimation extrahieren
müssen. Aber mir wurde klar, dass
es besser war,
diese Todesanimation
in einem einzigen Frame zu machen . Wenn du dir das
ansiehst, hast du wahrscheinlich nur
einen Frame. Lassen Sie uns das
alles hier löschen. Und lassen Sie mich nur
diese eine Gehirntod-Animation
hier importieren diese eine Gehirntod-Animation , die Sie in
Ihren Kursmaterialien haben. Und lass mich Papiertextur
2D auftragen und ein Sprite erstellen, es S Death
nennen
und aus
diesem sogenannten Tod oder Toten ein schnelles
Flipbook erstellen. Nennen wir es einfach
Tod statt Schulden. Und die Frames pro Sekunde
werden einfach eins sein. Ich glaube nicht, dass es dafür
wichtig ist. Lass es uns schließen,
jetzt haben wir das. Ich gehe hier schnell zu Luke und Serena und
dem Blueprints Player. Ich werde diese
hier unten und die Todesanimation hinzufügen, nur um sicherzustellen, dass sie
hier hinzugefügt
haben, wenn Sie die Standardeinstellungen der vollständigen
Blueprint-Editor-Klasse öffnen . Und genau das, was wir
bisher gemacht haben. Also hier unten in den Spieler-Info. Und ich füge hier
wieder
meine Todesanimation für Serena hinzu. Okay, also haben wir das jetzt hinzugefügt, kompilieren und speichern alles. Also wollen wir
dieses Flipbook hier spielen, wann immer wir tot sind. Gehen wir also zurück zur
Spielerbasis, wann immer dies der Fall ist, also machen
wir wieder eine visuelle
Änderung und setzen ein Flipbook. Also müssen wir eine Wiederholungsbenachrichtigung
durchgehen, da dies der Server
und diese Rockbenachrichtigung ist, das einzige, was es tun wird. Nehmen wir zuerst das ist tot
und stellen sicher, dass es stimmt. Wenn es also stimmt,
wenn du tot bist, wollen
wir den Status „
eingestellte Bewegungen“
oder den Spieler, der sich
bewegt, zu Tode nennen . Okay, damit wir den Tod
rufen und nur sicherstellen, dass
wir das Set haben. also zu den
Unruhenbewegungen gehe und hier, dass wir das bisher nicht
gesagt haben, werde
ich dieses Flipbook
kopieren. Und lasst uns den Tod hier verbinden. Und wenn Sie es noch nicht bearbeitet haben, bearbeiten Sie es noch, denken Sie daran
, dies ein
Aufzählungsbewegungsstatus ist, und dies ist der, den
wir früher gemacht haben. Wenn Sie also bearbeiten möchten, wenn Sie noch nicht bearbeitet haben, können
Sie zum Bewegungsstatus der
Aufzählungen wechseln und hier den Tod hinzufügen, und er wird hier
in der Liste angezeigt. Okay, also
lassen Sie uns für die Animation hier klicken und wir haben eine Todesanimation für
die, für die Struktur. Und klicken wir darauf, damit
es erscheint. Und wir können
davon ziehen und hinzufügen. Wenn es nicht erscheint,
denken Sie daran, dass Sie hier auch einen Pfeil
haben. Sie können nach oben und unten klicken. Manchmal verstecken sie sich. Wenn Sie diese nicht benötigen, können
Sie tatsächlich auf
Nicht verbundene
Pins
ausblenden klicken und diese
etwas sauberer ausblenden. Du kannst das ein bisschen sauberer machen. Es sieht
gerade ein bisschen chaotisch aus, ungefähr so. Okay, Verbindungen, die
jetzt gespeichert wurden, haben wir das hinzugefügt. Gehen wir zurück
zum Event Graph. Wann immer der Spieler tot ist, wird er
also immer dann
unsere Todesanimation
abspielen, unsere Todesanimation
abspielen um sicherzustellen, dass
der Spieler sich nicht bewegen kann. Ich nehme
die Charakterbewegungskomponente und sage sofort die Bewegung stoppen. Ich wollte nur sicherstellen, dass sich
der Charakter nicht
bewegt, einfach so. Okay, also jetzt ist das verbunden, wir auch sicher,
dass sich der Spieler nicht bewegen kann,
wenn er tot ist. Also gehe ich zum Event Graph, gehe
ich zuerst zu meinem, dieser bewegt sich nach rechts und links und nehme das ist tot. Und wieder, genau wie vor dem
Schreiben eines NOT Boolean. Und von hier aus
klicke einfach auf diesen Pin hinzufügen, dann kannst du weitere hinzufügen. Jetzt kann das auch tatsächlich
verbunden werden. Wenn der Spieler also klettert, Wenn der Spieler also klettert, kannst du dich nicht nach links und rechts bewegen. Wenn der Spieler angreift, können Sie sich offensichtlich nicht nach links und rechts
bewegen. Und auch wenn du tot bist, kannst du dich nicht nach links
und rechts bewegen, dass wir es zu Dingen hinzufügen müssen ,
die der Spieler nicht benutzen soll. So klumpen zum Beispiel
auch hier auf und ab. Und wir können sagen und
hier und Boolean hier. Und wir können diese Angriffe hinzufügen und stattdessen hier verbinden. Also müssen wir
das ein wenig strukturieren. Jetzt wird es ein bisschen
chaotisch, aber das ist okay. Wir können es immer bald aufräumen. Lass mich Einfügen kopieren. Das ist auch tot und wir können für den Sprung bearbeiten. Also hier für den Sprung kannst du
nicht springen, wenn du tot bist. Und das Letzte
ist der Angriff. Der Angriff ist also hier unten. Du kannst nicht angreifen
, wenn du tot bist. Okay? Einfach so. Nur um sicherzustellen, dass
wir keine Bugs haben. Also erkundigen wir uns bei
Booleans genau so. Okay, also kannst du jetzt
nicht angreifen, okay, also haben wir das tot und was sollte passieren,
wenn du tot bist? Machen wir das später. Wann wollen wir diese Veranstaltung hier
aufrufen? Wir wollen es anrufen,
wenn die Gesundheit 0 ist. Also der Schaden hier, der Spieler wird beschädigt. Und wir berechnen
die Gesundheit hier neu. Jetzt haben wir die
aktualisierte Gesundheit hier. Also lasst uns das nehmen
und Pause sagen. Und jetzt haben wir diese Gesundheit. Und ich kann gleich sagen, das ist gleich 0. Was sollte passieren? Ich werde
die anderen Pins einblenden. Was also passieren sollte,
wenn sie Gesundheit 0 ist, können
wir hier einen Zweig machen. Wenn also die Gesundheit 0 ist,
wollen wir unser Todesereignis nennen. Also schreibe den Tod, nenne das Ereignis hier und
setze es auf wahr. Okay, jetzt stimmt das. Wann immer es falsch ist, wollen
wir etwas anderes tun,
was bedeutet, dass wir nicht tot sind, wir werden gerade getroffen. Also werde
ich das tatsächlich von
hier entfernen , weil wir es wahrscheinlich hier hinzufügen
müssen. Wir wollen nicht geben, wir wollen
den Gott-Modus nicht entfernen und
haben auch diese Verzögerung, bevor wir prüfen, ob der Spieler tot
ist oder nicht. Denn denken Sie daran, wenn Sie dies
tun, werden
Sie den Code verzögern. Sie berechnen also
die Gesundheit, Sie werden den Code verzögern. Und wenn du tot bist, wirst
du nach dieser Verzögerung tatsächlich sterben, was keinen Sinn ergibt,
weil du bereits tot bist, aber es gibt Verzögerungen bei deinem Tod
und es ergibt keinen Sinn. Schauen wir uns also an, klicken Sie auf Control X, um es auszuschneiden und stattdessen hier
einzufügen. Wir berechnen nur
die Gesundheit so. Und jetzt hier unten
können wir diesen Code hier machen. Wenn deine Gesundheit
nicht gleich 0 ist, werden
wir sie hier verzögern
und den Gott-Modus entfernen. Oder wenn du schon tot bist. Wenn also die Gesundheit 0
ist,
gehen wir direkt zum
Todesereignis. Und wir wollen immer noch, dass der
Gott-Modus hier wahr ist. Denn wenn du
tot bist,
wollen wir nicht , dass der Feind dich trifft. Also lasse ich
den Gott-Modus immer noch eingeschaltet. Okay, also lass uns hier unten sehen. Die Tiefe wird sich also beziehen. Lass uns das
Spiel spielen und sehen, was passiert. Also lass mich auf Play klicken. Und jetzt können wir
diesen Charakter platzieren , du
wirst beschädigt. Lassen Sie mich tatsächlich die Gesundheit meines
Charakters verringern, damit ich das testen
kann und nicht oft
getroffen werden muss. Also lass mich nachsehen, wofür
ich den Schaden angerichtet habe. Denken Sie daran, dass
Sie im Feind für die Schnecke und das Schwein für die Schnecke und das Schwein Schaden hinzugefügt haben. Und lass mich nachsehen
, was der Schaden war. Der Schaden für die Schnecke
hier in den Tierinformationen. Der Schaden betrug zehn
und
ich glaube, es waren 20 für das Schwein. Lassen Sie mich also einfach meine
Gesundheit für den Spieler angeben. Hier in den Spieler-Info. Lass es mich einfach auf 20 setzen. Also bekomme ich einen Schlag vom Schwein, aber ich bekomme zwei Treffer von der Schnecke. Klicken Sie also auf Play, damit ich das schnell testen
kann. Jetzt können wir sehen. Ich bin gestorben. Und eigentlich blinkt
mein Grab hier, wenn ich tot bin. Das gefällt mir nicht, also blinkt
es hier. Und das
gefällt mir eigentlich nicht. Also müssen wir uns umstrukturieren
, die ein bisschen getötet wurden. Denn wenn wir hier im
Schaden
beschädigt werden, ist dies eine feindliche Basis. Hier in der Spielerbasis. Wir bekommen einen Impuls und wir bekommen
diesen Blinkeffekt. Ich möchte es eigentlich machen,
wenn ich nicht tot bin. Denn wenn ich tot bin, will
ich nicht blinzeln. Ich will nicht, dass mein Grab blinkt. Also
müssen wir es tatsächlich trennen, weil mir der Impuls hier tatsächlich
gefallen hat. Ich mag den Impuls, aber
ich blinke nicht gern. Also müssen wir es trennen. Lassen Sie uns diesen Effekt also trennen. Also hier in den Schadenseffekten werde
ich ein benutzerdefiniertes Ereignis machen, und dieses wird
ein Impuls sein. Also werde ich
diese tatsächlich in Blueprint-Interfaces verwandeln . Also gehe ich hier zum
Interface und zur Spielerbasis. Machen wir jetzt einen
namens Schaden-Impuls. Und das andere hatten wir. Also lass uns zurückgehen. Der andere wird durch Effekte
beschädigt und nimmt Farbe und
Material als Eingänge an. Lassen Sie mich also eine neue machen, die
als Schaden die Effekte bezeichnet wird. Okay, also
nimmt der Impuls einen Vektor an. Also hier unten, Vector, und ich
nenne es einfach den Impuls. Und der andere, der Schaden
durch Effekte nimmt eine Farbe an. Und Sie können hier sehen, wenn
Sie auf die Farbe klicken, können
Sie sehen, um welche Art
von Variable es sich handelt. Das Material ist eine
Materialschnittstelle und dieses ist eine lineare Farbe. So können Sie zurück
zum Interface gehen und hier Material auswählen. Und es hieß das Material. Ich glaube nicht, dass es
etwas gibt , das als
Materialschnittstelle bezeichnet wird. Es war eigentlich eine
Materialschnittstelle, daher müssen wir
diese hier ausgewählte auswählen. Und die andere war hier
eine lineare Farbe, und diese ist eine lineare Farbe. Okay, also nenne
das einfach eine Farbe. Und jetzt wird es
wieder sein, ich werde das löschen, kompilieren und speichern,
wieder Buck und ich muss es vielleicht löschen. Nennen wir es stattdessen einfach
Ebenenfarbe. Und das hier, Spielermaterial. Okay, also kompilieren und speichern. Und jetzt lass uns zurückgehen
und es hier anrufen. Nennen Sie es Schaden,
die Auswirkungen hier. Und Material geht hier rein, der lineare Alarm geht
hier rein und der Impuls
wurde getrennt. Also
klicke ich auf den Server und entferne den Puls, er wird ihn von hier entfernen. Und diesen einen Multicast, ich werde
den Impuls
auch entfernen , weil wir ihn hier
nicht wollen. Ich entferne diesen Impuls von hier und
füge ihn einfach hier ein. Stattdessen. Ich werde ein neues
Ereignis machen, daran erinnere mich, dass wir gerade den Schaden-Impuls gemacht haben. Also nenne ich dieses
Schaden-Impulsereignis. Führen Sie es erneut
als Harvey-Schaden-Impuls durch den Server . Und dieser wird
hier diesen Vektor haben. Ich werde es einfach so
anschließen und
es hier anschließen, der Server-1
genannt wird. Und lasst es uns zuerst hier unten durch
den Server laufen. Und nennen wir den
Serverschaden in Umfragen. Okay, jetzt sind sie verbunden. Jetzt haben wir sie getrennt. Und lass mich
diesen Multicast wieder verbinden , bevor
ich diesen vergesse ,
eigentlich
mache ich es hier falsch. Wir müssen einen Multicast hinzufügen. Also nochmal, bei einem Multicast,
Schaden-Impuls. Und wieder brauchen wir hier unten einen
Vektor. Und lasst uns es durch
einen Multicast führen und zuverlässig. Und wir müssen den Multicast
hier über diesen Server ausführen . Also das hier. Okay, jetzt haben wir diesen Schnitt. Ich werde
ein bisschen mehr Platz schaffen. Wir haben also Platz für diese Veranstaltung. Genau so. Und jetzt mal sehen, ob uns etwas
fehlt. Und ich denke, das
sieht gut aus, bis jetzt können
wir das ein
bisschen näher bringen, es macht
keinen Sinn, es so weit können
wir das ein
bisschen näher bringen, weg zu
haben. So. Okay, jetzt haben wir den
beschädigten Impuls getrennt. Was wir hier oben tun können, wird
Ihnen einen Fehler geben, weil wir hier keinen Impuls haben
. Also lasst uns runter gehen
und einen Blick darauf werfen. Also haben wir Impuls,
Impuls, die Auswirkungen beschädigt , okay? Dieser gibt einen Fehler aus. Lass es uns löschen. Ich weiß nicht, warum es
den Impuls nicht löscht. Lasst uns also nach
Schaden suchen. Impuls. Ich möchte, dass mein Impuls hier ist. Für meinen Impuls möchte ich, dass
es hier ist. Das ist also richtig. Lasst es uns einfach anschließen. Aber ich will meine Farbe
und nicht hier sein, aber ich möchte meine Farbe spielen,
wenn ich nicht tot bin. Also will ich den
Blinkeffekt nicht. Ich möchte meinen
Blinkeffekt hier oben nicht spielen , wenn ich tot bin. Lassen Sie uns stattdessen den
Blinkeffekt hier spielen. Und es hieß hier
Schaden UV-Effekte. Und für den Schaden
über Effekte muss
man wieder ein Material auswählen, entweder hier entfernen. Klicken Sie also erneut auf Einstellungen, zeigen Sie Entwicklerinhalte an,
zeigen Sie Engine-Inhalte an und zeigen Sie Plug-In-Inhalte an. Und jetzt kannst du das Material
auswählen und es hieß Sharon, Schleuse und C sind durchscheinend und gehen runter und
finde es hier durchscheinendes, unbeleuchtetes Sprite-Material und
ändere die Spielerfarbe auf 1.5110 im Alpha. Schnell, okay, jetzt
haben wir es wie zuvor. Und wenn ich runtergehe und einen
Blick hier werfe, ist das Material auf
alles eingestellt, was
wir gesagt haben, und dann werden wir es in die Moschee
zurücksetzen, was unsere normale Farbe war. Okay, das sieht also gut aus. Jetzt lasst uns tatsächlich testen und
sehen, ob das jetzt gut ist. Also lasst uns spielen. Jetzt werden wir getroffen. Das ist nett. Ich mag es nicht dass
ich die
Blinkeffekte nicht mag, also ist das jetzt nett. Und ich werde es auch
als Server versuchen. Also Plato als Listening Server. Und nur um sicherzugehen. Okay, jetzt sind wir eine Tube und
das sieht gut aus. Das ist alles, was wir für den Tod des Spielers tun mussten
. Und im nächsten, wir
erstellen das Menü I, damit wir tatsächlich eine Benutzeroberfläche
haben
und unsere Gesundheit aktualisieren können .
82. Erstellen der Main: Entwerfen wir jetzt die
Haupt-Benutzeroberfläche für das Spiel. Bisher
haben wir keine Benutzeroberfläche im Spiel. Gehen wir also zur Benutzeroberfläche. Und hier lassen
Sie uns mit der rechten Maustaste klicken und zur
Benutzeroberfläche gehen und
einen Widget-Blueprint erstellen. Und wählen Sie dieses
Widget, Benutzer-Widget aus. Und nennen wir das eine WB gemacht. Dies ist also die Haupt-Benutzeroberfläche. Doppelklick hier drauf. Zuerst müssen wir wieder nach Canvas
suchen und wir müssen
einen Canvas hinzufügen , bevor wir hier
etwas machen.
Was ich
jetzt erstellen möchte, ist,
dass ich hier unten unsere
Health Bar erstellen möchte. Das Hauptergebnis, nach dem
wir
suchen , ist das tatsächlich hier. Es ist also immer schön zu visualisieren und zu wissen, was Sie
tun, bevor Sie es tun. Wenn ich mir das ansehe, haben
wir ein Overlay, weil wir Gesundheitsbalken
auf einem Hintergrund
haben. Das heißt, wir haben ein Overlay
und dann haben wir zwei Balken. Also die Health Bar und die Erlebnisleiste
übereinander. Und ich kann mir sagen, dies eine vertikale Box ist. Denken Sie daran, dass wir die vertikale Box verwenden und dies, weil sie vertikal ausgerichtet
sind. Und ja, versuchen wir es mit zwei. Versuchen wir hier anzufangen. Zuerst brauchen wir ein
Overlay, weil wir
einen Hintergrund mit
Gesundheitsbalken darüber brauchen . Wenn Sie also hinzugefügt haben, geht
es hier hoch, lassen Sie mich einfach, Sie können
den Ankerpunkt hier neu gestalten. Denken Sie daran, das zu tun. also beim Overlay Setzen Sie also beim Overlay den Ankerpunkt
hier unten, denn
hier wollen wir ihn. Und lass es mich vorerst einfach runterziehen , irgendwo hier unten. Also hier möchten wir zuerst
den Hintergrund hinzufügen und der
Hintergrund ist nur ein Bild. Suchen Sie also oben
auf dem Overlay nach einem Bildeditor. Klicken Sie auf dieses Bild
und lassen
Sie uns
dieses Bild ändern, um tatsächlich zu sehen, dass ich viele
seltsame Dinge bekomme , und das liegt daran, dass wir
alle diese in der
vorherigen Lektion aktiviert haben . Verstecken Sie also den Inhalt des
Plug-Ins anzeigen, blenden Sie den Inhalt der Engine anzeigen und blenden Sie Entwicklerinhalte aus Gehen wir zurück und klicken Sie auf diese Bilder, damit wir nur unsere eigenen
sehen können. Und lasst uns den
Knopf wählen, Black Square flat. Das hier. Sie können das
Ganze hier füllen, also eine Linie horizontal
und vertikal. Also füllt es das Ganze. Ich dupliziere es. Steuern Sie D zum Duplizieren, oder wir können mit der rechten Maustaste klicken und auf Duplizieren klicken und dieses Bild
auswählen. Jetzt möchte ich
dieses in Buttons
blaue quadratische Flats ändern . Und ich möchte
das y zu fünf machen,
eigentlich nur fünf, man
kann sehen, dass sich nichts geändert hat. Und das liegt daran, dass wir
diese
vertikale Ausrichtung ausgewählt haben . Ich wähle
diese obere Ausrichtung aus. Also dekoriere ich nur
meinen Hintergrund. Ich kann alle gestrichelten
Linien entfernen, indem ich hier oben klicke. Also dekoriere ich nur
ein bisschen. Ich klicke hier oben auf Control
D auf das Bild. Und ich werde
es unten ausrichten. Jetzt habe ich dieses
tolle Design. Und was wir jetzt
tun wollen, ist Glück zu haben. Wenn ich mir das schon mal ansehe. Wir brauchen jetzt eine vertikale
Box, in der wir diese beiden
Fortschrittsbalken übereinander haben. Lassen Sie mich also nach einem vertikalen Feld
suchen, fügen Sie es hier zum Overlay hinzu. Suchen wir nun
nach Fortschrittsbalken. So können
Sie den Fortschrittsbalken hier in
das vertikale Feld ziehen. Und was Sie jetzt
tun können, ist, dass Sie, jetzt können Sie sehen, nicht viel gesehen
werden kann , weil Sie es tatsächlich hinzufügen
müssen. Also im Stil für
den Fortschrittsbalken und ich
denke, für das vertikale Feld, lassen Sie es mich zuerst
hier in der Mitte ausrichten,
das sind die vertikalen Fehler
Klicken Sie auf den Fortschrittsbalken. Ich ändere
das Hintergrundbild. Lassen Sie mich es in
dieses ändern, schwarzes Quadrat, dunkel flach, also ist es ein bisschen
dunkler als diese Farbe hier. Was ich dann machen möchte,
ist, dass ich meine vertikale Box hier
ganz horizontal
ausrichten möchte. Mein Fortschrittsbalken
richtet sich also ganz aus. Und was ich will, dass du jetzt machst, ist hier nach rechts und links zu
gehen. Also hier nach rechts. Also schiebe ich es von
rechts, ich schiebe es. Es ist also nicht hier an den Rändern. Ich werde es
vielleicht mit 203030
und auch links 30 auffüllen . Und wir können versuchen hinzuzufügen Gehen wir zurück
zum Fortschrittsbalken. Gehen wir zum
Rechnungsbild und zum Festzelt-Bild. Und lasst uns
ein rotes für die Gesundheit hinzufügen. Also auch diese rote 14 Taste
, eine rote. Jetzt sieht man also,
dass es viel größer ist. Und wenn Sie
diesen Prozentsatz erhöhen, können
Sie hier sehen, dass sich dieser
Prozentsatz ausfüllt, aber er wird nicht wirklich
so gelesen, wie wir uns entscheiden. Und das liegt daran, dass
Sie aus irgendeinem Grund den Fortschrittsbalken
und die Füllfarbe und
Deckkraft heruntergehen und die Füllfarbe und müssen. Ich
habe keine Ahnung, warum es blau ist. Du schaffst es also. Wenn Sie hier einfach
111 schreiben oder diese Schieberegler einfach vergrößern
und verringern können, machen Sie es hier
einfach weiß. Und wenn es weiß ist, können
Sie sehen, dass Ihre echte Schaltflächenfarbe oder die Farbe des
Fortschrittsbalkens angezeigt wird. Das ist also der Fortschrittsbalken. Sehr cool. Und gerade jetzt stimmt es
hier auf Los aus. Also vertikale Box,
wir richten uns hier aus. Und für den Fortschrittsbalken denke
ich, dass das vorerst gut ist. Wir können die Größe immer ändern,
wenn sie später zu groß ist. Bisher sieht es gut aus. Wir brauchen jedoch tatsächlich
ein Overlay, denn denken Sie daran, dass wir hier den Text
oben auf der Leiste haben, also brauchen wir hier tatsächlich einen Text, also benötigten wir zuerst
ein Overlay. Ziehen wir also ein
Overlay in dieses vertikale Feld und setzen diesen Fortschrittsbalken
in das Overlay. So können wir hier auch Text
darüber
und das Overlay hinzufügen . Wir haben also Fortschrittsbalken
und einen Text darüber. Auf dem Text richte ich ihn
in der Mitte aus. Und nennen wir es 100%. Dies ist zum Beispiel die Gesundheit. Ich ändere den Text in, versuchen
wir es halb fett. Halb fett, eigentlich fett, vielleicht Source Sans Pro Bold. Und ich glaube, lasst uns tatsächlich mit dem Schwarzen
gehen. Schwarz Und das ist die Größe, ich werde es auf 14 reduzieren. Also sehr kleiner Text hier. Ich gebe ihm einen Umriss. Also hier in den Gliederungseinstellungen, also werde ich es auf eins legen. Es hat also einen Umriss. Wenn du willst,
kannst du auch Schatten hinzufügen. Also zuerst hier in
der Schattenfarbe musst
du zum Alpha gehen. Und wenn du einen schreibst, erscheinen
die Schatten vollständig. Und wenn du 0 schreibst, lass mich deine 0,35 erhöhen. Es bedeutet fünfunddreißig
Prozent Schatten. Und ich verschiebe
den Schatten-Offset zwei auf zwei, damit er
etwas mehr entfernt ist. Sie können sehen, ob Sie mehr hinzufügen, es wird etwas
mehr vom Text entfernt. Also 22 ist gut für mich. Okay, also was Sie jetzt tun können, können
Sie
die Größe immer verringern , indem Sie
dieses y hier verringern. Ich glaube, es ist zu groß. So etwas verringert das
Y. Also
so etwas , vielleicht wie 42. Ja, ich denke, das ist auch
gut für dich. Ich
kopiere das auch hier oben. Und jetzt sieht es gut aus. Das ist also unsere Health Bar. Was wir jetzt tun können,
ist kompilieren und speichern, und wir können es duplizieren. So können wir auf das Overlay klicken. Wir können auf Control D klicken.
Jetzt duplizieren wir es. Und lass mich einen Abstandhalter zwischen
diesen beiden Abstandshaltern
zwischen den Overlays hinzufügen . Und dieser Abstandhalter ist
vielleicht zehn und das Y. Es gibt
also ein bisschen
Platz zwischen ihnen. Vielleicht ist 1515 gut. Das ist also die erfahrene Bar. Anstatt Rot,
ändern wir es in gelb oder grün. Das ist normalerweise der
Standard für Erfahrung. Und lasst uns es hier
unter der Health Bar ändern , es waren 42. Lassen Sie mich das also kopieren
und
für 24242 hier einfügen, so. Und für die erfahrene Bar. Und vielleicht wird
es
so etwas wie 23 Erfahrung sagen , dass Sie von 150 haben, die
benötigt werden, um aufzusteigen. Also so etwas. Jetzt haben wir diese Benutzeroberfläche gesagt. noch einmal daran, auf das Overlay zu
klicken, ändern Sie Ihren Anker in hier unten. Und Sie können versuchen,
diese Position am X und Y anzupassen. Ich aktiviere
die gestrichelten Linien damit ich tatsächlich sehen kann,
wo sie platziert sind. Ich weiß nicht, so
etwas spielt im Moment keine Rolle. Lassen Sie uns kompilieren und speichern
für die Antwort. Wir wollen so
etwas tun wo es heißt, dass du
getötet wurdest und dann sagt es,
wovon du getötet wurdest. Und dann drücken Sie
OK, um zu antworten. Also auch hier brauchen wir ein Overlay, um
Text darüber zu legen. Und wir brauchen einen Button
mit einem Overlay weil wir einen Button
und einen Text darüber haben. Gehen wir also zurück und fügen
wir zuerst ein Overlay hinzu. Auf der Suche nach Overlay minimiere
ich das hier. Ich füge
es der Leinwand hinzu. Dieses Overlay wird hier in der Mitte, in der
Mitte, hier oben oben
platziert . Und ich schreibe
0 und die Position. Und Sie können sehen, dass es
nicht in der Mitte ausgerichtet
ist, was es hier an dieser Ecke ausrichtet. So können Sie diese
Ausrichtung hier anpassen Ich sehe, dass es
0,5 ist , wenn Sie sie
perfekt in der Mitte ausrichten möchten. Und vielleicht kann
ich für die Position y 100s sagen, also ist
es hier unten. Was Sie jetzt
im Overlay tun können, können
Sie wieder ein Bild
zum Overlay hinzufügen. Sie können es horizontal und
vertikal füllen und dieses
schwarze Quadrat flach hinzufügen. Und wieder können Sie auf
Control D klicken, um es hier unten zu kopieren. Und dann kannst du es in
dieses ändern und vertikal ausrichten
. Sie können es oben ausrichten. Und ich ändere
die Größe auf fünf. Hier. Auch hier machen wir dieses Design. Klicken Sie auf Control D und
richten Sie es jetzt nach unten aus. Also haben wir das wieder. Und ich werde
diese gestrichelten Linien entfernen. Was Sie jetzt tun können, ist, dass Sie Text darüber hinzufügen
können, und er befindet sich in
einem vertikalen Feld. Fügen Sie also eine vertikale
Box zum Overlay hinzu. Und jetzt können wir zwei Texte hinzufügen. Also dieser eine Text. Und der zweite, der erste wird sagen, dass du getötet wurdest. Dann wird es mit
was sagen, zum Beispiel Schnecke. Und der andere
wird sagen:
Drücken Sie OK, um so zu antworten. Der erste Text hier oben, ich werde die
Schriftart hier auf halb fett ändern. Und die Größe wird 12 sein. Und dann werde ich es
hier
auf die Mitte ausrichten , bei der gleichen Sache mit diesem werde
ich
es zur Mitte ausrichten. Und für diese zweite werde
ich
die Schriftart auf fett ändern . Ich ändere
die Größe auf 18. Der erste, ich möchte auch einen Schatten
hinzufügen. Also gehe ich hier runter
und für den Schatten, wenn du das
Gleiche für beide tun willst, kannst
du
einen auswählen, Strg halten, den nächsten
auswählen und einfach die
gleiche Bearbeitung für beide vornehmen. Also hier in der
Schattenfarbe und dem Alpha 0,35. Und für den Schatten-Offset sage
ich zu zwei. Es ist also ein bisschen mehr, was
Sie sehen können, dass es jetzt in beiden Texten
einen subtilen Schatteneffekt gibt. Jetzt kann man sehen, dass sie nicht
wirklich in der Mitte sind, obwohl man
sie hier in die Mitte ausrichtet. Und das liegt
daran, dass sie sich in
einer vertikalen Box befinden. Die vertikale Box
muss also auch in der Mitte sein. hier hochklicken und
das vertikale Feld in die
Mitte legen , wird das Problem behoben. Jetzt können wir
dies ein bisschen größer machen , um diesen Kontext nicht
verdichtet zu haben. Versuchen Sie also einfach, die Größe
so zu ändern, wie Sie möchten. Das liegt an dir. Es spielt keine Rolle. So etwas.
Vielleicht sieht es gut aus. Und lass mich die Größe
einfach so verkleinern. Und jetzt können Sie einen
Abstandhalter zwischen diesen beiden hinzufügen. Ich glaube, sie sind zu nah dran. Lassen Sie mich also einen Abstandhalter
zwischen diesen beiden Texten hinzufügen. Und der Abstandhalter kann hergestellt werden
oder etwas wie fünf. Es gibt also ein bisschen
Abstand zwischen ihnen. Was wir jetzt brauchen, brauchen wir diesen Button hier. Sie können also sehen, dass wir
diesen Okay Button brauchen. Dieser Okay Button
befindet sich tatsächlich in einem, wir müssen eine vertikale
Box hinzufügen, da wir
dieses Jahr haben und vertikal
einen Button haben. Also mussten wir
das gesamte Overlay tatsächlich in eine vertikale Box legen. Also vertikale Box legen Sie
es hier ab und Sie können dieses
Overlay hineinziehen. Stellen Sie einfach sicher,
dass
dieses vertikale Feld nicht
in dieses Overlay eingefügt wurde. Dieser Fehler kann passieren. Minimieren Sie dies einfach und stellen
Sie sicher, dass Sie sie hier haben
, wo sie sein sollten. Ziehen wir dieses
vertikale Feld jetzt. Jetzt haben wir eine vertikale Box. Wir können die
Anker später machen. Fügen wir hier im vertikalen
Feld hinzu, wir haben dieses Overlay. Fügen wir ein weiteres Overlay
mit der Schaltfläche und dem Text hinzu. Suchen wir hier nach dem Button und suchen wir nach Text. Hier. Wir haben den Button und
den Text für den Button. Lassen Sie uns einen blauen Knopf hinzufügen, also heißt dieser
Blue Square flat. Und wieder können Sie mit der rechten Maustaste mit der rechten
Maustaste die Umschalttaste gedrückt halten,
während Sie mit der rechten Maustaste auf Kopieren klicken und die Umschalttaste gedrückt halten, Oder Sie können einfach
mit der rechten Maustaste klicken und auf „Kopieren“ klicken und Sie können die
Bindung auch hier sehen. Ich werde Einfügen sein. Ich mache das
Gleiche hier. Ändern Sie stattdessen dieses abgerundete Feld
in eine Box. Rechts, halten Sie die Umschalttaste gedrückt,
klicken Sie mit der rechten Maustaste auf CoBie ,
halten Sie die Umschalttaste gedrückt Und für diese Marge 0,5. Und ich schreibe 0.5 damit
es richtig kacheln kann. Also klicke ich hier
mit der rechten Maustaste darauf kopiere diesen Rand ein. Und für diese Tönungsfarbe werde
ich sie
für die normale Farbe auf das
Weiß verschieben, damit es keinen Farbton gibt. Und für den Harvard lege
ich
es einfach etwas hier hin. Und für die Brust werde
ich es
einfach etwas dunkler machen
als die schwebende. Das ist deprimiert.
Jetzt denke ich, dass das gut ist. Okay, also haben wir das und für die Erleuchtung,
also für den Button, eigentlich dieses Overlay,
das ganze Overlay,
es ist, dass es gerade richtig ausgerichtet ist. Gehen Sie also zu diesem Knopf, richten Sie ihn hier aus und
füllen Sie ihn horizontal aus. Und welche Arten von Pellet
vertikal, das ist okay. Für diesen Text richten wir
ihn in der Mitte aus. Ändern Sie
diese Schriftart in fett und ändern Sie die Größe auf 14. Und ich
füge wieder einen Schatten hinzu, 0,35 und setze den
Schatten nach 222. Wir haben also die gleiche Konsistenz, das gleiche Design, und wir
können hier einfach in Ordnung schreiben. Zwischen der Schaltfläche muss also ein
Leerzeichen vorhanden sein. Also lasst uns einen Abstandhalter machen. Fügen wir einen Abstandshalter zwischen
diesen beiden Overlays hinzu. Wir können vielleicht 20 oder 15 machen. Ich denke, 15 ist gut. Jetzt können Sie sehen, dass die Schaltfläche
groß ist und das liegt daran,
dass Sie auf
das vertikale Feld klicken müssen. Denken Sie daran, dass Sie es zum Füllen
geschafft haben. Hier hast du es
sich also auch gefühlt. Sie sehen hier,
dass es sich
horizontal und vertikal anfühlt Wenn wir also auf
das vertikale Feld klicken und seine Größe ändern
, sollte es die Größe ändern. Aber das ist momentan nicht wirklich
der Fall. Und das liegt daran, dass wir hier
auf „Ausfüllen“ klicken müssen. Im Moment ist es also auf auto eingestellt. Wir
müssen es tatsächlich füllen, also wird es
den ganzen Raum ausfüllen. Ich möchte meine UI-Dynamik
so machen , damit ich es
einfach anstelle von Folk ausfüllen kann, anstatt die
Größe hier auf den Bildern neu zu gestalten, ich möchte sie einfach ausfüllen,
damit ich auf
das Elternelement der Eltern klicken kann das Elternelement und ich kann die Größe
einfach so ändern, wie ich möchte, und es wird
viel einfacher für dich sein. Okay?
Dies ist tatsächlich auch gut, wie fortgeschritten, denn
später, wenn Sie Multiplayer und
Namen
haben usw., können
sie länger sein als Ihre Benutzeroberfläche. Dies wird sich also
automatisch dehnen
, wie lange der
Name auch ist, und so weiter. Das ist also eigentlich sehr,
sehr gute Praxis. Also lass mich einfach so
etwas. Und ich denke, ja, ich
glaube, es ist gut. Also lasst uns jetzt eine Zeile richtig Klicken Sie auf
das vertikale Feld. Du kannst sehen, dass der
Anker hier drüben ist. Klicken Sie auf den Anker, legen Sie
ihn in die obere Mitte und schreiben Sie 00 in die Position. Wieder werde ich hier
0.5 ausrichten und 100 und das y schreiben. Also schiebt es es hier runter. So
sieht es bisher aus. Lassen Sie uns kompilieren und speichern. Jetzt haben wir die Benutzeroberfläche erstellt
und ich denke, es sieht gut aus. Lasst uns alles speichern, kompilieren und wir können mehr Sachen hinzufügen,
wenn wir mehr Sachen brauchen. Aber im Moment
denke ich, dass das gut ist. Lasst uns mit dem nächsten Video fortfahren.
83. Hinzufügen der Main zum Viewport: Fügen wir nun die Benutzeroberfläche
zum Player-Controller hinzu. Und denken Sie daran, dass die Benutzeroberfläche clientseitig
ist, und das tun wir
im Controller. Innerhalb des
Player-Controllers machen
wir die gesamte Benutzeroberfläche. Und es ist clientseitig, was bedeutet, dass es nur
du als Spieler bist. Sie werden nur Ihre eigene Benutzeroberfläche sehen. Ein anderer Spieler erhält
seine eigenen neuen Augen. Es ist also nicht so, dass du es
nicht teilst, du siehst dir nur dein eigenes
an. Dies ist es, was auf der Clientseite bedeutet,
wie
auf dem eigenen Client zu laufen , er läuft nur
auf Ihrem PC , auf Ihrem Bildschirm. Und es macht keinen
Sinn zu teilen. Eine Benutzeroberfläche ergibt keinen wirklichen Sinn. Du kannst nur
deine eigene Gesundheit sehen. Und wenn Sie möchten, dass andere
ihre Gesundheit sehen, können
Sie diese
Informationen bei Bedarf jederzeit teilen. Also jetzt, hier und der
Spieler-Controller, was wir vorher gemacht haben, ist, dass
wir das Widget initialisiert haben, was hier in der
Charakterauswahl bedeutet. Wenn wir also auf Play klicken, die Charakterauswahl angezeigt. Willst du es jetzt auch machen. Nicht so, dass wir
das Menü I nicht
direkt zum Ansichtsfenster hinzufügen möchten das Menü I nicht
direkt zum Ansichtsfenster , da wir den
Zeichenauswahlbildschirm haben. Was wir jedoch tun möchten, ist,
die Haupt-Benutzeroberfläche nach dem
Zeichenauswahlbildschirm hinzuzufügen . Aber wir möchten
das Widget auch initialisieren. Nehmen wir das zuerst noch
einmal, erstellen Sie Widgets. Und wieder tun wir das im Client,
der
auf dem eigenen Client läuft. Hier wählen wir das Menü aus, das
ich gerade
als zusammengesetzte Speicherung erstellt habe. Und lassen Sie uns mit der rechten Maustaste auf eine Variable
befördert werden, nennen
wir es WB made. Das ist alles, was
wir hier tun mussten. Wir möchten es nicht zum Ansichtsfenster hinzufügen , denn
wenn Sie dies tun, wird
es tatsächlich auch
die Haupt-Benutzeroberfläche zum
Ansichtsfenster hinzufügen . Sie können sehen, dass es die Haupt-Benutzeroberfläche
hinzugefügt hat. Das wollen wir nicht wirklich machen. Also lasst uns das entfernen. Und wenn Sie das Ansichtsfenster nicht hinzufügen, können
Sie sehen, dass Sie
es als Variable bearbeiten, aber Sie haben
der Engine nicht mitgeteilt , dass Sie es tatsächlich im Ansichtsfenster haben
möchten. Und wir wollen es momentan nicht unter
Sichtport. Wir möchten dies jedoch tun,
wenn Sie
auf eines der Zeichen klicken oder
eines der Zeichen auswählen, es wird die
Haupt-Benutzeroberfläche zum Ansichtsfenster hinzugefügt. Was wir also tun können, ist, dass wir das schließen
können. Denken Sie daran, dass
wir hier im
Zeichenauswahlbildschirm in der Grafik diese
beiden Ereignisse entworfen haben, wenn Sie auf einen der Charaktere
klicken. Also lasst es uns tatsächlich hier machen. Lasst uns, wir haben bereits
den Spieler-Controller. Wir können also einfach diesen
WB Main nennen, den wir gerade gemacht haben. Und hier können Sie nach
x suchen und unsere Suche, auf die Sie jetzt
schreiben können .
Wir entfernen den Zeichenauswahlbildschirm wenn wir das Zeichen auswählen, aber wir
möchten dies auch dem Ansichtsfenster hinzufügen. Also möchten wir unseren
Charakter, unsere Haupt-Benutzeroberfläche, hinzufügen. Ich kopiere das hier unten
einfügen. Wenn wir also
Luke oder Serena auswählen, fügen
wir
dies den Ansichtsfenstern hinzu. Ich mache nur diese Flips, lass das ein
bisschen besser aussehen. So etwas. Okay,
jetzt werden wir es hinzufügen. Wenn ich also auf Play klicke, wähle
ich zum Beispiel eine Schleife aus. Sie können sehen, dass ich jetzt
meine Benutzeroberfläche auf dem Bildschirm habe. Auch hier
möchte ich nicht wirklich, dass dies so ist, immer dann verfügbar ist, wenn ich gerade spawnt habe, weil dies
die Todesbotschaft
oder die Antwortnachricht ist . Was wir also tun können, ist zur Haupt-Benutzeroberfläche zu
gehen. Wir können es hier
auswählen, dieses übergeordnete Element
auswählen, das vertikale Feld. Du siehst, dass dies der Richtige ist. Und was wir
damit machen wollen, ist hier unten und die Sichtbarkeit. Ändern wir die
Sichtbarkeit in „Versteckt“. Wir wollen es nicht sofort
sehen. Also werden wir es
ebenso verstecken wie diesen Fortschrittsbalken. Die Gesundheit liegt also von Anfang an bei
100%. Also erhöhe ich
den Standardprozentsatz tatsächlich auf 100. Und sie haben erlebt, dass
man unten ist, wie 0 Erfahrung,
wenn man anfängt. die Zahl betrifft, so sind dies zunächst
100 Prozent, und für diese ist
es 0 von etwas. Ich weiß es noch nicht, also lass uns hier
nichts hinzufügen. Wenn du jetzt auf Play klickst, siehst du
jetzt, dass es richtig ist. Jetzt wird
diese Nachricht hier oben nicht angezeigt. Und wir können unsere Gesundheit
und unsere Erfahrung hier sehen. Ich werde die Größe
ein wenig ändern. Ich denke, das ist zu groß. So etwas. Meine OCD löst aus. Ich habe nicht wirklich OCD, aber vielleicht habe ich so
etwas. Ich denke, es ist viel
besser. Sieht gut aus. Wir können das ein
bisschen hier im Y verschieben. So
etwas.
Okay, sieht perfekt aus. Jetzt haben wir die Gesundheit
und die Erfahrung sieht interessant aus. Und dann haben wir den Tod. Wie auch immer, ich möchte tatsächlich, dass
es erscheint, wann immer wir sterben. Und das werden wir tun, wenn wir mit
dem Spieler arbeiten, antworten. Das haben wir bisher also. Und das nächste, was wir tun können,
ist diese Gesundheitsleiste zu aktualisieren. Es ist sehr einfach, weil wir diese Logik
bereits hatten. Lasst uns also
zum nächsten Video übergehen.
84. Aktualisieren der Gesundheitsleiste: Um die Health Bar zu aktualisieren, gehen
wir zurück zur Benutzeroberfläche
und gehen zur Haupt-Benutzeroberfläche. Dies ist die Gesundheitsleiste, die wir hier
aktualisieren werden , damit der
Fortschrittsbalken es einfacher macht. Hier in der Grafik zum Codieren können
Sie sehen, dass all diese Müllnamen haben. Lassen Sie uns also einfach diesen Namen des
Fortschrittsbalkens in Prag ändern. Normalerweise nenne ich das
als Fortschrittsbalken. Und dann Gesundheit. Wir wissen also, dass es der
Fortschrittsbalken für die Gesundheit ist. Und dieses hier werde ich den Namen für
Text und Gesundheit in TXT
ändern . Lasst uns das in
Prager Erfahrung umstellen. werden wir
später benutzen, nicht gerade jetzt. Und dieser namens
TXT Experience, Compile und Save for
the button hier oben. Lassen Sie uns auch den Namen ändern,
während wir die Schaltfläche „Bearbeiten“ sind. Und einfach, okay,
das hier oben, wir wollen uns auch später
ändern weil wir
den Namen ändern werden. Ich nenne es TXT. Erschlagen, nennen wir
es von Verbindungen getötet. Sparen Sie. Jetzt können Sie hier für diesen Text sehen, dass wir ihn
auch festlegen möchten, aber wenn Sie beispielsweise auf
diesen Fortschrittsbalken klicken und
zum Diagramm
gehen, können
Sie sehen, dass der
Fortschrittsbalken hier eine Variable ist. Aber wir möchten diesen Text auch hier
ändern. Wenn Sie jedoch auf das Diagramm klicken, gibt es keinen Text. Und das liegt daran, dass
Texte standardmäßig keine
Variablen sind und Sie diese hier namens S Variable aufnehmen
müssen , und dann wird es
hier im Diagramm angezeigt. Es gibt jedoch
viele Bilder. Bilder sind Standardvariablen, aber manchmal
müssen Sie
Ihr Projekt bereinigen , also müssen Sie beispielsweise auf dieses
Bild
klicken
und es als
Variable entfernen, da Sie es nicht wirklich benötigen um
dies im Spiel zu ändern. Auch für den Hintergrund hier kann
ich es entfernen, wenn du willst, kann das auch bereinigen. Entfernen Sie also diesen Hintergrund
ist eine Variable. Entferne einfach alle hier. Dies kompilieren und speichern. Und Sie können sehen, dass Ihr Projekt viel sauberer
ist, wenn Sie nur die Variablen haben, mit
denen Sie arbeiten werden. Lassen Sie mich also
diese Standardereignisse löschen und lassen Sie uns einen Aufruf machen, machen
wir ein benutzerdefiniertes Ereignis, und nennen wir es Update-Health. Was ich normalerweise für die Benutzeroberfläche mache, erstelle
ich nie
Blueprint-Interfaces. Ich meine, du kannst, du kannst einfach reingehen und eins dafür erstellen. Aber es macht keinen
Sinn, weil Sie normalerweise nicht viele Ereignisse haben. Und Sie müssen viele Schnittstellen erstellen
. Als müsste
man für jede einzelne Benutzeroberfläche eine erstellen. Und das möchte ich nicht tun, also erstelle ich normalerweise nur
benutzerdefinierte Ereignisse für sie. Also hier für die
Update-Gesundheit, was wir tun wollen, wollen
wir den
Fortschrittsbalken für die Gesundheit verwenden und
den
festgelegten Prozentsatz angeben. Das ist das, was
wir aktualisieren möchten. Und du kannst sehen
, wie es heißt. Wenn Sie auf den
Fortschrittsbalken klicken und hier runter gehen, sehen
Sie, dass er Prozent heißt. Wenn Sie also nur suchen, suchen Sie nach Prozent. Wenn Sie
nicht wissen, wie es heißt, werden
Sie diesen hier sehen. Wir möchten also
den Prozentsatz festlegen, aber wir möchten auch diesen Text namens
Health
aktualisieren , der auch als setText bezeichnet wird. Also wollen wir
diesen Text auch festlegen. Für diesen Prozentsatz werde
ich es einfach durch
dieses Ereignis führen und wir können
es noch einmal an einem anderen Ort nennen. Lassen Sie mich es einfach
Prozent statt
persönlich für diese Texte nennen , es wird nur
ein Prozentsatz von allem sein , was
dies durchmacht. Und du wirst später sehen, was
ich meine. Aber jetzt ziehen wir einfach von hier
aus und sagen „Geschenk“. Und für den Float hast du
etwas, das als Prozent bezeichnet wird. Es wird
dies also als Prozent für Text umwandeln. Und dann können wir es hier einstecken. Es wird also hier
als Prozentsatz angezeigt. Jetzt können wir immer versuchen zu testen
und zu sehen, ob das richtig
funktioniert. Jetzt, da wir
diesen Compound-Verkauf haben, denken Sie
also daran, dass wir die Benutzeroberfläche innerhalb
des Player-Controllers behandeln. Lassen Sie mich also zurück zum
Blueprints Player Controller. Und drinnen von hier. Letztendlich wollen wir es also von
der Spielerbasis aus hier
nennen, denn die Spielerbasis überprüfen
wir, als würden wir
die Gesundheit hier drüben berechnen . Und das wollen wir tatsächlich anzeigen,
wie
zum Beispiel die Benutzeroberfläche von hier aus aktualisieren. Es wird von
der Spielerbasis
zum Spieler-Controller und am Ende
zu diesem wechseln . Erstellen wir also jetzt
den beim Player-Controller. Im Moment initialisieren
wir also beim
Player-Controller Widgets. Wir haben diesen Charakter und
wir haben den Spieler spawnen. Also jetzt hier unten, lass uns noch eins machen. Und nennen wir es. Machen wir ein benutzerdefiniertes
und wir können es
zu einem
Blueprint-Interface machen. Und ein bisschen wollte ich nur
sehen, was wir hier tun können. Machen Sie es also blind in Ihren
Kunden, aktualisieren Sie, aktualisieren Sie es, Health Bar und lassen Sie uns dieses Ereignis aufrufen. Nehmen Sie also hier im WB-Hauptteil teil, denken Sie daran, dass sich das Ereignis hier innerhalb der Haupt-Benutzeroberfläche
befindet. Wir haben also bereits eine Variable
in unserem Spieler-Controller. Wir haben es uns gerade hier ausgedacht. Wir haben diese Variable gerade gemacht. Wir können diese
Variable jetzt verwenden und wir können dieses Ereignis
namens Update-Health
aufrufen. Nennen wir es sagen „Gesundheit“. Und jetzt findest du es hier. Als nächstes wollen wir einfach gehen und diesen
Prozentsatz hineinbringen. Und das brauchen wir. Lassen Sie uns diesen tatsächlich in
einen laufenden, besitzenden
Client
umwandeln und zuverlässig. Was wir jetzt tun müssen, ist, dass wir dieses
benutzerdefinierte Ereignis hier oben haben wollen. Machen wir es zu einem
Blueprint-Interface. Gehen wir zurück zu den Schnittstellen, zum Player-Controller. Und hier, lasst uns wie
haben wir es genannt? Aktualisieren Sie die Gesundheitsleiste. Und nennen wir es hier,
aktualisiert die Gesundheitsleiste. Fügen wir hier einen Float hinzu
und nennen ihn Prozent. Ich glaube, es
hieß Present und nennen
wir es jetzt hier, sagen
wir Update Health Bar. Und wir können diese
Interface-Ereignisse aufrufen. Und jetzt können wir
diesen
clientseitigen Eins nennen und die Gesundheitsleiste aktualisieren. Und lasst uns das durchziehen. Also jetzt müssen wir die Spielerbasis
durchrufen. Nennen wir es also hier. Um also die Gesundheit zu aktualisieren, gehen
wir jetzt tatsächlich zurück
mit der Spielerbasis ist da. Also subtrahieren wir
und rechnen damit. Wir müssen es hier machen. Also müssen wir das tatsächlich
ein bisschen weiter wegbewegen . Und jetzt brauchen wir den
Spieler-Controller. Und lass mich sehen, was
wir hier gemacht haben. Wir hatten den feindlichen Controller. Wir haben den
Player-Controller nicht, also können wir tatsächlich darauf
verweisen, sagen
wir, den Controller holen, weil wir bereits im Player sind , damit
wir den Controller wie Dies und dann sagen Sie
erhält Layer Control unsere Referenz, weil wir diesen Player-Controller hier
verwenden möchten . Wo ist es? Dieser? Insbesondere beziehen wir uns
auf diese PC Maple Story. Und von hier aus
werden wir
das Update Health
Update Health Bar aufrufen , ich glaube, es wurde aufgerufen
und es ist eine Nachricht. Denken Sie also an die Nachricht
hier, denn es ist eine
Blueprint-Interface-Funktion, die wir erstellt haben. Es ist also eine Nachricht, wenn Sie darauf
klicken, kompilieren und speichern. Jetzt müssen wir also
etwas in
diesen Prozentsatz stecken und für diesen, also denken Sie daran,
Sie können mich das hier nicht
einfach aufschlüsseln lassen. Eigentlich müssen wir
das nicht ständig machen. Wir können das einfach gebrauchen. Lassen Sie mich das vorerst trennen. Wenn wir diese Gesundheit verwenden, können
wir sie nicht
einfach in Prozent stecken. Denn für die Benutzeroberfläche, wenn Sie sich den
Fortschrittsbalken ansehen, für die Benutzeroberfläche, geht
Ihr Fortschrittsbalken tatsächlich von, schauen wir uns hier an. Es geht von eins auf 0, also geht es nicht auf 100%, es geht auf 0 zu eins. Wenn Sie also einen
Prozentsatz geteilt
durch 100 haben , um diese Zahl zu erreichen. Andernfalls, wenn Sie nur 100% anschließen, werden
es immer
100 sein, denn dann ist die maximale Zahl tatsächlich eins und
das Minimum 0. Also 0 zu eins. Denken Sie daran, nicht auf 0 bis 100 zu stehen. Gehen wir also zurück
zur Spielerbasis. Und was ich tun muss, Lassen Sie uns eine neue Veranstaltung
namens Max Health machen weil wir
einen Prozentsatz nehmen müssen und
um ein Prozent machen zu
können, müssen wir wissen,
was es vorher war. Lassen Sie uns eine maximale Gesundheitsvariable machen. Und anstatt es hier unten zu
tun, kannst
du
es einfach in den Spielerinformationen machen. Gehen wir also zu den Strukturen als Spielerinfo und machen wir einfach eine neue Gesundheitsvariable. Nennen wir es Max Health. Und sagen wir mal,
manchmal wie in RPGs, können
Sie diese maximale Gesundheit verbessern. Und diese Gesundheit ist
genau so, als würden wir diese Gesundheit
nur benutzen, um sie ständig zu
ändern. Dies führt jedoch dazu, dass die
Gesundheit immer auf dem Maximum
bleibt und Sie können sie später mit
Upgrades
aktualisieren. Also haben wir die maximale
Gesundheit und gehen wir tatsächlich zum
Spieler-Basis-Compound-Sparen. Und in der
Spielerbasis musst du festlegen, was diese maximale Gesundheit ist. Stellen wir es einfach auf 20 ein. maximale Gesundheit ist 20. Lasst uns jetzt gehen. Lass mich einfach alles zusammenstellen. Gehen wir zurück zur
Spielerbasis. Jetzt haben wir die maximale
Gesundheit als Prozentsatz. Sie müssen diese
verbleibende Gesundheit nehmen und
teilen, durch die maximale Gesundheit teilen. Jetzt erhalten Sie die
prozentuale Zahl , die Sie hier anschließen können. Und jetzt, da Sie diesen
Update-Zustand in Prozent haben, wird dies
jetzt
durch den Player-Controller gehen. Sie rufen dies also
von der Plake-Kontrolle über ihre Gesundheit
an den Spieler-Controller, wird
durch die Clients gehen. Denn denken Sie daran, dass die Benutzeroberfläche
clientseitig ist, also wird sie durch
den Client gehen und die Gesundheit
aktualisieren, die hier ist. Und es verwendet auch die
Nummer, die Sie haben. Wenn Sie zum Beispiel bei
maximaler Gesundheitszahl sind, wird hier bei 1 und der Fortschrittsbalken hier 1 sein, wenn Sie nur als Prozentsatz
tun, glaube
ich, dass es mit einer 100
multipliziert wird. Also steckt es hier im Text. Aber wir müssen es
tatsächlich testen und sehen, ob es richtig
funktioniert. Jetzt als Prozentsatz. Und jetzt
kannst du diese verbinden und fragen, ist, ist diese Gesundheit hier? Ist es gleich 0?
Sagen wir nochmal gleich 0. Wir können hier einfach löschen
und stattdessen verbinden. Du kannst einfach weitermachen
, was du vorher getan hast. Jetzt aktualisieren Sie den Fortschrittsbalken und
speichern Sie alles. Und bevor wir fortfahren, glaube
ich, dass es das war. Versuchen wir einfach zu
sehen, ob es funktioniert. Also ist es bei 100 und dieser
wird mich treffen. Also bin ich eigentlich, wir können sehen, dass
wir hier einen Fehler haben. Aber versuchen wir das später zu beheben. Also lasst uns mal sehen,
wovon das verursacht wurde. Das hier. Du kannst sehen,
dass es mich trifft und ich habe 50 übrig, weil es mich für 50
trifft. Und wenn ich 0 habe,
bin ich dieses Grab und
nichts passiert. Das funktioniert also wirklich
einwandfrei. Und wenn ich meine Gesundheit steige, gehen
wir an, wir gehen zu
den Spielerinformationen und erhöhen die maximalen
Hügel um 50 zu sagen. Und wir fangen auch mit 50. Also lasst uns jetzt spielen. Und jetzt können Sie sehen,
dass es einwandfrei funktioniert. Und wenn ich hierher gehe,
wird es mir viel mehr schaden. Und dann wird er mich umbringen. Jetzt funktioniert das
einwandfrei. Der Prozentbalken ist korrekt
und der Prozentsatz hier, der Text hier ist ebenfalls korrekt. Für diesen Bug unter dem Buchstaben muss
ich das tatsächlich beheben. Wenn du also springst, greift es aus
irgendeinem Grund nicht. Ich kann sehen,
dass es hier stecken bleibt. Und lass mich einfach versuchen, mit
diesem Schwein hier
auf die Leiter zu springen . Es funktioniert also,
wenn ich mich nicht bewege, aber es nervt. Wenn ich von der Seite springe,
was sehr seltsam ist, hat es
vielleicht etwas
mit den Kollisionen zu tun , die wir hinzugefügt haben. Also lass mich eigentlich sehen,
lass mich hier sehen. Wenn wir also tief hier oben sind, lass mich zum Cholin gehen
, das auf und ab ist. Wir
klettern also und
wir haben diese Unwrap Funktion
namens isClient sein. Wie viel gibt es hier nur
eine Zeichenfolge aus, um zu sehen, ob das
so ist, als ob wir
durch die Kollisionen, die wir haben, vermissen. Jetzt wird es also Hallo sagen. Ja, du siehst
, dass es oft sagt. Es ist eigentlich nicht
viermal, wenn ich das nur zehn Sekunden lang
mache. Also kann ich es erklären. Du siehst hier, wir
werden drauf springen. Es ist eigentlich ein Say zweimal, eins vom Server und
eins vom Client. Und wir haben offensichtlich
noch einen vom Server. Also ist es eigentlich
dreimal hier. Wir haben mehrere Kollision, als ob es
das nicht dreimal tun sollte. Dieser Code
muss also nur einmal ausgeführt werden. Es gibt also etwas mit den Kollisionen, die
wir anpassen müssen, was dieses Problem verursacht weil wir nur einmal damit
kollidieren müssen. Also lass mich für
den Spieler auf
diese Kapsel klicken und schau es mir an. Und wir ignorieren
alles außer dem Dynamischen und Statischen. Und lass mich diese
Angriffskollision machen. Vielleicht hieß es, dass
die Angriffskollision, wir ignorieren alles
außer der Weltdynamik. Und lass mich einen
Blick auf die Leiter werfen. Lassen Sie mich also
zu den Blaupausen
zurückkehren die Linie
blind basiert, werfen Sie einen Blick auf die
Kollisionsbox für diesen Hier überlappt
alles. Und diese Renderkomponente
ist auf keine Kollision eingestellt. Das hat also keine Kollision. Also der Spieler, nur um sicherzustellen, dass das Sprite auch keine
Kollision hat. Eigentlich hat es Kollision,
aber keine Überlappungsereignisse. Also lass mich
diese Kollisionsbox versuchen. Lassen Sie mich zum Kostüm gehen und
tun, wie wir
die Weltdynamik ignorieren können und versuchen, auf Play zu klicken
und zu sehen, was passiert. Jetzt kannst du sehen, dass es
tatsächlich funktioniert. Testen wir das ein
paar Mal, nur um sicherzustellen , dass das nicht plötzlich blockiert
. Lass mich als Kunde spielen. Lassen Sie mich also den Kunden
hier hochziehen und sicherstellen,
dass er auch funktioniert. Das funktioniert. Es
passt unseren Standort an. Okay. Also funktioniert alles. Und das Problem war, dass
wir zwei Kollisionen hatten, die
damit verbunden waren. Für die Kollision war
es also derjenige,
der damit kollidierte. Denn denken Sie daran, dass die
Angriffskollision eine Weltdynamik ist
und sich
die Leiterkollision mit
der Weltdynamik überlappen wird. Wir müssen also
die Weltdynamik ignorieren, was bedeutet, dass wir
diese Angriffskollision ignorieren müssen. Und das wird es nicht mehr
durcheinander bringen. Das war also die Lösung hier,
eine sehr einfache Lösung. Stellen Sie es einfach auf den
Kunden ein und entfernen Sie es. Ignoriere das gut dynamisch und das wird das Problem beheben. Damit haben wir dieses Problem behoben und auch die Health Bar UI
aktualisiert. Gehen wir zur nächsten
und aktualisieren die Todessteuer.
85. Den Death aktualisieren: Gehen wir nun zurück
zur Benutzeroberfläche und gehen zum Haupt. Hier möchten wir diesen Text
aktualisieren. Es heißt also, du wurdest von
getötet und es heißt Schnecke. Also müssen wir
diesen Text hier aktualisieren. Klicken Sie also erneut auf diesen Text,
denken Sie daran, ihn auf
Variablen zu setzen, damit wir ihn
bearbeiten und hier in
die Grafik gehen können . Und ich rufe das an, erstelle ein benutzerdefiniertes Ereignis und nenne
es Todesnachricht anzeigen. Und wir können uns auch anschauen, als
könnten wir die Nachricht anzeigen und diese Texte auch
aktualisieren. Wenn wir diesen Text nehmen , müssen wir
zuerst diese Nachricht
anzeigen. Denken Sie daran, dass es standardmäßig versteckt ist. Nehmen wir an, was wir tun wollen. Ich glaube, wir müssen
es auch in eine Variable verwandeln. Wir möchten, dass dieses
vertikale Feld angezeigt wird. Denken Sie daran, dass wir es auf versteckt gesetzt haben. Also müssen wir, lasst uns den Namen
ändern. Also VB für vertikale Box und
lass mich es antworten nennen. Antwort oder Todesbotschaft. Nennen wir es Todesbotschaft. Und lasst es uns in eine Variable einfügen,
damit ich es im Code sehen kann. also hierher gehen
und dies nehmen können, was
wir sagen können, ist, die Sichtbarkeit zu
setzen. Und jetzt können
wir es
sichtbar machen . Und lass es uns verbinden. Jetzt ist es also sichtbar. Und das nächste, was wir tun wollen, ist diesen Text hier anzuzeigen. SetText hat also tatsächlich
den Text geändert , der genau wie das hat, was wir hier mit diesem gemacht haben. Aber mit diesem werde ich
dir
jetzt etwas Neues beibringen. Du hast also etwas Dynamik. Es wird also sagen, dass
du von Schnecken getötet wurdest. Also kopiere ich einfach diesen Text ein und platziere ihn hier. Dann wollte ich gehen,
du wurdest getötet. Du wurdest von Schnecke getötet. Diese Schnecke,
manchmal ist es ein Schwein, manchmal ist es ein neuer Feind, den
du deinem Spiel hinzugefügt hast, also ist es nicht
unbedingt eine Schnecke. Wenn Sie also
dynamische Texte wie diese haben , die sich
während des Gameplays ändern müssen, müssen
Sie hierher ziehen und
etwas namens Formattext verwenden . Benutze das stattdessen. Wenn Sie einen dynamischen Text haben, der
nicht ständig statisch ist, füge
ich meinen
Text hier erneut ein. Die Sache, die du dynamisch sein willst
. Dieser Text ist also statisch. All das, das
einzige, was ich ändern
möchte , ist diese Schnecke hier. Manchmal ist es ein
Schwein oder manchmal ist
es ein anderer Feind
, den du hinzugefügt hast. Um dies zu tun, musst du diese lockige Klammer
schreiben. Diese beiden lockigen Klammern. Und in der Mitte kannst du
einfach schreiben, was du willst. Drücken Sie die Eingabetaste, und Sie
können sehen, dass Sie hier
eine Variable haben , die
Sie anschließen können. Jetzt. Du kannst hier schreiben, was
du willst. Zum Beispiel versuchen
wir hier, den Namen des Feindes festzulegen. Also
nenne ich es einfach irgendeinen Namen. Sie können sehen, dass es
sich entsprechend ändert. Sie können also alles
in lockige Klammern schreiben. Dies ist der dynamische Text
, den wir ändern müssen. Dieser Text wird der Name
des Feindes sein und wir haben noch
keine feindlichen Namen angegeben. Gehen wir also zurück
zur Struktur. Denken Sie daran, dass wir dieses Tier haben, tierische Informationen, sehr nützlich. Wir können Informationen über die Tiere haben. Also lass mich das
einfach nennen, eigentlich keine Schnecke, lass mich es Namen nennen. Also haben wir den Namen des
Feindes hier. Und lass mich
das in eine Zeichenfolge ändern. Compounds sparen und lass es mich hier oben
stellen. Wenn Sie dies jetzt noch einmal tun,
denken Sie daran, dass Sie zu Feind,
Feindbasis, Kompilieren und Speichern gehen können . Jetzt kannst du es bei
allen Feinden sehen. Gehen Sie zum Beispiel
zur Schnecke in den Standardeinstellungen der
Klasse. Jetzt haben wir diese
Namenszeichenfolgenvariable hier. Und du kannst diese eine Schnecke einfach
nennen. Und lass uns hier zum Schwein gehen
und den Namen angeben. Nennen wir es „Pick“. Du kannst ihm
sogar einen Namen geben, wie du es Victor
nennen kannst oder
was auch immer du tun willst. Aber denk dran, das
ist für alle Schweine. Also werden sie alle Victor heißen. Nennen wir das ein Schwein. Und lass uns das machen. Okay, jetzt haben wir den
Namen hier und es ist eine Zeichenfolge. Also lasst uns hier klicken
und String sagen. Und nennen wir diesen
einen feindlichen Namen, Tangente in eine Schnur. Und jetzt können wir es hier unten
verbinden. Und Sie können
jetzt sehen, dass Sie
eine Variable durch diese
in diesen Formattext steuern können . Jetzt, da wir das haben, denken Sie daran, dass dies eine Benutzeroberfläche ist, also müssen wir
zum Player-Controller gehen und es dann hier anrufen. Aber um deinen
Code ein bisschen besser zu machen, kannst
du gehen, lass uns hier zum Hauptteil zurückkehren. Wie diese Anzeige
wird die
Todesmeldung angezeigt, wenn
Ihr Gesundheitszustand 0 ist. Denken Sie daran, dass Sie hier im Update-Zustand
bereits nach
dem Gesundheitszustand suchen . Sie können
es
sich also einfach einfacher machen , anstatt nur ein anderes Ereignis hier zu machen und der Spieler-Controller Updates,
Todesbotschaft oder
ähnliches
sagt . Du
suchst bereits nach der Gesundheit. Sie wissen also bereits
von hier, wann immer es 0 ist und
wann immer es 0 ist, wird
diese Todesbotschaft angezeigt. Das ist es, was du brauchst. Also hier im Prozentsatz können wir einfach gleich 0
sagen. Und danach können wir einen
Zweig machen. Und wenn es 0 ist, rufen Sie diese mit der Bezeichnung Todesnachricht
anzeigen auf. Wir können also einfach sagen, dass diese Nachricht
angezeigt wird. Und jetzt hast du es. Sie müssen dies jedoch
erneut durch all
diese Ereignisse fahren . Also ziehe ich
diesen feindlichen
Namen hier durch. Jetzt geht es zu den
Player-Controller-Treibern hier
durch, den Client. Und hier müssen Sie diese
durchgehen, aber
das können Sie nicht tun, da dies
eine Blueprint-Interface-Funktion
namens Health Bar aktualisieren ist . Ich gehe zurück zum
Interface-Controller namens Update Health Bar. Und fügen wir
hier eine Zeichenfolge hinzu, die feindlicher Name genannt wird, Feind
kompilieren und speichern oder
den Spieler-Controller. Wir können sie jetzt verbinden. Und denken Sie daran, dass
es in der Spielerbasis ganz vorbei ist. Gehen wir also zurück zum
Spieler, Spielerbasis. Jetzt kannst du es
in der Spielerbasis sehen. Lass uns zum Code gehen. Und Sie können es jetzt hier sehen
, wenn wir die Gesundheit aktualisieren. Eigentlich muss ich
ihm auch den Namen nennen. Klicken Sie also hier rüber,
denken Sie daran, dass wir es hinzugefügt haben. Dieser ist also eigentlich
die Spieler-Info. Wir haben es in die feindlichen
Informationen oder Tierinformationen hinzugefügt. Also für die Tierinformationen müssen wir es hier nennen. Also lasst uns das im Spieler machen. Wie nennen wir das? Denken Sie daran, dass es in
der feindlichen Basis gespeichert ist , Basispläne. Haben wir etwas
, das wir tun können um den feindlichen Basisplan zu nennen da dieser eine verbundene Spieler
tatsächlich ein alter ist , den ich löschen muss. Haben wir also
etwas, von dem wir den Feind ****
nennen können ? Und ja, wir haben, denken Sie daran, dass wir den feindlichen Controller
haben. Dies ist diejenige, die
wir hier definiert haben. Wann immer wir kommen, wie
wenn wir Schaden bekommen, ist
dies vom Feind. Wir haben also bereits den
Controller des Feindes und wir können sehen, dass er
kontrolliert wird, und so
bekommen wir die feindliche Basis. Denn jetzt können wir sagen, bekommt
feindliche Referenz wie diese. Und von hier aus können wir Tierinformationen
sagen. Jetzt können wir es hier kriegen. Und jetzt können wir es brechen und wir können den Namen
so einfach verstehen. Also klicke hier auf diesen
Namen, so. Also müssen wir
dies in unseren Code aufnehmen. Damit wir hier sehen können, können
wir es hier einbeziehen. Lassen Sie mich das alles
so bewegen. Lassen Sie mich einfach hier unten
einbeziehen, wir können es einfach ein bisschen
aufräumen. Es ist gerade ein bisschen durcheinander. Und wir können den
Namen hier drin stecken. Was
funktioniert jetzt eigentlich richtig? Hoffentlich können wir das
natürlich testen, bevor wir es glauben. Lassen Sie uns jetzt versuchen,
diese ein bisschen besser zu organisieren. So etwas. Sie können diese auch so
näher bringen. Und doppelklicken Sie hier,
um einen Eisenbahnknoten zu erstellen und ihn ein
bisschen besser aussehen zu lassen. So hier. Und Sie können sogar dazu hier doppelklicken und stattdessen tun. So etwas
sieht es etwas sauberer aus. Ja, das sieht gut aus. Jetzt können wir also kompilieren und speichern. Jetzt legen wir den Namen fest. Es wird durch den
Spieler-Controller gehen. Hier. Es wird durchgehen,
es wird das blinde Ereignis
durchlaufen, wird
die Update-Gesundheit durchlaufen, die dann hier
durchgehen wird. zu diesem Zweck wird hier
durchgehen und diesen feindlichen Namen setzen. Und es wird dynamisch sein weil Sie
bereits in
der Schnecke definiert haben , wie der Name
der Schnecke ist und im Schwein, wie der Name des Schweins lautet. Jetzt sollte es also klappen. Aber wir können dies derzeit nicht
testen. Eigentlich ist die Wirtschaft, die
wir bereits zeigen, nur die Antwort
, die wir noch nicht definiert haben. Also lass mich einfach den
Zahler schlagen, damit ich schneller sterben kann. Jetzt kannst du sehen, dass es heißt, du wurdest von Pig getötet. Drücken Sie OK, um zu antworten. Und dann kannst du auf
OK klicken, wir haben einen kleinen Bug. Sie können sehen, dass die Schaltfläche nicht oben
gedrückt werden kann , okay, Text und nur hier draußen
gedrückt werden. Also lasst uns das in Ordnung bringen. Und ich möchte das
ein bisschen größer machen. Es ist ein bisschen zu klein. Gehen wir also zurück zum Menü. Ich gehe zum Designer. Möchten Sie dies ein
bisschen größer machen, damit Sie auf
das Bild klicken Größe etwas
größer machen
und das vertikale Feld vergrößern können, damit die Schaltfläche größer wird.
So etwas. Was wir jetzt tun können, ist
dafür, okay, hier, erinnere dich an das Ding wie
wenn Bugs ausgeht und es deinen Button hier
blockiert und
es gibt keine Blocksets. Sie müssen hier hinunter
zur Sichtbarkeit für
diesen Text gehen und ihn auf „None
Hit Testable Self“ setzen. Und das bedeutet, dass Sie das nicht mit der Maus
treffen können. Deine Maus wird das also ignorieren. Und so kannst du dich einfach auf den Button
konzentrieren. Denken Sie also daran, dies mit blockierenden
Elementen oder Schaltflächen zu tun. Wenn du zum Beispiel einen,
einen Ingame-Shop oder so machst und Symbole hast, musst
du das
für die Icons tun. So können Sie jetzt sehen, dass
ich auf
den Button klicken kann , obwohl
ich auf dem Text bin. Ich
sage einfach den Namen hier. Jetzt
funktioniert alles richtig. Das nächste, was wir tun wollen,
ist, wenn du darauf klickst, okay, wir werden
auf das Spiel antworten.
86. Player: Arbeiten wir jetzt an der
Antwort für den Spieler. Gehen wir also zurück
zu Blaupausen und zum Spieler, Spielerbasis. Also
haben wir das alles codiert, jeden Schaden bisher. Und wir haben
die Spieler in den Tod gesetzt wo immer der Spieler stirbt, aber wir haben nie angegeben wann Sie nicht mehr tot
sein werden. Und wir wollen tot sein,
wenn Sie einfach auf den
Okay Button
innerhalb der Haupt-Benutzeroberfläche klicken . Also lasst uns das zuerst machen. Gehen wir jetzt zuerst
zur Haupt-Benutzeroberfläche. Und drinnen hier, wenn
Sie auf diesen Button klicken
, klicken Sie hier auf den Button und gehen Sie zum Button. Und dann können Sie alle
diese Ereignisse sehen diese Ereignisse wenn Sie
auf die Schaltfläche klicken,
klicken Sie auf dieses Plus, um dieses Ereignis zu erstellen. Wenn Sie also auf diesen
Okay Button klicken , was sollte passieren? Ich wollte nur
meinen Tod auf falsch setzen. Nun, da wir uns in diesem Kurs
befinden, versuchen Sie dies selbst zu tun. Versuchen Sie, ein festzulegen, versuchte mit
diesem Blueprint zu kommunizieren und versuchen Sie, es selbst auf falsch zu
setzen. Wenn du willst, wenn du hier
versagst, kannst du mir immer folgen. Und lass es uns jetzt zusammen machen. Sie können das Video anhalten, wenn
Sie es selbst machen möchten. Was wir jetzt
tun wollen, ist, dass
wir mit
der Spielerbasis kommunizieren wollen. Wir wollen das,
die Pons irgendwie kriegen. Denken Sie in der Benutzeroberfläche daran, dass dies clientseitig
ist, also hat jeder einzelne Punkt, jeder einzelne verbundene
Player diese Benutzeroberfläche. Also kann ich einfach
mit der rechten Maustaste klicken und sagen: Get Owning Layer Pawn. Holen Sie sich also einen Spieler, den Spieler-Controller, holen Sie sich den Owning Player Pawn erhält das Pfand-Steuerelement auf ****.
Hit die besitzende Plattform. Und Sie können sehen, dass
der Player Pawn mit dieser Benutzeroberfläche
verknüpft wird . Und von hier aus können wir einfach
„Spielerreferenz abrufen“ sagen. Und was wir jetzt tun können, ist,
dass wir diesen Tod
hier nennen können , weil dies
innerhalb der BP-Spielerbasis gemacht wird. Also können wir das einfach Todesereignisse nennen
. Und es ist eine Nachricht, weil es eine Blueprint-Interface-Funktion handelt. Und wir können es einfach auf „false“ setzen. Und denken Sie daran, wir müssen
festlegen, dass diese Todesbotschaft wieder versteckt
wird, da sonst auf dem Bildschirm angezeigt wird. Stellen Sie also die Sichtbarkeit so
auf versteckt ein. Ups, so. Okay, also jetzt ist das behoben. Okay, jetzt haben wir gesagt, dass
der Tod falsch ist. Gehen wir also zurück
zur Spielerbasis. Ich habe ich bin mir nicht sicher, was
wir hier eigentlich gemacht haben. Ja, wir mögen nur
Wir haben nicht viel getan. Wir setzen dies nur auf
falsch und wahr. Stimmt das hier,
wie wenn du tot bist, wird
es das zeigen,
um dir das Buch umzudrehen. Also was wir hier machen wollen, lass mich einfach einen Zweig machen. Was soll es also tun, wenn
du das nicht mehr bist? Also wenn du reagierst. Zuerst möchte ich
meine Gesundheit wieder auf 100 setzen ,
weil es jetzt 0 ist. Also nehme ich mein hier in den Properties,
meine Struktur. Schon wieder. Ich möchte meine Gesundheitstasche einstellen, also setze Mitglieder hier und wähle
das aus, wähle die Gesundheit aus. Jetzt wollen wir die Gesundheit festlegen. Worauf willst du es einstellen? Sie möchten es auf
die maximale Gesundheit einstellen. Also bringe ich es jetzt kaputt. Denken Sie daran, dass wir eine
maximale Gesundheitsvariable gemacht haben. Jetzt wollen wir uns nur verbinden , die
Gesundheit hier macht. Lass mich einfach
diese anderen Pins verstecken. Okay, jetzt
stellen wir die Gesundheit auf die maximale Gesundheit ein und wir sind
wieder bei vollem Gesundheitszustand. Also lasst es uns verbinden. Verbinden wir es also dem Falschen, denn wenn
du nicht mehr tot bist, bedeuten die Falten das. Hier. Wir müssen uns daran erinnern, dass wir die
Spielerinformationen so wieder hier einstellen müssen. Jetzt haben wir den
vollen gesundheitlichen Rückschlag. Das nächste, was wir tun müssen, müssen
wir die Benutzeroberfläche aktualisieren denn obwohl wir diese Variable
festlegen, denken Sie
daran, genau wie bevor Sie den Fortschrittsbalken aktualisieren
müssen. Es zeigt Ihnen also, dass Sie bei 100 Gesundheit
sind. Was wir dafür tun können, können
wir das hier kopieren und einfügen. Also hol den Controller, hol dir
den Spieler-Controller. Also diese beiden hier oder ich kann es
einfach schreiben, wenn du willst. Also kriegen wir den
Spieler-Controller hier. Und was Sie hier tun können, ist,
was der Player-Controller, wieder können Sie die
Aktualisierungs-Gesundheitsleiste aufrufen. Hier als die Botschaft. Ich glaube, es war
die Botschaft hier. Ja, das war richtig. Und habe ich es tatsächlich als Nachricht
genannt? Ja, das hab ich hier. Ich will nur sehen, ob ich hier oben einen Fehler gemacht habe. Jetzt ist es also richtig. Und für den Prozentsatz können
Sie wieder die Gesundheit
geteilt durch die maximale Gesundheit nehmen. Also nochmal, genau wie
zuvor, nimm das, nimm es auf und nimm
diese Gesundheit und teile sie durch die maximale
Gesundheit, genau wie zuvor. Also derselbe Code hier. Und dann kannst du
es mit dem Prozentsatz verbinden. Was die Eliminierten angeht, brauchen
wir es nicht wirklich. würdest du
diese Benutzeroberfläche nicht anzeigen , wenn du lebst
und nicht tot bist. Es spielt also keine
Rolle, was es sagt, denn es ist sowieso versteckt. Also werde ich das hier nicht wirklich
machen. Also okay, jetzt
haben wir die Benutzeroberfläche aktualisiert. Was kommt als Nächstes? Das nächste ist, dass
du antworten musst. Wo also, wo
reagierst du? Und erinnern wir uns daran, wie vor einiger
Zeit haben wir diesen gemacht, denke
ich, dass wir zu Beginn
des Kurses den Spawn-Standort des Spielers
festgelegt haben und
es auf den Spielerstart gesetzt haben . Lassen Sie uns also diesen einen Satz
Spieler-Spawn-Standorte verwenden. Also werden wir dort spawnen. Ich gehe runter, es ist hier. Lassen Sie uns den
Spawn-Standort des Spielers als diesen festlegen. Und der Grund,
wenn Sie verwirrt werden, hören Sie
manchmal das
Spawnen von Set-Playern. Lass mich es dir zeigen. Hier hätten Sie also Nachricht
und keine Nachricht
auswählen können. Und das ist eine
Blueprint-Interface-Funktion. Und vielleicht fragst du dich, warum hast du diese Nachricht
nicht hier ausgewählt? Warum hast du diesen ausgewählt? Es gibt nicht so, als ob Sie
so sind , ist die Blaupause, in der
wir ihn programmieren. Und wenn die
Blueprint-Interface-Funktion, wenn sie tatsächlich
innerhalb der Spielerbasis erstellt wird. Wenn ich also dazu gehe, die Schnittstellen und
die Spielerbasis hier, kannst
du sehen, dass wir es bereits innerhalb des
hier gesetzten Spieler-Spawn-Ortes
geschafft haben. Wenn Sie es innerhalb
des Blueprints aufrufen , in dem Sie es erstellt haben, müssen
Sie nicht wirklich eine Nachricht auswählen. Die Botschaft ist nur
für die Kommunikation gedacht. Und du hättest
eine Nachricht ausgewählt, wenn du sie vom
Player-Controller von woanders
aus
angerufen hättest, hättest
du eine Nachricht ausgewählt. Aber wenn Sie
es in sich selbst anrufen, dann
wähle ich dieses einfach ohne die Nachricht aus. Okay, jetzt
spawnst du den Spieler. Und denk dran, dass wir immer noch den Gott-Modus
haben. Wir haben
den Gott-Modus hier nie entfernt. Der Gott-Modus wird
nur entfernt wenn du nicht stirbst,
sondern wenn du tot bist. Setze das niemals auf „false“. Lassen Sie mich also diesen
Code hier kopieren, dass die Verzögerung, jetzt nach der Verzögerung hier. Also der Grund, warum ich den Spieler in Verspätung
gebe, also antworten wir und du hast tatsächlich den
Gott-Modus, während du reagierst, weil ich
nicht sofort
Schaden erhalten möchte ,
wenn ich antworte. Also gebe ich dem
Spieler die Chance zu antworten und keinen Schaden zu erhalten. Und ich glaube, das war's. Ich weiß nicht, ob ich etwas
vergessen habe. Lass mich eigentlich
einfach auf Play klicken. Mal sehen, was passiert. Wenn wir also sterben, lass mich tatsächlich zum Schwein gehen. Wir sterben hier schneller. Wir sind tot und sagen, dass du von Pig Press getötet
wurdest. Okay. Wenn ich auf Okay drücke, siehst du, dass ich antworte. Und lass mich einfach wieder sterben
, um zu sehen, ob das abgehört ist oder nicht. Es funktioniert richtig. Jetzt können Sie wieder sehen, dass
diese abhören. Sie können
erneut versuchen, die Kollisionsfelder neu zu
skalieren und zu verkleinern. Dies sind diejenigen
, die
sie manchmal hier in den Rampen zum Bug bringen . Wenn ich jetzt auf Okay klicke,
siehst du, dass ich antworten kann. Ich möchte tatsächlich, dass mein Spieler blinkt, wenn ich
antworte, weil ich wissen
möchte , dass ich im
Gott-Modus bin, wenn ich antworte. Lassen Sie mich also diesen
Blinkeffekt nehmen
, den wir hier gemacht haben, und wir haben ihn hier hinzugefügt, tatsächlich Schaden durch Effekte. Lassen Sie mich hier eine Kopie
davon kopieren und lassen Sie es
mich gleich
danach einfügen, kurz zuvor. Eigentlich, gleich nachdem ich geantwortet
habe, kann ich es einfach hier machen. Wenn ich also antworte, spiele
ich diesen Effekt. Und dann entferne ich diesen
Gott-Modus nach diesem Effekt. Lass mich auf Play klicken. Und wenn ich sterbe, klicke ich auf Okay. Du kannst sehen, dass ich
diesen Gott-Modus-Effekt habe. Und dann antworte ich, ich denke, das ist ein kleiner Effekt. Ich werde
diese Kollisionsboxen tatsächlich verstecken. Auch hier brauchen wir
sie nicht mehr wirklich , das glaube ich nicht. Also lass mich auf
diese Angriffskollision klicken und sie im Spiel ausblenden. Und geh
hier in die feindliche Basis und klicke auf diese Kollision und verstecke sie
auch im Spiel, kompiliere und speichere alles. Jetzt, wo alles
funktioniert, können
Sie versuchen, das Spiel zu testen und sehen, ob alles so
funktioniert, wie es sollte. Wir können diesen Kunden immer aufnehmen. Bevor ich fertig bin, möchte
ich eigentlich mit beiden
schreiben. Sehen Sie hier, ob sowohl der Client der Server
sehen können, was los ist. So können Sie sehen, dass der Server
tatsächlich sehen kann , dass der Client gestorben ist. Und da der Server jetzt ist
es ein bisschen schwierig, beide auf
einem Bildschirm zu
haben . Jetzt sind beide gestorben. Und wenn ich auf OK klicke, während
der Client antwortet, okay, und wenn ich auf
OK klicke, ist es der Server, ich antworte auch und blinke richtig. Wenn ich angreife,
funktioniert das, wenn ich hier nachschaue, es funktioniert, als ich die Leiter
aufgewacht bin. Es funktioniert für beide. Okay. Also lass es mich jetzt
als Kunde versuchen. Spielen Sie als Kunde, um
sicherzustellen , dass alles
funktioniert, bevor
wir Tsarina
hier auf diesem Client auswählen. Und beim zweiten Kunden wähle
ich Luke aus. Und lass mich einfach auf diesen Feind
hineingehen. Hier. Ich bin tot. Ich laufe hier hin. Das habe ich auch getan. Okay. Es scheint also, als würde
jetzt alles funktionieren. Und ich gehe hoch. Der Brief funktioniert auch. Okay, also jetzt keine Bücher, also ist das cool. Alles funktioniert
so, wie es sollte. Also sind wir bereit weiterzumachen
und lassen uns jetzt tatsächlich am Feind
arbeiten, damit
wir den Feind töten können.
87. Beheben bestehender Fehler: Wir fahren fort, wir haben ein paar Bücher, die wir reparieren müssen. Und ich habe sie
alle hier geschrieben. Also als ich
das Spiel getestet habe und
die sieben Dollar gefunden habe und ich denke, wir sollten sie reparieren,
bevor wir fortfahren. Der erste ist also ein
Todesfehler während des Angriffs. Wenn ich also hier rübergehe
und das Spiel spiele, und ich bin in die Feinde gegangen, also lass mich hier einfach
meine Gesundheit verlieren. Wenn ich
jetzt angreife, bevor ich sterbe,
siehst du, dass ich so spawne. Und das
soll ein Grab sein. Und wenn du willst, kannst
du versuchen,
das selbst zu beheben. Versuche zu überlegen, wo
könnte das sein? Wie? Was läuft
das vorher? Denn wenn wir angreifen und
gleichzeitig sterben, kehren
wir in diesen untätigen Zustand zurück. Versuchen Sie also zu überlegen, wenn Sie
selbst wollen , wo dieser Fehler auftreten
könnte. Und Sie können einen
Print-String-Knoten verwenden , um Ihren Code zu debuggen. Immer schön, einen
Print-String-Knoten zu verwenden. Klicken wir auf Okay und
lassen Sie uns das verlassen. Um diesen Fehler jetzt zu beheben, gehen
wir zum
Angriffscode,
da er im Wesentlichen passiert
, wenn wir angreifen. Also setzen wir den Angriff auf wahr
, wenn wir angreifen. Und dann nach einiger Zeit sterben wir dazwischen hier, also greifen wir an und sterben. Und denk dran, dass wir das hier haben. Dies ist der Angriff ist abgeschlossen. Wir verzögern den Code
mit dieser Animation und nach dem Code
setzen wir ihn auf false. Wenn also der Angriff auf false gesetzt
ist, versetzt
es unseren Charakter
in den Ruhezustand, also passiert es tatsächlich hier. Der einzige Weg, wie wir
nach der Tiefe gesucht haben, ist hier
oben, damit wir nicht
angreifen können, solange wir tot sind. Aber was ist, wenn wir bereits angegriffen haben? Was ist, wenn wir schon
hier sind und dann gestorben sind? Das wird gerade nicht
überprüft. Also
enden wir hier und am
Ende befinden wir uns im untätigen Zustand. Also können wir versuchen,
dieses Jahr zu nehmen ist tot, dieser Boolean und
versuchen auch hier zu überprüfen. Sie können entweder hier nachsehen
oder hier nachsehen. Angreifen muss also falsch sein. Also lasst es uns tatsächlich hier machen. Ich denke, das ist der bessere Weg. Also hier greift man an. Wenn es auf „false“ eingestellt
ist, überprüfen Sie unsere Verwendung. Bist du tot? Lassen Sie uns das eigentlich
bemerken, denn das ist, glaube
ich, besser für mich selbst zu lesen . Wenn du also nicht tot bist, kannst du
wieder einfach
weitermachen und idol. Wenn Sie jedoch tot sind, kopieren
wir dies und bringen
Sie in die Todeszustände. Einfach so und das
sollte das Problem beheben. Wenn wir also jetzt spielen
und ich die Gesundheit verliere, greife
ich in der Zwischenzeit an. Whoops, ich bin nicht gestorben. Ich nehme es in der Zwischenzeit. Sie können sehen, dass es das Problem
behoben hat. Und wenn ich auf Okay klicke, antworte
ich. Okay, das war also das erste
Buch, das wir hier repariert haben. Das ist also behoben. Der nächste ist, dass die
Tiere auf der Rampe stecken bleiben. Und wenn ich einfach ein paar
Tiere
kopiere und das haben wir schon
vorher da drin gesehen. Andere Lektionen und ich
möchte dieses Problem nur beheben. Wenn ich also einfach
eine Menge Feinde kopiere,
fügen Sie das hoffentlich sehr schnell ein. Jetzt können wir hier sehen, dass dieses Schwein
hier auf der Rampe feststeckt. Das Schwein
läuft gerade ins Zimmer. Und die Schnecke macht
das manchmal. Also die Schnecke, Sie können sehen, wie
die Schnecke hier gelöscht wird. Also werden sie manchmal
gepumpt. Lassen Sie mich
das tatsächlich beheben, bevor ich fortfahre, ich
ärgere mich nur ein bisschen über diesen Fehler. Also lasst uns zu den Feinden gehen. Und die Sache ist, dass
wir vorher tatsächlich
eine Lösung gefunden haben, also müssen wir einfach dasselbe
tun. Und die Lösung war, wenn ich zum Beispiel nur
zur Schnecke gehe , können wir
damit beginnen. Die Kollision hier
ist eigentlich diese Kapsel. Hier ist, was es macht. Wenn wir also die
Größe dieser Kapsel vergrößern, wird
dies den Fehler verhindern. Also stellte ich fest, dass 35 mal 35 Länge, diese Kapsel auf mindestens
35
erhöht , das Problem
beheben wird. Und denk dran
, dass du die Schnecke runterziehen musst. Schnecke wird so
schweben. Also die Schnecke runterziehen,
vielleicht so etwas. Vielleicht ist das zu
niedrig. Vielleicht ist
das vielleicht ein bisschen zu niedrig. Ich glaube. Minus, minus 25 vielleicht. Okay, also so etwas. Jetzt ist die Schnecke hier oben
und du wirst feststellen, dass die alte
Schnecke nie mehr bockt, wenn du sie einfach
für einige Zeit laufen lässt. Und lass uns das
Gleiche mit den Schweinen machen. Also geh hier zum Schwein. Und ich
klicke
hier auf die Kapsel und vergrößere die
Größe auf 35 um 35. Nimm dieses
Schwein auch ein bisschen mehr runter. Und lass mich versuchen zu sehen,
wie das aussieht. Es läuft auf dem Boden. Es sieht gut aus. Und wenn wir es jetzt für einige Zeit
spielen lassen, wird
es nicht mehr stören. Also wenn die Schweine gehen werden. Also diese Rampe kann man sehen,
dass sie gut laufen. Das sollte also jetzt behoben werden, das ist das Richtige dafür. Vergrößern Sie also die Kapsel und ziehen Sie dann dieses Schwein nach unten. Sie sehen also aus, als würden sie immer noch auf dem Boden
laufen. Das behebt also das zweite
Problem, das wir hier haben. Die dritte ist
, dass die Feinde die Angriffskollision
nicht erkennen. Wir hatten schon einige Probleme
damit, aber ich habe es bis jetzt nicht
sehr ernst betrachtet. Sie können sehen, ob ich hier durch Technologie
angreife, Sie können sehen, dass mein Angriff
nicht erkannt wird. Und sie erkennen
meinen Angriff nur , wenn ich sehr nahe komme. Wenn ich also
im Feind stehe, erkennen
sie mich tatsächlich. Aber wenn ich ein bisschen vom Feind
entfernt bin, werden
sie eigentlich nicht
angegriffen. Okay, also müssen wir das reparieren. Also habe ich mein Bestes versucht,
diese Kollision,
SR-Angriffskollision, zu verwenden . Aber da diese
Kollision hier
den Code hat , in dem wir tatsächlich zur Schnittstelle
zurückkehren, lassen Sie mich die
Schnecke und das Schwein schließen. Und wenn ich hier zur Kollision gehe,
denke daran, dass wir diesen Code erstellt haben,
in dem wir Schaden anrichten. Und so
wird diese Kollision immer Schaden anrichten. es also am
besten tun,
müssen wir tatsächlich einen anderen
namens Head Box machen ,
wo wir den Feind treffen. Lassen Sie uns also einfach
eine neue Kollision erzeugen. Und lassen Sie uns mit diesem eine kugelförmige
Region erstellen, nennen
wir es Hitbox. Also werden wir es einfach als Hitbox
benutzen. Ich
ziehe es einfach von
dieser Kollision hier
zu dieser Kapsel raus . Das erste ist also
hier in die Kapsel zu gehen. Lassen Sie uns also unsere Kollisionen
überprüfen , um sicher zu sein, dass
wir diese Hitbox haben. Also die Kollisionen
für diese Kapsel, das einzige, was wir mit dieser Kapsel
wollen, und Sie können hier
den Grund sehen, warum ich es bin, ich erstelle diese
Hitbox und ich benutze
diese Kapsel nicht , weil
Sie sich daran erinnern diese Kapsel haben wir hier tatsächlich
die Größe vergrößert. Dies ist die Größe der
Kapsel und ich denke, die Hits, Hitbox ist viel zu groß,
als könnten wir diese
Kapsel benutzen, um den Feind zu treffen. Aber ich denke, dieser Hit Bucks ist viel zu groß und
ich mag es nicht. Sie können also sehen, ob ich
darauf klicke und im Spiel ausgeblendet klicke Wenn ich es entferne, kannst du sehen,
wie groß diese Trefferbox ist. Und ich denke, das
ist viel zu groß, wie ein
Kopf für eine Schnecke. Also werde ich
diese Trefferbox nicht benutzen und wir können die Größe
verringern, sonst wird
es
in der Rampe stecken bleiben. Also lass es mich einfach wieder hier
in der Interface-Kapsel
verstecken . Eigentlich war es hier in
der Schnecke, die Kapsel, und ich werde
sie einfach wieder im Spiel verstecken. Okay, willkommen zurück
in der feindlichen Basis. Also was wir mit dieser Kapsel
machen wollen, Lasst uns zuerst alles ignorieren. Was Sie nicht ignorieren
möchten, ist die weltstatische und
die Weltdynamik. Und das soll nur nicht
den Punkt durch den
Boden fallen lassen , weil der Boden, diese
Bodenkollisionen hier unten, weltstatisch
sind. Und wenn du das einfach
entfernst, fällst du tatsächlich zu Boden. Und da ich das nur für die Kollision
dieser Kapsel hier verwende , werde
ich entfernen und Überlappungsereignisse
generieren. Ich verwende es nicht
für Überlappungsereignisse, also verwende ich es nur, um
diese Brunnen statisch und
dynamisch zu blockieren diese Brunnen statisch und , damit sie nicht durch den Boden
fallen. Im Wesentlichen verwenden wir
diese Kapsel
nicht wirklich für
Überlappungsereignisse. Gehen wir runter zu den Heat Bucks. Also diese Kopfbox klicke
ich auf Nein, kann der Charakter aufsteigen? Ich klicke auf „Nein“. Und ich setze das auf Kosten ein. Whoops, keine Kollision. Ich klicke hier auf Control
Z und custom. Und ich werde alles
außer der Weltdynamik
ignorieren . Und denken Sie daran, hier im Spieler, also greifen sie
Koalition an, die wir haben. Wenn Sie nach unten gehen und sich den Objekttyp
ansehen, lohnt
es sich dynamisch. Und deshalb überschneide ich mich mit
Dynamic,
weil ich mich mit meiner
Angriffskollision
überlappen möchte . Dies ist auf Weltdynamik eingestellt. Okay? Das
überlappe ich also Listen. Jetzt ist das richtig und
lassen Sie mich zum Sprite gehen,
stellen Sie sicher, dass es keine Überlappungsereignisse
generiert. Und ich gehe hier zur Kollision. Das ist es, was unseren Teich
beschädigt, der unser Spieler ist. Und ich werde das tatsächlich ändern statt der Weltdynamik. Ich werde
das in ein **** ändern weil
wir
diese starke Kapsel im Wesentlichen nicht verwenden . Also kann ich das genauso gut auf einen Punkt
ändern. Das ist also im Grunde
unsere Po1-Kollision hier. Okay, also lasst uns das merken. Denken wir daran, dass wir es hier auf einen Pfand
gesetzt haben. Also lass mich jetzt zur
Spielerbasis gehen. Und hier auf der
Kapselkomponente, einfach darauf, dass Sie alles noch einmal
ignorieren. Das einzige ist
die weltstatische und die Weltdynamik, mit der
Sie sich überschneiden. Und denken Sie daran, wir haben gerade diese
geändert, diese Kollision, die uns zu **** schaden
wird. Also
müssen wir uns tatsächlich
anderswo damit überschneiden , um
keinen Schaden daraus zu bekommen. Also
überschneiden wir uns damit. Und für das Sprite wird
es
keine Überlappungsereignisse erzeugen. Und für diese Angriffskollision wird
es sich nur
mit der Dynamik der Welt überschneiden. Und lasst uns zurückgehen und
sehen, ob das stimmt. Es überschneidet sich also
mit der Weltdynamik. Und das ist unsere Hitbox und unsere Head Box ist
auf Weltdynamik eingestellt. Das ist also richtig. Es überlappen
sich jetzt , denn das
ist was dynamisch, das ist was dynamisch. Und sie überschneiden sich beide
mit der Weltdynamik, was bedeutet, dass sie sich
überschneiden. Diese Kollision
sollte also jetzt vollkommen korrekt sein. Also lasst uns jetzt auf Play klicken
, bevor wir das tun, du kannst auf diese
Angriffskollision klicken. Und du kannst versteckt
in Spielen entfernen, damit du es sehen kannst. Und es kann auch zum Feind gehen, klicken Sie auf die Kopfbox. Und du kannst versuchen, ein verstecktes Spiel zu
entfernen. Und lasst uns auch zum Schwein gehen
und die versteckte Box anpassen. Und für diese Kopfbox werde
ich einfach tun, lass uns vielleicht das Gleiche machen wie diese
Kollisionsgröße hier, also 25. Und wieder können Sie die
Umschalttaste gedrückt halten und
mit der rechten Maustaste klicken , um sie hier zu kopieren und einzufügen. Und dann werde ich
den Ort hier gleich setzen. Also Rechtsklick. Du kannst es
hier kopieren, hier einfügen, und jetzt ist die Kollision da. Das ist also die Kopfbox. Machen wir das
Gleiche für die Schnecke. Lassen Sie mich also zum Ansichtsfenster gehen, klicken Sie auf das Head Box tatsächlich
die Kollision kopieren Sie dies, fügen Sie es in das Kopffeld ein. Kopiere das hier oben, das ist der Ort, und
füge es in die Kopfbox ein. Klicken wir auf Jetzt abspielen. Und jetzt können Sie sehen, dass dies
die Head Boxen sind , die
viel besser sind als zuvor. Jetzt kannst du sehen,
dass ich so beschädigt werde. Okay, das ist also nett. Lass es mich nochmal versuchen. Du siehst, dass ich hier tatsächlich beschädigt
werde. Obwohl ich
bei dieser Kollision bin, ist
das eigentlich ein weiterer Fehler, also lass dich hier nicht ausgetrickst. Also lass mich eigentlich einfach sehen, du siehst hier, ich werde gerade nicht
beschädigt. Wenn ich so in meiner
Angriffskiste stehe, kannst
du sehen, dass es funktioniert,
also kollidiert es nicht. Es gibt jedoch einen kleinen,
es gibt einen weiteren Fehler. Und wenn ich jetzt angreife,
siehst du, dass ich meine Feinde
treffe. Okay, also funktioniert es jetzt voll. Es gibt jetzt einen weiteren Bug. Du siehst, ob ich beschädigt werde. Jetzt werde ich tatsächlich an meiner Angriffsreligion
beschädigt, was nicht passieren soll. Dies geschieht aus irgendeinem Grund nur dann, wenn ich beschädigt werde. Du siehst es. Aber wenn ich das Spiel
einfach zurücksetze, ist
dies tatsächlich unser nächster Block. Also wenn ich das Spiel einfach zurücksetze
und einfach hierher gehe,
siehst du, dass ich nicht beschädigt
werde. Ich muss
einige der Feinde entfernen. Eigentlich habe ich viel zu viele. Lassen Sie mich jetzt einfach
viele von ihnen löschen. Es ist ein bisschen, es ist ein bisschen schwer mit all
diesen Zentimetern zu zeigen. Also lass mich stattdessen einfach eine
Schnecke hier stecken. So etwas. Und lass mich auf Jetzt spielen klicken. Wenn ich jetzt auf Schnecke stehe, kannst
du sehen, dass ich nicht an
meiner Angriffskollisionsbox beschädigt
werde . Immer wenn
wir jedoch beschädigt werden, werden
wir plötzlich beschädigt. Noch ein Angriff, Kollisionsbox. Es gibt einen kleinen Bug. Plötzlich ändert sich. Und das ist eigentlich
unser Nächstes. Also hier die gegnerische
Angriffsreichweite. Plötzlich greift es
uns bei unserer Angriffskollision an. Also habe ich eine halbe Stunde damit verbracht einen Blick darauf
zu werfen,
was das sein könnte. Und ich dachte, es wären
vielleicht die Kollisionskästen. Und das stimmte eigentlich
nicht wie die Kollisionsboxen,
sie sind richtig. Es macht keinen Sinn
, dass es dort ein Bug ist. Und eigentlich ist das ein kleiner, kleiner, alberner Fehler
von meiner Seite. Vielleicht hast du dich schon
daran erinnert während du die Videos machst. Ich habe es vielleicht vergessen, aber du kannst versuchen, es
selbst zu reparieren, wenn du willst. Aber plötzlich, wie
wenn wir angegriffen werden, empfangen
wir plötzlich
gerade beim Sex auf unserer Kollisionsbox. Und der Grund
dafür ist, wenn Sie
zum Feind gehen , gehen Sie
zum Ereignisdiagramm. Denken Sie daran, dass wir diese
Kollisionsereignisse Wenn unser Spieler also mit dem Feind
kollidiert, wir Schaden an. Das passiert also jetzt
richtig, wie von Anfang an. Also wann immer wir
in den Feind gehen, und das bedeutet
nicht unsere Kollisionsbox, aber wir werden nicht mit unserer Kapsel in den
Feind gehen. Plötzlich
richten wir auch diesem Schaden zu. Dies liegt daran, dass wir
nie gesagt haben, wann wir
aufhören sollen, Schaden anzurichten, da
wir diese Endüberlappung haben. Aber das macht nicht wirklich so
, als wäre es richtig. Aber hier oben, denken Sie daran, dass wir damit begonnen
haben,
beschädigt zu werden. So läuft es. Das ist also auf wahr. Und wenn es stimmt,
wird es Schaden anrichten. Aber wenn wir es auf false setzen, haben
wir nie angegeben, was hier
zu tun ist, wenn
es auf false eingestellt ist, sodass es ständig
Schaden anrichtet. Wir müssen es tatsächlich sagen, dass er keine
Schäden mehr anrichten soll. Also lass mich das machen. Und das ist nur ein
kleiner Fehler von mir. Ich glaube, ich habe gerade in diesem Video
geredet
und habe es nicht bemerkt. Lassen Sie mich dies
auf eine Variable bewerben, dieser Timer befördert und nenne
es Schaden anwenden, handhaben. Okay, also nehmen wir
diesen Griff und sagen Clear und Invalidate
Timer Nach Handle. Jetzt wird
dieser Timer
jedes Mal angehalten , wenn wir dies auf false setzen. Jedes Mal, wenn wir die Komponente
verlassen, setzen
die Kollisionskomponenten
sie auf false und es wird
keinen Schaden mehr anrichten. Also müssen wir
erneut damit kollidieren, um den Schaden anzurichten. Versuchen wir also,
auf Jetzt spielen zu klicken. Und jetzt. Dies funktioniert wie zuvor
richtig. Aber wenn ich beschädigt
werde und davor stehe, sieht
man, dass es immer noch funktioniert. Und das liegt daran,
dass es wieder in
meine Kapsel laufen muss, bevor
es Schaden anrichten kann. Okay, also funktioniert das
jetzt so, wie es soll. Das war der nächste Bug hier. Das ist behoben. Der nächste ist, dass der Spieler am Seil nicht beschädigt werden
kann. Wenn ich also auf dem
Seilsymbol stehe, wurde das beschädigt, und das ist ein sehr
einfacher Fehler zu beheben. Wenn du also einfach zur
gegnerischen Basis
gehst und hier zur Kollision
gehst, als ob der Feind mit dem ****
kollidiert,
aber du willst auch
mit dem Kunden kollidieren, der Spieler ist aber du willst auch
mit dem Kunden kollidieren . Denk dran, wir haben
diese Gewohnheit angefertigt. Das ist also einfach behoben. Das war also eine sehr schnelle Lösung. Okay, also die andere
Sache ist, lass mich einfach mehr Feinde
um die Schläge hinzufügen , damit wir den Dollar viel schneller
sehen können. Also lass mich auf Play klicken. Okay, also wenn ich hier stehe, kannst
du sehen, was das Problem ist. Ich werde so beschädigt. Aber ich möchte
meinen Spieler tatsächlich vom Seil hier schieben. Wenn ich also einfach zu meiner Ebene gehe, Layerbasis und wir
haben diesen Schaden, erhalten wir Schaden, aber ich möchte, dass mein Spieler
nicht mehr am Seil ist. Was ich
hier beim Klettern machen werde, ich nehme
das ist Klettern. Denken Sie daran, dass wir uns hier
in unserem Klettercode ausgedacht
haben, wir haben gemacht, dass Cholin
ist, wann immer
Sie klettern. Also wenn ich es tatsächlich finde. Jetzt haben wir es hier unten
geschafft. So klettern
hier, klettert. Wir haben gemacht, dass das eine
Set klettert. Also lasst uns
das hier unten benutzen. Fragen Sie also einfach den Code, ob Sie Schaden erhalten. Klettern Sie
schon, wenn Sie es sind, wollen
wir etwas anderes machen. Wenn nicht, machen
wir einfach alles, was wir vorher gemacht haben. Wenn du also schon
kletterst, lass mich das klettern und setze es auf falsch, weil ich nicht mehr klettern
will. Und dann lass uns einfach
zurückgehen und was auch immer
tun lass uns versuchen zu
sehen, was das macht. Also lass mich auf das
Seilstand hier gehen. Und du kannst sehen,
dass es richtig funktioniert. Es gibt einen kleinen Bug, den wir jetzt
mögen, wenn wir uns bewegen, es ist, als würde man
unsere Flipbooks pausieren , damit die
Animationen nicht abgespielt werden. Und denken Sie daran, dass Sie
im Kunden etwas hier hatten,
wenn
Sie zu Ihrem Code zurückkehren . Wir haben „Pause“, „
klettern“, „Buch“ genannt. Und wir benutzen diese Pause, wenn wir uns nicht am Seil bewegen, wir posieren das
Flipbook, damit es nicht so
aussieht , als würdest du klettern, während
du still stehst. Also müssen wir das auch machen. Also lass mich hier runter gehen
und einfach hier weitermachen. Anstatt das einfach zu tun, können
wir es tun, wieder hochklettern. Hervorragend in diesem hier. Es kann hier klettern. Nehmen wir das auch. So kann Set klettern, um falsch zu sein. Set klettert, um falsch zu
sein und zu setzen. Mal sehen wir uns die Pause hier an. Pausieren, klettern,
Buch umdrehen, um falsch zu sein. So klettert sowohl der Can Climb Pause-Binding Flip
Book ist auf false gesetzt. Lassen Sie mich also einfach den
Code verschieben, so etwas. Also machen wir das,
wir entfernen zunächst nur den
Klettermechaniker. Und das sind wir, ich glaube,
wir können jetzt loslegen. Versuchen wir also, das Seil
herunterzuspielen. Und du kannst sehen, dass es jetzt richtig
funktioniert und ich kann wieder
aufs Seil springen. Und wenn ich das mache, bleib
hier und werde beschädigt. Wenn diese Schnecke mich trifft. Wenn ich also hier beschädigt werde, sieht
man, dass es immer noch funktioniert. Okay, also dieser Bug ist jetzt behoben, Tod und Schaden. Und es gibt eigentlich noch
ein kleines Buch, wie wenn du am Seil
stehst. Du siehst, ich sehe so aus. Wenn ich tatsächlich am Seil sterbe. Und das passiert
im Wesentlichen denn wenn wir hierher zurückkehren und zu isClient gehen, steigt
tatsächlich die Unwrap Funktion,
wenn ich sie hier finden kann. Also ist es, wenn es
klettert ist falsch. Es wird
es hier darauf einstellen. Lass mich einfach verstecken. In diesem Jahr. Es wird unser
Jump-Flipbook hier einstellen. Aber das wollen wir nicht tun. Wir wollen den Tod spielen. Versuchen wir das zu nehmen. Boolean ist hier tot. Lass uns nachsehen, ob du jetzt schon
tot bist, eigentlich sage ich
das nicht, denn das ist besser zu lesen. Also lasst uns die vorerst
verbinden. Und jetzt sagen wir, kletterst
du? Ja, das bin ich. Bist du nicht ganz so, wenn
du von
einem Feind getroffen wirst und vom Seil
fällst, dann wird das falsch sein. Du kletterst nicht mehr. Okay, wir
spielen nicht mehr Bing. Dann wirst du
nachsehen, bist du tot? Wenn du nicht tot bist, okay. Lass uns weitermachen und einfach dasselbe
tun wie zuvor, wo du abfällst. Wenn Sie jedoch tot sind. Also lass mich das einfach herziehen. Wenn du das bist, lass mich das einfach machen. Wenn du das jetzt bist,
lass uns das hier nehmen, den eingestellten Bewegungsmodus. Und ich werde es auf laufen lassen, anstatt wieder auf Kollision
zu fallen, wir müssen zu
dieser Bauerkollision zurückkehren denn bevor wir
der Kletterspieler waren, müssen
wir zurück zum
Bauern Kollisionskanal hier. Und anstatt das
Flipbook auf Jump-Animation einzustellen, können
wir einfach den Bewegungsmodus sagen. Und diese Bewegungsmodi setzen Bewegungszustände für den Spieler hier in
der Int-Spielerbasis, stellen Sie den
Bewegungsmodus auf Todesfälle ein. Jetzt sind wir also tot, weil
das falsch sein wird, was bedeutet,
wenn du nicht tot bist, wirst du dasselbe
tun. Wenn Sie jedoch das tun,
tun Sie dies hier unten wo Sie den Gehmodus oder den Bewegungsmodus auf Gehen
einstellen, und dann werden Sie es hier auf Tode setzen. Lasst uns also diesen Code spielen. Lassen Sie mich eigentlich nur
ein bisschen mehr Feinde spawnen , nur damit
wir es schneller testen können. Und jetzt werden wir hier ein bisschen
beschädigt. Und jetzt kann
man am Seil sehen, dass ich eigentlich ein Grab bin. Jetzt funktioniert das richtig
und wenn ich auf Okay klicke und ich herumlaufen kann, kann ich dasselbe tun
wie zuvor. Ich werde von der
Leiter gestoßen. Wenn ich drauf stehe. Ich meine, du kannst
einfach dazu bringen, dass dein Spiel nicht in den Brief geschoben wird. Das liegt an dir. Sie können auch gerade Schaden
unter Brief erhalten. Nun, ich denke, es sieht
viel besser aus, wenn du es einfach vom Brief
abschiebst und dieses Grab bekommst,
wann immer du stirbst. Das funktioniert jetzt also
richtig. Das war also der sechste. Und der siebte ist Reagieren
Okay, Button ist fokussierbar. Was ich damit meine
ist, wenn ich
hier oben auf OK klicke und dann sterbe ich. Und das ist etwas in der Benutzeroberfläche. Also fy, dy und klicke auf die Leertaste
auf meiner Tastatur oder Enter. Du siehst, dass ich
auf den Button klicke. Wenn ich also auf Space klicke und wenn
du das nicht willst, möchte
ich
das nicht für dieses Spiel machen. Sie können also zur Benutzeroberfläche
gehen, zum Hauptmenü gehen. Nun, in diesem
Hauptmenü, das Menü I. Und hier für diese Schaltfläche,
wenn Sie darauf klicken,
gibt es etwas namens
fokussierbar und sagt die Schaltfläche
manchmal nur mit der Maus
klickbar sein
sollte und niemals
Tastatur fokussierbar Und das ist es, was passiert. Wenn ich also mit der Maus
darauf klicke, und später
können wir einfach mit
der Tastatur wie
Leerzeichen klicken , um zu klicken. Okay. Du kannst es behalten, wenn du es willst, aber ich werde es entfernen,
was bedeutet, dass ich das nur mit meiner Maus
anklicken kann. Ich kann nicht auf
meiner Tastatur oder einem Leerzeichen auf Enter klicken. Und manchmal ist es
nervig, als ob Sie ein Inventarsystem
haben, möchten
Sie nur mit
der Maus
auf die Registerkarten klicken und nicht mit
Ihrem Inter und Raum. Vielleicht versuchst du
ins Spiel zu springen. Und du kannst nicht springen weil das
fokussiert ist und es klickt, okay, anstatt zu
springen und so weiter. Also wird es
ein bisschen durcheinander bringen. Aber in diesem Fall ist
es in Ordnung, es
als fokussierbar zu haben , wenn man tot ist. Es kann also einfach auf
Leerzeichen klicken, um zu antworten. Aber ich glaube, ich entferne es einfach. Und ich lehre Ihnen
hier auch nur etwas über diese Interaktion bei, damit wir dies
entfernen können , ist fokussierbar und kompilieren und
speichern, und das war's. Wenn wir also einfach klicken, spielen
wir es tatsächlich auch als
Listened Server ab. Wir haben das nicht getan
, nur um
sicherzustellen , dass ich auf dem
Leiterbrief bin und das mache ich. Das sieht richtig aus. Und wenn ich einfach
den Kunden aufnehme und mal
sehen, was passiert. Lassen Sie mich das ein
wenig minimieren, damit es Platz gibt. Okay, jetzt
sind wir der Kunde und der Kunde
wird auch weggeschoben. Der Server kann das sehen. Okay, also
funktioniert es richtig. Und lass mich sehen, ob ich hier sterbe. Und das tue ich. Okay, das
funktioniert also richtig. Klicken wir jetzt auf Okay und schließen wir das ab. Alle Fehler sind also
behoben und Sie können sehen dass
es nicht allzu
lange dauert, um diese Fehler zu beheben, aber immer schön, Ihr Spiel
auszuprobieren. Wenn Sie debuggen möchten, verwenden Sie den Print-String-Knoten, versuchen Sie zu sehen, ob es sich um
Ihre Kollision handelt, und
versuchen Sie, sich mit Booleans zu erkundigen. Also zum Beispiel, wenn die Spieler, dass wir keine bestimmte Aktion machen
wollen. Es gibt also einige Dinge, nach denen
Sie suchen können. Und jetzt kann ich das schließen. Wir haben alle Bugs behoben. Lasst uns alles speichern und lass uns zur
nächsten Lektion übergehen.
88. Player auf dem Tod entfernen: Lassen Sie uns nun den
Feind dazu bringen,
den Spieler zu jagen , wann immer
der Spieler das ist. Gehen wir also zu unserem Blueprints-Ordner und zum Feind und innerhalb der feindlichen Basis. Also drinnen haben
wir diese Logik in der die Feinde den Spieler
jagen, aber der Feind jagt immer noch den Spieler, wann immer
die Feinde,
die die Spieler sind , die wir so machen
müssen Der Feind hört auf den Spieler zu
jagen,
wann immer die Spieler das haben. Also lasst uns das hier machen. Wir haben diese Logik
, wenn wir die KI bewegen, also bewegen wir uns zu dem
Charakter und dem, was der Feind den
Spieler hier bei Erfolg erreicht. Anstatt einfach direkt
zu gehen, versuchen
wir zu überprüfen, ob der
Spieler tot ist oder nicht, denn das haben wir bereits. Das wird also einfach sein. Lassen Sie mich
das alles zur Seite bewegen , damit wir hier etwas Code
schreiben können. Was ich tun möchte, ist nur zu
prüfen, ob der Spieler das ist,
denken Sie daran, dass wir
diesen Spieler-Controller bereits haben. Und wir können sagen, er wird
kontrollierter Bauer. Hier brauchen wir einen Verweis
auf die Spielerbasis. Sagen bekommt also Spielerreferenz. Also genau wie das, was wir vorher
gemacht haben. Und lasst es uns hier verbinden. Und hier möchte ich das benutzen , das
heißt, dass wir es geschafft haben. Also hol dir diesen booleschen Wert. Und lasst uns einen anderen Booleschen Wert
schreiben damit es besser
für die Lesbarkeit ist. Und lasst uns das nehmen
und Zweig sagen. Jetzt fragen wir, ob
der Spieler nicht tot ist, dann mach weiter und tu
alles, was du vorher getan hast. Also gehe zu diesem neuen Ort. Wenn der Spieler jedoch tot ist, möchten
wir etwas anderes tun. Lassen Sie mich diesen Code
ein bisschen näher ziehen. Jetzt, da wir diesen Code hier haben. Vielleicht so etwas. Okay, lass mich
das jetzt näher bringen. Okay, also haben wir diesen Code hier. Und jetzt können wir sagen, ob
der Spieler tot ist, also nicht tot ist falsch,
was bedeutet, dass der Spieler tot ist. Wir wollen uns nur daran erinnern, bevor wir das mit der Stub-Logik gemacht haben, also haben wir ihren
Verhaltensbaum gestoppt. Jetzt können wir einfach das Gegenteil tun. Also können wir einfach
mit der Logik beginnen. Es kann also einfach
kopiert werden, wenn Sie es einfach hier kopieren
möchten. Und lasst es uns verbinden. Also wollen wir mit der Logik beginnen. Schon wieder. Wir wollen
den Verhaltensbaum starten. Und jetzt wird es das Ganze noch einmal
durchlaufen. Versuchen wir also, auf
Play zu klicken und zu sehen, ob es funktioniert. Lasst uns hier als Server spielen. Also treffe ich hier
etwas. Ich werde getroffen. Im Moment jagen
die mich also. Und eigentlich lese ich
all diese beiden. Jetzt sterbe ich. Und mal sehen, ob sie gehen. Man sieht, dass sie nicht
wirklich viel mehr jagen. All das, was ich getroffen habe,
ging ihren eigenen Weg. Also
funktioniert es jetzt tatsächlich richtig. Jetzt haben wir aufgehört, den Spieler zu
jagen. Wann immer die Spieler,
die so erfolglos sind, prüfen
wir, ob der
Spieler tot ist oder nicht. Und wenn der Spieler nicht tot ist, werden wir
das Event hier schleifen ,
das wir zuvor gemacht haben. Wenn die Spieler jedoch,
dass wir gerade den Verhaltensbaum
ausführen, was hier ist,
was bedeutet, dass wir
laufen werden, die einen
zufälligen Ort finden und
was auch immer wir zuvor getan haben, bevor wir den Feind treffen .
89. Enemy und Respawn: hier in
der intimen Basis Lasst uns hier in
der intimen Basis nun am
feindlichen Tod arbeiten. Jetzt haben wir den Tod
des Spielers beendet, aber jetzt brauchen wir den feindlichen Tod. Also genau wie der Spieler, lass uns hier
ein neues, neues Event machen. Und lassen Sie es uns
einfach innerhalb
des Blueprint-Interface machen . Gehen Sie also zu den Schnittstellen
in der feindlichen Basis und fügen wir eine neue
Funktion namens Tod hinzu. Und wieder brauchen wir einen
Booleschen Wert wie zuvor, und nennen wir es B ist tot. Und das nervt wieder. Ich lösche es. Ich weiß nicht, warum es gerade
so häufig passiert. Sagen wir einfach, b ist tot. Und nennen wir es Tod. Genau wie der Spieler. Gehen wir jetzt zurück
zur Schnittstelle. Und hier drin Lasst uns
mit der rechten Maustaste klicken und
Tod sagen und dieses Ereignis anrufen. Dann brauchen wir wieder ein
benutzerdefiniertes Ereignis, das durch die Server läuft und sicherstellt, dass der
Client nicht betrügt. Und lassen Sie es uns zuverlässig durch
den Server laufen. Und jetzt können wir
den Server
hier oben betreiben , also Servertod. Und fügen wir
hier unten einen Booleschen Wert hinzu, damit wir sie verbinden können. Nennen Sie es ist, D ist
tot, genau so. Und jetzt können wir hier unten
etwas tun. Lassen Sie mich
dies also zu einer Variablen fördern. B ist tot. Und ich kann bereits denken, dass
wir dies in
eine Wracks ändern müssen ,
weil wir die
Todesanimation für die
spielen müssen ,
für den Feind und die Wiederholungsbenachrichtigung. Denken Sie daran
, dass wir alle Kunden über
den visuellen Wandel informieren werden. So können alle Kunden die Animation für
den
Feind sehen , wenn er stirbt. Das ist es, was wir gerade
brauchen. Also hier oben, jetzt werden wir hinzufügen, bevor wir hier etwas
tun, Lasst uns tatsächlich hierher gehen
und sehen, wann der Feind würfelt. Und ich werde
die nicht verbundenen Pins hier verstecken , damit es sauberer aussieht. Also hier berechnen wir die Gesundheit und
setzen sie hier ein, also ist es hier. Wir verzögern die Animation, wir stoppen die Bewegung. Dann stoppen wir die Logik. Und lasst es uns tatsächlich hier machen. Also möchte ich es gleich
nach dieser Verzögerung machen. Wenn wir also den Feind treffen, wird
es sich verzögern. Es wird beendet,
diese Hit-Animation abzuspielen ,
bevor sie stirbt. Es sei denn, du hast eine Kopie, wie kopiere diese und verbinde sie wieder hier und lass es mich hier platzieren nachdem diese Top-Logik
keinen Sinn ergibt. Es macht keinen Unterschied. Ich meine, es
macht keinen Unterschied. Aber ich denke, es ist sauberer, die Bewegung
zu stoppen, hat alle Logik
sofort vor dieser Verzögerung gestoppt. Manchmal macht es
keinen Sinn, Ihre Notizen zu organisieren, damit sie in der richtigen Reihenfolge
kommen. Und jetzt wird es
diese Animation verzögern und kurz
bevor ich anfange zu laufen, aber weil ich vielleicht tot bin, also möchte ich nicht sofort anfangen zu
arbeiten. Hier ist also eine gute Position , um zu überprüfen, ob der Feind tot
ist oder nicht. Bevor Sie also anfangen zu laufen,
prüfen Sie, ob der Feind
tot ist oder nicht, denn es macht
keinen Sinn zu
laufen, wenn Sie tot sind. Lassen Sie mich das alles auswählen und es hierher zur Seite verschieben, damit ich etwas Platz habe, mit dem ich arbeiten kann. Nehmen wir nun die Tierinformationen. Oder wir können
es einfach von hier nehmen und Pause sagen. Und dann können wir die
Gesundheit nehmen und gleich sagen. Und lass es uns den ganzen Weg
hierher ziehen und nicht verbundene Pins ausblenden. Ich kann einfach doppelklicken,
um einen Umleitungsknoten zu
erstellen und ihn viel sauberer zu machen. Okay, jetzt können wir es hier sagen, also wenn die Gesundheit gleich 0 ist, wollen
wir
die Todesereignisse spielen. Wenn es nicht 0 ist, machen wir einfach
weiter und tun, was
wir vorher gemacht haben. Also hier, wann immer es
0 ist und die Spieler tot sind, lasst uns das Todesereignis hier spielen. Und die feindliche Basis ist
tot ist auf wahr gesetzt. Und wir müssen auch
die Kopfbox und
die Kollision nehmen und diese
Kollisionen deaktivieren, nur um
sicherzustellen , dass wir keinen toten Feind treffen können. dies nehmen und überschneiden,
und Sie können erkennen
,
dass Sie hier unten sind, haben
wir etwas, das als gesetzte
degenerierte Überlappungsereignisse bezeichnet wird. Und was wir versuchen ,
ist, wenn Sie auf dieses Trefferfeld klicken und wenn Sie hier runtergehen, versuchen
wir nur, dieses zu
deaktivieren, Überlappungsereignisse zu
generieren, denn wenn es dieses deaktiviert wurde, wir können
keine Überlappungsereignisse erzeugen und daher können wir den Feind nicht mehr
treffen. Setzen wir das also auf „false“. Lassen Sie mich einfach kopieren, fügen Sie dieses
noch ein und verbinden Sie diesen. Also haben wir die Kopfbox und die Kollision auf „false“ gesetzt,
damit wir sie nicht treffen können. Und danach müssen wir eine
Reaktionszeit oder
eine Verzögerung haben , bevor wir den Feind wieder
hervorgebracht haben. Lassen Sie mich also einfach
eine neue Variable namens
Response Timer erstellen. Und lass uns schwimmen gehen. Und nehmen wir diesen
Reaktions-Timer und sagen „Verzögerung“. Jetzt werden wir
mit diesem Antwort-Timer verzögern. Und jetzt
stellen wir es einfach auf fünf Sekunden ein. Also lasst uns kompilieren und speichern. Und standardmäßig schreiben wir
fünf Sekunden so. Nach fünf Sekunden wird
der Feind reagieren. Wenn du willst. Sie können es
auch der Struktur hinzufügen. Also jeder, jeder Feind. Wird einen eigenen Reaktions-Timer haben. kannst du auch machen. Ich werde es einfach hier
reinlegen, momentan
nicht allzu wichtig. Also nur fünf Sekunden
für alle Feinde. Wenn Sie es jedoch dynamischer
gestalten möchten, können
Sie es hier
zur Struktur hinzufügen. Und für jeden Feind kannst du einen separaten Reaktions-Timer
haben. Nun, was wir
den Code mit jeder
Menge von Sekunden verzögern den Code mit jeder
Menge von Sekunden werde
ich das
hier unten verschieben, eigentlich so. Okay, nachdem wir es
hier um einige Sekunden verzögert haben, müssen wir die Gesundheit wieder
auf 100 setzen oder was auch immer
es vorher war. Weil es momentan immer noch 0 ist. Wir müssen tatsächlich definieren, was die maximale Gesundheit
für den Feind ist. Also muss ich zurück zur
Struktur, Tierinformationen. Und genau wie das, was wir für den Spieler
getan haben, fügen
wir eine neue Variable
namens Max Health hinzu. Und fügen wir es hier unten unter dieser Gesundheit hinzu und
ändert sich zu einem Float. Diese Gesundheit ist etwas, das wir während des
Spiels ständig
ändern, aber diese wird
statisch bleiben. Also lasst uns alles retten. Lassen Sie mich zu jeder Basis
Kompilieren und Speichern gehen. Und lass mich
zu den Feinden zurückkehren. Also zuerst das Schwein hier. Für das Schwein werde ich hier in der
Tierinformationsklasse Standardwerte
festlegen. Stellen wir die maximale Gesundheit
auf etwa 30 ein. Also fange genau so an. Und lass uns zurück
zur Schnecke gehen. Und für die Schnecke fangen
wir einfach mit 15 als maximaler Gesundheit an, genau wie diese.
Lassen Sie uns kompilieren und speichern. Und jetzt gehen wir zurück
zur feindlichen Basis. Und hier können wir
die Tierinformationen nochmal aufnehmen. Wir können Sets sagen. Denken Sie daran, dass
wir die Variable festlegen, also legen wir
diesen Gesundheitswert fest. Womit setzt es zurück? Wir setzen es mit
dem Maximum gesünder ein. Also lasst uns hierher ziehen
und Pause sparen. Nehmen wir die maximale
Gesundheit und stecken sie in die Gesundheit und verstecken
nicht verbundene Pins. Was wir also im Wesentlichen
tun, ist, dass wir
den maximalen Gesundheitswert nehmen , den wir hier in Schwein
geschrieben haben, Schnecke. Und wir setzen
diesen Gesundheitswert nur wieder auf
die maximale Gesundheit zurück , denn
jetzt hat der Feind reagiert und wir
wollen nur
, dass er diesen maximalen Gesundheitswert hat. Okay? So etwas hier. Und nachdem wir die Gesundheit festgelegt haben, wir daran, diese Tierinformationen zu
nehmen und sie hier auf die
Struktur wie diese zu setzen. Und dann wollen wir angeben , wo wir den Feind
spawnen wollen. Also lasst uns das hier unten
machen. Lassen Sie uns
hier eine neue Variable namens Response erstellen. Und lassen Sie es uns tatsächlich über
das Blueprint-Interface machen. Also lasst uns hierher gehen und eine
neue Funktion namens Response erstellen. Lassen Sie uns kompilieren und speichern. Gehen wir zurück zur feindlichen Basis. Ruf es hier an, antworte. Lassen Sie uns natürlich den
Server antworten lassen , indem wir seinen Server so aufrufen und ihn dann zuverlässig über
den Server laufen lassen. Und lasst uns die
Antwort hier oben ausführen. Was wir mit der Antwort
machen wollen, erinnern Sie sich hier in
unserem Verhaltensbaum einem definierten zufälligen Ort, wir
wollen eigentlich nur dasselbe tun. Wir wollen also nur
einen zufälligen Ort finden. So kann es tatsächlich sogar Paste kopieren, schreiben
wir es einfach
noch einmal nur zum Üben. Also lasst uns Schauspieler des Unterrichts
holen, Schauspieler des Unterrichts holen. Wir wollen nur unsere
Navigation Bound Mesh, nav, nav mesh,
Bounce-Volumen, dieses hier bekommen. Jetzt wollen wir die Grenzen der Akteure ermitteln, damit wir sehen
können, wie groß das
Navigationsnetz ist. Und damit lasst uns die
Tränen brechen, weil wir uns nur
für die X-Achse interessieren. Denken Sie daran, dass wir ein 2D-Spiel
machen, also interessieren wir uns nur für
die Größe hier in der X-Achse. Das Z oder das Y sind mir egal also werden wir es nicht tun. Wir möchten nur
diesen x-Wert hier verwenden. Was wir hier tun wollen, möchten
wir sagen, dass Sie einen zufälligen
erreichbaren Punkt im Radius erhalten. Das ist es, was wir verwenden möchten. Denken Sie daran, dass es andere gibt,
also erhalten Sie einen zufälligen Punkt
im navigierbaren Radius. Ich möchte diesen
jedoch im erreichbaren Radius verwenden, denn wenn die Feinde hier oben sind, ist
der Feind hier oben. Die Sache ist, wenn
Sie es hier im
Radius auf
erreichbaren Punkt eingestellt haben , wird es spawnen. Es wird
hier oben auf der Plattform weiter laichen, also gefällt es nicht
zufällig. Wenn du hier oben
Feinde hast, spawnen
sie nicht zufällig hier unten. Also möchte ich sie hier oben behalten. Und deshalb
verwende ich hier erreichbar. Okay, also weiterer Radius, lass uns einfach dieses
x verbinden, denn jetzt haben wir hier
die Grenzen dieses
Navigationsnetzes, und das ist unser Radius. Und der Ursprung ist genau
dort, wo der Schauspieler gestorben ist. Also lasst uns den Standort des Schauspielers besorgen. Der Feind hier, hol dir
den Standort des Feindes, das ist der Ursprung, nach dem du
suchen wirst. Lassen Sie uns im Wesentlichen eine neue Variable
erstellen. Was wir hier tun
wollen, ist
eine Vektorspalte namens
Spawn-Position zu erstellen. Und diesen Vektor
werden wir auf eine
Wiederholungsbenachrichtigung setzen , weil wir
versuchen, eine visuelle Änderung vorzunehmen. Wir versuchen den Feind zu
spawnen. Und innerhalb dieser Rippe
benachrichtigen Sie den Spawnstandort. Wir werden nur sagen
, Standpunkt des Schauspielers. Das ist es, was wir versuchen zu tun. versucht, die Position des
Akteurs auf
einen zufälligen Punkt
im Navigationsnetz festzulegen . Also versuchen wir es hier
zu spawnen. Der Standort der Schauspielerin und der
eingestellte tatsächliche Standort eine visuelle Veränderung, da Sie den Standort der Schauspielerin
ändern. Und deshalb legen wir es
in eine Rippenbenachrichtigung. Gehen wir jetzt zurück
zum Event Graph. Und anstatt hier zu sein, versuchen
wir das zu setzen. Wir versuchen, diese
Variable auf den zufälligen Ort festzulegen. Aber denken Sie noch einmal daran, ich
interessiere mich nur für den x-Wert. Lassen Sie mich das tatsächlich hier runter ziehen
. Also habe ich mehr Platz. Wir versuchen es nur, als ob wir hier nur an dem x-Wert
interessiert sind. Also mach es hier auf und lass
mich den Vektor hier machen. Also trenne ich
die Werte, damit ich sie
ändern und hier nicht direkt
angeschlossen habe. Für das x interessiere ich mich für dx, also schließe ich normalerweise einfach den Akzent an, weil
wir das wollen. Und für das y
möchte ich die Schauspieler y behalten. Also den eigentlichen Standort. Ich werde es kaputt machen. Und ich bin daran
interessiert, die Schauspieler,
wie den
Standort der Feinde, konstant zu halten . Ich will es hier oben nicht
ändern. Und was den Z-Standort angeht, können
wir dies wieder verwenden, aber wir können diesen
Bone Z Standort verwenden. Und was ich tun möchte, werde
ich einfach Plus sagen und versuchen wir plus 20 zu sagen. Und lass mich erklären,
warum ich das mache. Für den z-Standort. Denken Sie daran, dass das Z hier oben ist, dies ist der Z-Standort. Ich sage nur 20, weil es
manchmal
eine Chance gibt, dass sich die Feinde hier verbinden
und sie
im Boden stecken bleiben. Ich sage nur plus 20, wenn
Sie einen neuen Standort finden. Es wird also
sagen, dass plus ein t n diesen Feind hier nach oben drängen
wird. Und es wird den Feind hier
spawnen. Und dann wird es den Feind hier
fallen lassen. Denn denken Sie daran,
die Feinde haben Schwerkraft, also
werden sie nicht hier oben bleiben. Manchmal. Ich versuche nur,
das Problem zu vermeiden, bei dem sie in
unserem Kollisionsnetz laichen. Und ich sage plus 20. Also das hier oben. Und sie sagen, ich
glaube nicht, dass du es merken wirst. würden wir sie bemerken, wenn
sie hier oben spawnen, weil es eine Schwerkraft hat und hier unten fallen
wird. Und wenn Sie es bemerken, verringern Sie diese Zahl
einfach
auf etwas niedrigeres. Wenn du es
etwas sehr hohes machst, wirst
du es bemerken, weil es vom Himmel fallen
wird. Also denke ich 20, es wird nicht auffallen. Genau so. Und
jetzt verbinden wir es von hier bis hier. Lass mich das ein bisschen
runterdrücken. Jetzt legen wir
den zufälligen Standort und
verwenden ihn tatsächlich hier oben. Nachdem wir also die Hüften auf 100 gesetzt
haben, wollen wir die Antwort aufrufen, dass wir
darauf antworten werden. Es wird
einen zufälligen Ort
für den Feind finden und
darauf reagieren. Dann denk daran, dass wir
das wie gestoppt haben, wenn du tot bist, du hast die Logik hier gestoppt. Also müssen wir ihren
Verhaltensbaum erneut starten. Also kann ich das wieder einfach
hier
kopieren und verbunden sein
und sagen startet Logik. Jetzt fangen wir wieder
mit Logik an, Sie führen den
Verhaltensbaum aus. Denken Sie daran, die
Kollisionen hier erneut zu aktivieren, damit sie nicht deaktiviert sind. Schon wieder. Verbinden wir sie so. Was wird jetzt im Wesentlichen passieren? Lasst uns tatsächlich das
komplette tatsächliche noch nicht ziehen. Lasst uns
hier in den Tod gehen , weil wir
nichts getan haben. Und das einzige, was vorerst ist , einfach zu dieser Unwrap
Funktion für die Toten zu gehen. Und was wir
tun wollen, ist, dass wir das tatsächlich nehmen und prüfen, ob
die Spieler das nicht sind. Wenn der Spieler also tot ist, wollen
wir nur
die Todesanimation abspielen. Nehmen wir das also an
und wir haben diesen namens „Set Movement States“. Eigentlich eingestellt. Mal sehen, Du sagtest
Bewegungen Staaten. Dieser für den Feind. besagten Bewegungen geben an,
und lasst uns den
Tod wählen , nur um zu überprüfen, ob wir es tatsächlich geschafft
haben. Wenn wir also zu den Unreifen
für die Bewegungsstaaten gehen, haben
wir es eigentlich nicht
angeschlossen. also sehr wichtig zu überprüfen, ob Ihr Code tatsächlich verbunden ist. Kopieren wir also
dieses Flipbook ein. Verbinden wir die
Sprites mit dem Ziel. Lasst uns diesen Tod hier verbinden. Und jetzt zur Todesanimation, Nehmen wir diese Struktur
und
lassen Sie uns diese Pin hier treffen, die Todesanimation
genannt wird. Wir haben es vor einer Weile geschafft
und es uns verbinden lassen. Jetzt, hier unten, lass mich nicht verbundene
Pins einfach so verstecken. Jetzt ist es verbunden. Und lass mich
hier nach dem Schwein suchen, ob wir die
Todesanimation eingestellt haben, also haben wir hier und die
Todesanimation für diese Schnecke. Prüfen wir es in
den Standardeinstellungen der Klasse. Und wir haben hier die
Todesanimation gesagt. Jetzt überprüfe ich die
Geschwindigkeit der Animation. Also gehe zu Feinden. Und das geht auf Zeit. Eigentlich wähle ich
drei Frames pro Sekunde aus. Also 1 Sekunde spielen wir
diese ganze Animation ab. Und was die Schnecke angeht, schauen wir uns das hier an. Also acht Frames pro Sekunde. Ja, ich denke, das ist in Ordnung. Wir können
es immer ändern, wenn es nötig ist. Gehen wir zurück zur
intimen Basis und gehen zur
Entpack-Funktion für die Toten. Also werden wir
die Todesanimation spielen und das war's vorerst. Also lasst uns auf Play klicken und
hoffen, dass alles funktioniert. Ich treffe es jetzt. Und lass mich tatsächlich
meinen Trefferschaden überprüfen meinen Trefferschaden , weil ich das nicht ewig tun
will. Also lasst uns mal
sehen, wo wir es gemacht haben. Wir haben es anstelle
von Blueprints und dem Spieler, Spielerbasis gemacht. Und dann lass uns hier zu
diesen Spieler-Info gehen. Und wegen des Basisschadens. Die Gesundheit für
die Schnecke ist also 15. Ich werde tatsächlich
zehn als Basisschaden legen. Also habe ich
zweimal auf die Schnecke geschlagen und sie wird sterben. Also traf die Schnecke, die anderen Schnecken
und all diese. Und du kannst sehen, dass es jetzt stirbt. Wir müssen
diese Animation nur pausieren , damit sie
nicht ewig abgespielt wird. Und du kannst sehen, dass es
tatsächlich hier spawnt. Okay, also glaube
ich nicht, wir
diese Todesanimation nicht pausieren müssen. Du kannst es tun, wenn du willst,
genau wie das, was wir mit
der Seil-Animation
für den Spieler posten . Aber ich glaube, wir werden eine verblassende Animation machen und das
Fade wird sie verschwinden lassen. Es spielt also keine
Rolle,
ob die Animation des Feindes
hier Post ist oder nicht. Aber du kannst hier sehen, dass
sie laichen, weiß
ich im Boden,
also müssen wir das beheben. Oder weil der
Gehmodus eingestellt werden muss. Also lasst uns genau
jetzt gefallen, ich denke, es ist in Ordnung. Arbeiten wir am Verblassen. Denn mit dem Verblassen verwenden
wir das vielleicht, um
den Walking-Modus
und die Nüsse innerhalb
der Todesanimation einzustellen den Walking-Modus
und die Nüsse innerhalb
der , weil
Sie sehen können, dass sie funktioniert, aber das liegt daran, dass
Sie hier sehen können, wenn ich zurück zur feindlichen
Basis und hier drinnen gehe, gehen
wir zum Event Graph. Und denken Sie daran, dass wir den
Bewegungsmodus auf keinen gesagt haben, und wir haben
ihn nie wieder auf Gehen eingestellt. Deshalb stecken als wären sie nicht wirklich im Boden
stecken. Ich glaube, ich glaube, es liegt daran, dass wir es nicht mögen, dass wir das nicht zum Gehen gesagt
haben. Und das kannst du
jetzt in der Todesanimation oder
des Todesereignisses hier tun. Aber ich denke, wir werden
einen verblassenden Effekt erzielen. Und damit
stellen wir den Walking-Modus ein. Lasst uns also
zum nächsten übergehen.
90. Enemy: Okay, also hier in der Basis, Lasst uns jetzt einen verblassenden Effekt
machen, wenn der Feind würfelt. Mal sehen, ob wir das besser
strukturieren können. Jetzt haben wir die
Todesanimation hier, wir haben die Spawn
reagierende Animation. Sie können einfach versuchen,
die Fade-Animation hier zu erstellen. Ich gehe zurück zu
meinem Blueprint-Interface und mache eine neue Funktion namens „ Actor Fade“. Und lasst uns einen Booleschen Wert machen
und es einfach „fade“ nennen. Also nur um zu sehen, ob es verblassen
soll oder nicht. Gehen wir zurück und scrollen das Ereignis, das als atrophied bezeichnet wird. Und lasst uns ein Server-Ereignis machen. Benutzerdefinierte Ereignisse,
die durch den Server gehen , der als atrophied bezeichnet wird. Und lassen Sie es uns zuverlässig durch
einen Server führen. Und lasst uns das
Server-Event hier oben ausführen, Schauspieler fade und
machen wir einen neuen booleschen Wert. Also die gleichen Dinge, die
wir bisher gemacht haben. Jetzt verbinden wir
es. Okay, jetzt haben wir diesen Schauspieler verblassen. Lassen Sie uns dies
zu einer Variablen fördern. Und ich weiß nicht, ob wir es
vorerst zu einer
Vertretungsbenachrichtigung machen müssen . Lassen Sie es uns vorerst einfach
so sein. Was wir also versuchen
, ist, den Feind zu ernähren, wenn er stirbt. Also hier drüben und
der feindliche Tod, ich werde es
hier gerade verblassen, bevor ich tatsächlich, nachdem ich das auf falsch gesetzt habe, den Feind
vor dem Reaktions-Timer füttern können. Lassen Sie mich also nicht entfernen, sondern verschieben Sie das hierher und nennen Sie
das Fade-Event des Schauspielers hier. Darin verblasst Schauspieler. Und
lassen Sie es uns auf wahr setzen. Okay, was sollte also passieren
, wenn das Fade stimmt? Was stimmt? Was ich tun muss,
ist eine TEM-Linie aufzurufen. Denken Sie also daran, dass wir vorher
eine Zeitleiste gemacht haben. Lass es uns jetzt nochmal machen. Klicken Sie also hier und
nennen wir das einen Hauptdarsteller. Und lasst es uns
von Anfang an spielen. Was wir also hier tun müssen, das Ziel dieser Zeitleiste ist es, die Farbe für den Feind zu verblassen. Und denken Sie daran,
den Fading-Effekt zu erzielen, Sie müssen zu diesem Feind gehen. Und setzen Sie dieses
Material wieder auf ein durchscheinendes, unbeleuchtetes Material, weil
Sie
diese Farbe nicht direkt verblassen können , als würde sie plötzlich
verschwinden. Du kannst nicht mögen, dass
es keinen Zwischenschritt gibt. Es erscheint einfach und
verschwindet so. Also müssen wir es wieder
auf transluzent setzen, genau wie der Spieler, den wir
mit dem Blinkeffekt gemacht haben. Also lasst uns hier zur
feindlichen Basis gehen. Und eigentlich machen wir
das hier drüben tot ist. Also lasst uns das machen, bevor wir verblassen. Wenn der Spieler also tot ist, gehen
wir zu ist tot. Und hier können wir das
helle nehmen und Set-Material sagen. Und lasst uns es auf das
sogenannte Transluzenz, durchscheinendes, unbeleuchtetes
Sprite-Material einstellen. Jetzt lehnen wir uns
zurück und lassen es uns einstellen. Denken Sie daran, es wieder
hier zu setzen , wenn der Spieler das nicht mehr
ist. Also zu maskiertem, maskiertem
unbeleuchtetem Sprite-Material. Okay, jetzt haben wir
das Material
dazu gesagt und wir können den
Spieler füttern oder den Feind verblassen. Gehen wir hier
zur Timeline. Okay, also versuchen
wir eine lineare Farbe festzulegen. Lassen Sie mich also eine neue
Variable erstellen und
sie Akteur-Fade-Farbe nennen . Und lassen Sie uns die
neue Variable hier in eine lineare Farbe verwandeln. Und lass es uns nehmen und einstellen. Das ist es, was
wir also einstellen wollen. Ich schaffe es zu einem Wrack. Benachrichtigen. Denn denken Sie daran, dass
dies eine visuelle Veränderung ist. Wir ändern das Alpha des Spielers,
was bedeutet, dass wir es undurchsichtig machen. Also gehe hierher und setze
es auf eine Netzhaut Phi. Und was wir
hier in der Unwrap Funktion versuchen ist, dass wir versuchen,
dieses Sprite zu nehmen und Sets zu sagen. Ich glaube, es
hieß zuerst Sprite Color. Ja, es ist eine helle Farbe. Das ist es, was wir hier einstellen
wollen. Und nehmen wir diesen Schauspieler
gefälschte Farbe und verbunden. Also werden wir die
Farbe einstellen und
sie im Laufe der Zeit einstellen , weil
wir
sie ständig über
diese Zeitleiste aktualisieren . Und was wir versuchen, ist, lass uns eine Loop-Note verwenden. Also hat es versucht, einen Loop-Knoten zu verwenden. Und wenn Sie nach Schleife suchen, können
Sie diese finden,
als könnten wir diese verwenden, aber ich glaube, diese bessere Idee, wie Sie das brechen können. Du kannst sehen, nimm das
und du hast Recht,
mach, mach lineare Farbe. Auf diese Weise. Sie können das Alpha
hier durch einen Float ändern. Und es kann tatsächlich nur
einen Loop-Knoten verwenden , da
dies ein Float ist. Es ist jedoch ein besserer Weg, dies zu tun. Es gibt eigentlich eine Schleife für
eine lineare Farbe spezifisch. Also kann es stattdessen das benutzen. Und Sie können lineare Farben
durchlaufen. Anstatt dies
hier zu tun, lass mich das löschen. Und hier für die Schleife kannst du es
einfach so verbinden. Und für die erste Farbe fangen wir
damit an, einfach wir selbst
zu sein. Also hier 1111, alle
sind auf eins eingestellt. Dies macht nur die Pixel so, als hätten wir unseren
Charakter ohne Farbe. Und der zweite. Ich wollte nur noch einmal 1111 machen, aber für das Alpha, also die Deckkraft, die wir auf 0 setzen
wollen, eigentlich 0, also
wird sie verschwinden. Es wird von 0 zu eins gehen. Als wäre dieser 0 und
dann geht es zu eins. Es wird also von 0 auf eins
verblassen. Und wir wollen es reibungslos machen. Anstatt nur einen hier zu
schreiben, wenn wir das einfach
ohne irgendetwas anderes tun , wird es tatsächlich verschwinden,
wenn wir das Spiel beginnen. Aber wir wollen gehen, wollen
reibungslos von 0 zu eins gehen. Und deshalb
verwenden wir eine Zeitleiste. Wenn ich also
auf die Timeline klicke, mache
ich hier einen
neuen Float-Track. Nennen wir es „Fade Alpha“. Hier, klicken wir mit der rechten Maustaste
und machen zwei. Lassen Sie mich hier eigentlich drei
Punkte machen und Sie werden sehen warum. Zum Zeitpunkt 0 möchte
ich, dass der Wert 0 ist. Lasst uns tatsächlich die
Länge dieser 1 Sekunde machen. Also zu der Zeit, also
der letzte Punkt hier, also zuerst 00, der letzte Punkt zum Zeitpunkt, ich möchte, dass es einer ist. Und dieser
zum Zeitpunkt von 0,75 möchte
ich, dass es noch 0 ist. Also möchte ich den Feind nicht sofort
verblassen. Ich möchte es
ungefähr 0,75 Sekunden verblassen. Es wird also die
Animation ein wenig abspielen, und dann wird die Animation
ausgeblendet. So
kannst du es auch machen. Sie müssen es also nicht so
machen wo es mit der Zeit einfach
verblasst. Ich werde einfach so
untreu sein bis es hier am
Ende der Animation
schnell verblasst . Also lasst uns hierher gehen und lasst uns das Alpha jetzt
verbinden. Und jetzt haben wir diese
glatte Zeitleiste , die unsere Animation
verblassen wird. Und was wir jetzt
tun können, ist, dass wir
nach dem Tod zu unserem Kodex gehen können . Eigentlich
haben wir es jetzt schon hier geschafft. Also Schauspieler verblassen, lass mich versuchen es zu spielen und zu
sehen, was passiert. Wenn ich es jetzt spiele. Und ich töte ein paar Feinde. Man kann sehen, dass sie verblassen und
es spielt keine Rolle. Als ob unsere Animation
immer noch so läuft wie zuvor, aber wir sehen sie nicht wirklich weil wir zum Feind passen. Wenn ich also versuche, diesen jetzt zu
töten, kannst
du sehen, dass es die Animation
abspielt und danach verblasst es. Was ist ziemlich cool. Und lassen Sie mich eigentlich, bevor ich etwas anderes mache, meine
Kollisionen hier entfernen. Ich will sie nicht mehr
sehen. also zum Schwein gehen, glaube
ich, dass wir gerade auf einen von denen
geklickt haben, damit die Kopfbox im Spiel versteckt
sein sollte. Eigentlich glaube ich, dass es durch die feindliche Basis
geschehen wird. Also hier versteckt im Spiel. Ich wollte nur
so meine Kopfboxen
schlagen und verkaufen. Also trage oder verstecke die im Spiel versteckten
Angriffskollision der Spieler. Okay, jetzt haben wir
diese verblassende Animation, aber denken Sie daran, dass wir irgendwann zwei
Unbevorzugte haben. Ich werde sofort unphasenlos wenn ich meinen Spawn-Standort finde. Bevor wir also
mit der Logik beginnen, beginnen
wir den
Entfaltungsprozess. Darsteller verblassen, ich rufe
das gleiche Event aus. Und anstatt
dies wie zuvor anzukreuzen, haben wir es
jetzt deaktiviert. Und das bedeutet, dass es
sich entfalten wird. Die Art, wie wir das machen, ist hier.
Wie lautet die Zeitleiste? Die Zeitleiste ist da. Anstatt von Anfang an zu spielen, machen
wir hier
einen Zweig. Nehmen wir das also und machen
einen Zweig und verbinden uns. Wenn es also stimmt,
wenn wir verblassen, wird
es von
Anfang an spielen wie zuvor. Wenn Sie jedoch
nicht mehr verblassen
, wird es falsch. Ich möchte das eigentlich von Ende an umgekehrt spielen
. Und es wird von
diesem unsichtbaren zu sichtbar werden. Also wird
es in meinem Charakter tatsächlich verblassen. Dies ist im Wesentlichen
der Fall, wenn Sie es auf „deaktiviert“
setzen
und es hier hinzufügen, das unkontrollierte, was
falsch ist , um vom Ende umzukehren. Denken Sie daran,
dass ich es hier machen möchte. also im Gehmodus
daran, dass wir den Bewegungsmodus nicht
eingestellt haben . Wenn ich also im
Schaden hierher zurückgehe, setzen wir den
Bewegungsmodus auf „None“. Ich kopiere das. Ich gehe
hier runter und füge es ein. Und anstatt es auf
„None“ zu
setzen, werde
ich es tatsächlich wieder laufen lassen. Sonst wird es stecken bleiben
und niemals, niemals bewegen. Jetzt haben wir den Arbeitsmodus, also versuche ich zu sehen,
was uns fehlt. Also gibt es eigentlich
etwas, das wir vermissen. Was uns
fehlt ist Wir haben nie angegeben, wenn der Charakter nicht mehr tot
ist. Also hier legen wir fest, dass das wahr ist. Und denken Sie daran, dass wir es
auf „false“ setzen müssen weil hier drin ist, ist tot. Wir haben hier standardmäßig festgelegt, wir setzen das Material
wieder auf Maske. Also müssen wir das machen, und ich glaube, ich mache das. Anstatt es hier zu tun, also kannst du es nicht, kannst du nicht einfach hier
reingehen und das sagen. Denn denken Sie daran, Sie es sind, Sie spielen
ein Schauspieler Fade, was eine Zeitleiste
ist. Und du
wirst tatsächlich festlegen, wie wenn du das hier aufrichtest, den Tod, den du einstellen wirst. Dieses Material wird unbeleuchtet maskiert, was dieser Zeitleiste
keine Möglichkeit gibt , die Farbe
von unsichtbar in sichtbar zu ändern. Denken Sie daran, wenn Sie
das Material als
Standard zum Maskieren von Schlitzen haben , können
Sie diesen
reibungslosen Übergang
nicht haben, den Feind verblassen. Wenn du das hier oben machst, wird
es
sofort nach dem Verblassen des Schauspielers tun . Und es wird
das Material so ändern, dass es unbeleuchtet maskiert, gibt was der Zeitleiste nicht
zufällig genug Zeit ,
um dies hier zu
diesem Übergang
von wie dem Fade-In-Effekt zu tun . Also lasst es uns tatsächlich
hier in der Timeline machen. Wenn die Zeitleiste mit dem Verblassen
endet, können
wir diesen
Tod dann auf „falsch“ setzen. Und
das wollen wir nicht ständig tun ,
denn denken Sie daran, obwohl das Feld auf
true eingestellt ist und Sie es hier spielen, wird
es dies zu falsch spielen weil wir es nicht wirklich müssen tun Sie das, wenn Sie verblassen, was hier getan hat, wir wollen es nicht auf falsch
setzen, wie den Tod,
weil wir auch
einen Antwort-Timer haben und deren
Notwendigkeit einige Zeit dauern muss. Ich mache hier einen Booleschen Wert. Dieser hier ist wieder der Feed. Und lassen Sie uns einfach einen booleschen Wert machen. Eigentlich ist es eine Art Feed, nicht wirklich erklärend
ist. Lass es mich stattdessen
nach dem Verblassen ändern. Lassen Sie mich dieses so einstellen
, dass es repliziert wird weil Sie daran denken,
dass es auf dem Server
läuft, also
muss der Client davon wissen. Und lass mich diesen Schauspieler verblassen, einen Zweig
setzen und
uns ihn hier verbinden. Wenn der Feind verblasst, werden
wir nichts tun. Aber wenn der Feind
nicht mehr verblasst, was bedeutet, dass du hier drüben bist. Dann werden wir
diesen Code
ausführen, diese Zeitleiste ausführen und
die Zeitleiste endet. Wir werden sagen,
ja, der Schauspieler verblasst nicht. Es wurde auf „false“ gesetzt. Dann
setzen wir das auch tatsächlich auf „false“. Jetzt können wir es also
so machen statt da oben. Okay, also lasst uns jetzt
kompilieren und speichern, und hoffentlich haben wir alles
repariert. Und klicken wir auf Play und
lassen Sie uns ein paar Feinde töten. Wir haben also viele
Feinde im Sterben. Und mal sehen, ob sie richtig
reagieren. Also jetzt
antwortet dieser auf diesen, antworte. Diese antworten. Okay, es scheint also, als würde
alles richtig funktionieren. Und wenn ich sie nur einmal treffe, werden
sie es tun und du kannst sehen, dass es tatsächlich
einen kleinen Fehler gibt. Ich glaube, dieser hat es nicht
gemocht , dass es keine generierten
Überlappungsereignisse mit diesem gibt. Das Problem hier mit
dem überlappenden Problem
ist also , dass ich vergessen habe, sie auf wahr zu setzen. Also haben wir sie hier auf false gesetzt, aber am Ende habe ich vergessen, sie auf wahr
zu setzen. Wir müssen also
Überlappungsereignisse generieren. Also lasst uns kompilieren und speichern. Lass uns wieder das Spiel
spielen. Und lass es uns nochmal versuchen.
Also lasst uns sie jetzt treffen. Sie werden sterben. Offensichtlich brauchen wir sehr bald einige
Soundeffekte. Und Sie können sehen, dass sie richtig
reagieren.
91. Platzierung der feindlichen Niveaus: Diese Lektion ist ein bisschen anders. Das tun wir nicht, wir
werden nichts codieren. Und jetzt werden wir die Feinde einfach um das Level
legen. Und du kannst das
mit dem Code machen. Sie können also einfach
ein Laichereignis machen und einfach alle
Feinde
automatisch spawnen , wenn Sie
dem Spiel beigetreten sind, und es auf
zufällige Orte einstellen. Aber ich glaube, wenn Sie etwas ohne Code
machen können, dann schlage ich vor, dass Sie
es ohne Code tun ,
weil Sie daran denken ,
codieren, Sie werden
etwas Erinnerung an das Spiel verwenden. Und warum machst
du das, wenn du
einfach hierher kommen und sie einfach umsonst
platzieren kannst . Dies ist sehr optimiert. Du musst keinen Code schreiben. Wann immer Sie vermeiden können, all diesen Code zu
schreiben,
versuchen Sie, Schleifen zu vermeiden. Versuchen Sie es zu vermeiden, diesen Code zu schreiben. Wenn wir es zum Beispiel
vermeiden könnten, diesen Code zu schreiben, hätte
ich ihn nie geschrieben. Aber da wir es bereits mögen, da wir dies schreiben
müssen, müssen
wir es schreiben, damit es funktioniert. Aber für die Laichereignisse, wie anstatt einen
Laichcode für die Feinde zu erstellen, wenn du einfach hierher kommen kannst als ob er zu deinem Spiel passt. Natürlich müssen einige Spiele Code
spawnen, damit es funktioniert. Aber für diesen Fall
haben wir Feinde ersetzt. Da wir die Feinde
platziert haben, können
wir sie
einfach aufnehmen und einfach platzieren,
wo wir wollen. Und das war's. Also müssen wir hier
nichts für
die feindliche Basis programmieren . Wenn ich also zurückgehe, haben wir
mit
der feindlichen Basis
hier für die Reaktion gemacht , dass wir im Grunde nur den Feind verstecken
und dann die
Unterstützung des Feindes einblenden. Schon wieder. Wir entfernen
den Feind nicht wirklich dauerhaft
aus dem Spiel. Denken Sie jedoch daran, dass Sie in Ihrem Spiel etwas Benutzerdefiniertes machen und
diesen Kurs nicht vollständig befolgen, wenn Sie den Schauspieler
zerstören
möchten, z. B. entfernen Sie ihn vollständig
vom Level. Denn wenn du es einfach so
fütterst, wenn du es verblasst, bist du verrückt. Als ob der Schauspieler
im Grunde immer noch da ist. Wenn ich einfach hier zum Feind gehe
und die Kopfbox so setze
, dass er nicht im Spiel versteckt ist. Und du
siehst tatsächlich, als ob ich das Spiel jetzt spiele, treffe
ich diesen Feind
hier und würfeln. Sie können sehen, dass die Kollisionsbox immer noch hört, dass der Feind noch hier
ist. Es ist nur verblasst. Das ist also in dieser Situation in Ordnung da wir wie eine
bestimmte Anzahl von Feinden haben. Zum Beispiel brauche ich nur
vier Schnecken und mein Level. Also verblasse ich es einfach und
antworte es woanders. Wenn du es jedoch nur
komplett vom Level aus zerstören
willst und niemals dieses **** hast. Denn wenn Sie noch einen
Teich laichen haben, wird
dieser Blueprint-Code immer noch ausgeführt und er wird nicht optimiert wenn Sie weiterhin
Feinde laichen und sie
niemals
aus dem Level entfernen. Wenn Sie es also vollständig
entfernen möchten, können
Sie dieses mit der
Aufschrift „Destroy Actor“ verwenden. Zerstöre Schauspieler werden
es komplett
aus dem Spiel entfernen und es kann
versuchen zu sehen, was es tut. Also wenn ich
das hier einfach umbringe und es irgendwo verblassen wird
, lass mich einfach noch etwas töten
und auch diesen töten. Sie können also jetzt sehen, dass sie
tatsächlich so sind, als würden woanders
antworten und nach
dem Antwortcode
werden sie zerstört. Jetzt werden sie
vollständig aus dem Spiel entfernt. Dies ist optimiert, weil Sie
dann nicht
all diesen Code für
diesen Feind im Spiel ausführen . Für dieses Spiel
habe ich jedoch ständig nur vier
Feinde. Und ich verblasse es einfach und
antworte es woanders. Also behalte ich
diese vier Feinde. Ich habe nie fünf Feinde
oder sechs oder sieben Feinde hervorgebracht. Wenn du das tust, denk daran, den Schauspieler
zu zerstören. Wenn nicht, wenn du das
nur machst, kannst
du es einfach
woanders und auf dem Level antworten. Jetzt können wir vermeiden, Code für
die Antwort zu
schreiben , damit wir sie einfach ersetzen
können. Was ich hier also anfange
, ist, das nur auf einen zu setzen. Und manchmal sieht man Feinde die sich
durchschneiden. Und das liegt daran, dass sie es haben, alle haben eins im Y. Manchmal
gehen sie einfach ineinander. Sie schneiden so zusammen. Sie können sehen, dass es einige
Clipping gibt. Und das liegt daran, dass sie den gleichen Y-Wert
haben. Was Sie hier also manuell
tun können, wird einige Zeit dauern,
aber Sie können zum Beispiel einen für diesen schreiben , den zweiten,
ich schreibe 1.1. Und für den dritten schreibe
ich 1.2. Es wird sich also
nie gegenseitig schneiden. Du siehst jetzt, dass sie
vor einander stehen. Sie werden niemals zusammenschneiden.
Und das kannst du einfach machen. Halten Sie also Alt gedrückt und ziehen Sie zum Kopieren, und dieser ist 1.3. Und ziehe nochmal 1 für diese 1,51. Also so etwas, und du kannst es hier oben platzieren, es erneut
ziehen, 1.6. Also werde ich einfach diese Feinde
haben. Und hier oben wegen der Schweine füge
ich
ein paar Schweine hinzu. Also 0 und das y. Für das y fange ich tatsächlich wieder mit einem
an weil der Spieler
eigentlich nicht der Spieler ist. Diese Kacheln sind bei 0, also möchte ich nicht, dass sie hinter den Kacheln sind. Deshalb habe ich mit einem angefangen. Und lass es uns
noch einmal ziehen und 1.1 sagen. Und manchmal, als ob
1.1 nicht genug ist, kann
man einfach 1.1.15
oder so etwas sagen. Also 1.2 dafür, 1.31, für diesen können
wir immer überprüfen, ob sie abschneiden, wir können diese
Größe zwischen ihnen erhöhen. Und für den Spieler beginnt
der Spieler bei zwei, also ist der Spieler immer
vor den Feinden. Lasst uns auf Play klicken. Und schauen wir es uns an und versuchen
einfach zu sehen, ob
es Clipping gibt. Lassen Sie mich tatsächlich zur
feindlichen Basis gehen und
dieses Kollision- oder
Hit-Box-Versteckungs-End-Spiel hier deaktivieren . Also kann ich sie klarer sehen. Jetzt kannst du sie
dir ansehen und sehen ob sie jemals eines Tages
abgeschnitten werden, durcheinander
gehen. Und manchmal, wenn sie abschneiden, können
Sie
diese Trennzahlen einfach erhöhen. Sie können einfach
den Y-Wert erhöhen. Ich denke, es sieht
gut aus und sieht gut aus. Auch hier können Sie
die Trennung
und das Y erhöhen , wenn Sie möchten. Aber das ist mehr, dies ist ein
optimierterer Weg, dies zu tun. Wenn Sie mit
etwas davonkommen können, indem
Sie nicht programmieren, können Sie das tatsächlich tun und
es wird optimierter. Aber manchmal muss man Code
schreiben und man
kann es nicht wirklich vermeiden. Jetzt, da wir alle Feinde
im Level platziert
haben , speichern
wir alles und lass uns zur
nächsten Lektion übergehen.
92. Hit, Tod und Respawn SFX: Wir haben das Ende erreicht und es ist fast Zeit für das
Nivelliersystem. Und bevor wir das tun, fügen
wir tatsächlich
ein paar Soundeffekte und machen hier etwas
Interessantes. Ich denke, es klingt viel besser wenn man Soundeffekte hinzufügt
. Lass uns zu Audio gehen. Und ich habe diese
für Sie in
die Kursmaterialien aufgenommen und diese haben wir hier. Wir benutzen den Sprung bisher nur. Also wähle einfach alle von ihnen
aus, außer dem Sprung. Und lass mich sie hier in
meinen Audioordner ziehen. Und dann haben wir all diese. Klicken wir auf Datei und speichern Sie alle. Was Sie jetzt tun können, ist, dass Sie
dieses Level mit der
rechten Maustaste nach oben heben können und Sie können einen Sound-Cue Ball
erstellen. Es ist der Sound-Cue-Pegel höher. Und das werden wir später
benutzen. Sie können auf Play klicken, um zu
hören, wie es klingt. Nur ein paar Geschichten,
Soundeffekte. Und für diesen Angriff kannst
du mit der rechten Maustaste klicken
und ein Q erstellen, es Angriff
nennen und dasselbe mit
den Angriffshits tun , Angriff
nennen, Treffer. der rechten Maustaste für den
Tod und erstellen Sie einen Sound-Cue und nennen Sie
ihn Soundwarteschlange, Tiefe. Der Sprung, den wir bereits gemacht haben. Also geht's und das Level nach oben. Wir haben das getan, um den Tod zu wählen, Cue zu
hören, den Tod zu wählen. Und lasst uns das auch für
den Schneckentod tun. Sound Cue Schnecke Schulden. Und wir haben eine Antwort, diese antwortet,
klingt, antwortet. Und mal sehen, ob uns etwas
fehlt. Also haben wir
jetzt den Text Tod, wir haben jetzt alles. So kannst du
es auch für die Musik machen. Wir haben etwas Musik
namens Sound-Cue Music, eigentlich nur Tennessee
genannt, ich nenne es Genesis. Das ist die Musik. Okay? Und ich werde es
jetzt nicht anschließen , weil ich
denke, dass es
nervig sein wird , wenn wir
das Spiel debuggen und weiterhin Musik
spielen. Also werde ich
das vorerst draußen halten. Das erste, was wir tun können, ist , wenn wir
mit dem Spieler angreifen. Gehen wir also zum Spieler
und gehen zur Spielerbasis. Und für den Angriff machen
wir das hier. Also haben wir den Angriff. Wir gehen durch den Server und erinnern uns an Soundeffekte. Sie müssen entweder
durch den Kunden gehen. Wenn Sie also möchten, dass Soundeffekte
nur von Ihnen gehört werden, möchten
Sie benutzerdefinierte Ereignisse aufrufen und über den Client ausführen
. Wenn Sie jedoch möchten, dass der
Soundeffekt von
allen um
Sie herum gehört wird , müssen Sie es tun. Eigentlich vergesse
ich, meine Verknüpfung
hier für dieses benutzerdefinierte Ereignis zu verwenden . Sehr schnelle Abkürzung. Wenn Sie möchten, dass der Soundeffekt von allen gehört
wird, müssen
Sie ihn
durch einen Multicast laufen lassen. Multicast, wenn jeder es hören
sollte, liniert, nur wenn man es hören
sollte. Ich denke, alle Kunden
sollten diese Geräusche hören, also lass mich das einfach tun. Lassen Sie mich also benutzerdefinierte
Ereignisse erstellen und es MC-Angriff nennen. Und dafür werden
wir sagen, Play Sound vor Ort. Also werden wir den Sound an
dem Ort
abspielen , an dem der
Spieler angreift. Und ich
ziehe diese Variablen einfach in die Ereignisse und nenne es Attack
S Effekte, denn es ist Sounds,
Soundeffekte und
Standort in Ordnung. Und jetzt spielen wir es. Denken Sie daran, dass Multicast nur über den Server ausgeführt
werden kann. Für den Angriff haben wir
zwei verschiedene Sounds. Wir haben 14. Hier, schauen wir uns nach dem Angriff. Und wir haben eins für
das Angriffskit. Also wann immer du etwas triffst, also lass es uns hier machen. Also hier prüfen wir, ob wir
tatsächlich Feinde treffen. Und wenn wir das sind, spielen wir
den Hit One. Also hier drüben, lass mich eigentlich
einfach MC-Angriff nennen. Und lassen Sie uns diesen Code ein
wenig so vorantreiben, und Sie können ihn später immer
näher bringen. Es wurden
diese Soundeffekte gespielt und es wird diesen Treffer-Effekt
spielen. Was Sie tun können
, um die
Konsistenz dieses Spiels zu verbessern , können
wir zu Struktur- und
Spielerinformationen gehen und einfach Variablen für
die Angriffseffekte
hinzufügen und Sound-Cue wählen. Für den nächsten können Sie
einfach einen Tech-Hit S Effekte machen. Also müssen wir angreifen, Geräusche
angreifen. Und lasst uns tatsächlich
hier in der Spielerbasis machen, anstatt es separat
in Luke und Serena zu machen, machen
wir es einfach
hier in der Spielerbasis weil ich nur einen
Sound für alle Spieler habe. Lass mich also zu Spieler-Info gehen. Stellen Sie sie einfach hier
statt in jedem Zeichen ein. Jetzt suche ich einfach nach
einem Tech- und Angriffshit. Also haben nur alle Charaktere
den gleichen Soundeffekt. Gehen wir also zurück
zur Spielerbasis. Und hier können wir jetzt unsere Spieler-Info
nehmen. Tolle Kinder, und lass uns einfach
nicht verbundene Pins verstecken und
einfach meinen Angriff zeigen. Eigentlich ein Tech-Hit
dafür. Und hier verbunden. Was ist der Standort? Der Standort ist nur der Standort
dieses Spielers. Also bekommen wir den tatsächlichen
Standort und sind verbunden. Und wann immer,
anstatt dies zu tun, glaube
ich, dass wir
einen Fehler bekommen
werden , weil dieser auf
dem Server läuft und der Client dies niemals hören kann. Also der Server, wenn
ich etwas treffe, werde ich
es hören, aber ich glaube,
als Kunde werde nichts
hören. Lass es uns versuchen. Eigentlich funktioniert
es nicht, also können wir das tatsächlich tun. Aber wenn du willst, kannst du vielleicht
auch manchmal
denke ich, dass es viel sauberer ist das einfach
zu speichern und es stattdessen einfach hier
durchlaufen zu lassen. Aber lasst es uns vorerst einfach so
behalten. Kontrollieren wir einfach Z. Ich werde es einfach so
behalten. Lass es mich kopieren, füge es hier ein. Wenn es funktioniert, warum nicht? Ziehen wir es hierher
und verbinden es. Und
was versuche ich eigentlich für diesen Angriff zu tun? Wir müssen
die Verzögerung hier tatsächlich so durchmachen. Okay, also hier unten spielen
wir
den Soundeffekt , bei dem wir nichts treffen. Und hier unten, nehmen wir
diese Kopie, die hier unten eingefügt wurde. Stattdessen können wir den Angriff
zeigen,
Angriffseffekte und
den Standort der Schauspieler
wieder hier unten bringen , einfach so. Also was wir jetzt spielen können und lassen Sie mich uns einfach vor Kunden
spielen, nur um sicher zu sein. Wir spielen uns Kunden gegenüber.
Jetzt schlagen wir zu. Du siehst es. Und wenn ich ja nicht treffe, klingt
das gut. Okay. Das nächste ist, dass wir
die Schnecke und die Schweinetiefe wollen. Lasst uns also
zum Feind gehen und sehen
, wo wir das spielen. Also haben wir das beschädigt durch den Server
laufen lassen. Es wird dann
dieses Todesereignis hier spielen, und
fügen wir es tatsächlich hinzu. Der Tod wird also durch
den Server gehen und
vom Server aus
wollen wir einen Multicast ausführen. Lassen Sie mich diese
beiden also zusammenstellen, aber das hier unten und
hier drüben werde ich ein individuelles Ereignis
namens MC Death
machen und es auf Multicast
ausführen. Hier. Spielen Sie wieder Sound, Standort M und
nennen Sie es einfach feindlichen Tod oder einfach nur Tod oder keine unmittelbaren Auswirkungen.
Also solche Dinge. Der Standort. Und jetzt können wir den Multicast-Tod
nennen. Und für diesen Multicast-Tod lassen wir
mich jetzt tatsächlich all diese ziehen, haben
immer das
Weltraumproblem hier. Für diesen, für
den feindlichen Tod, machen
wir
das Gleiche. Für die Struktur können
wir also eine neue Variable
namens S Effects hinzufügen. Und machen wir es
zu einem Sound-Cue. Sparen Sie hier. Und lass mich gehen, jetzt lass mich zuerst zur
feindlichen Basis gehen, kompilieren und speichern und dann zum Feind, zum Schwein
gehen. Und dann müssen wir
zu den Standardeinstellungen
der Tierfüllung gehen und dann müssen Sie den tauben Soundeffekt
auswählen. Lass mich nach Schwein suchen
und wähle dieses aus. Wähle das aus, kompiliere. Lass uns zu einer Schnecke gehen. Und die Schnecke, wir werden
diese Schnecke benutzen, Tod. Lass mich zurück zur
feindlichen Basis. Was wir jetzt tun können, ist
diese Tierinformationen zu ziehen, Kinder zu brechen, nicht verbundene Pins zu
verstecken
und ich kann diese verwenden, Tod als verbundene Effekte. Und wo ist der Standort? Denken Sie daran, dass wir uns
in jeder Basis befinden,
also können wir einfach sagen, dass wir den Standort eines Schauspielers
abrufen weil es überall ist, wo dieser Feind ist. Okay, also lasst uns Compounds
speichern, wenn wir auf
Play klicken und sehen, ob es
funktioniert. Wenn es stirbt. Ja, ich spiele den Klang davon ab. Also hat dieser tatsächlich ein paar Mal
gespielt. Das ist witzig. Weil wir es hier
tatsächlich so machen müssen, ist
der Feind tatsächlich
tot. Das war witzig. Es hat mehrfach gespielt. Also können wir das nehmen
und Branch sagen. Und erst wenn der Feind stirbt, wollen
wir den Sound spielen, nicht wenn er reagiert. Klicken wir also auf
Play und versuchen es erneut, nur um sicher zu gehen, dass das funktioniert. Und tatsächlich gibt es einen kleinen
Bug, während ich das teste. Du kannst sehen, dass es tatsächlich mein Charakter hier oben
funktioniert. müssen wir beheben. Lassen Sie mich also zuerst
den Ton ausprobieren , bevor
wir etwas reparieren. Also lass mich hier oben bleiben und spielen. Sie haben ein bisschen mehr Gesundheit, also muss ich es noch einmal versuchen.
Okay, das funktioniert auch. Großartig. Der Sound funktioniert also. Wir müssen dieses
Buchstabenproblem in ein wenig beheben. Das nächste, was wir tun wollen, ist Death Sound der Spieler zu
spielen. Gehen Sie also zur
Spielerbasis, gehen Sie zum
Schaden, und wenn
der Spieler stirbt, also hier im Tod, wenn
er auf wahr eingestellt ist. Also lasst uns hier unten wieder zu
Tode gehen. Ich bin auf wahr, wir
wollen den Multicast spielen. Lasst uns das
hier hochziehen, um mehr Speicherplatz einen benutzerdefinierten
Ereignismulticast-Tod
aufzurufen. Lassen Sie uns es
zuverlässig durch
den Multicast führen und dann
Sound vor Ort abspielen. Also machen wir das
Gleiche noch einmal. Es ist gut
zu üben, es einfach immer wieder zu machen. Und plötzlich
siehst du dich selbst und Experte darin. Also lasst uns den
Tod als Auswirkungen machen. Und für diesen müssen
wir wieder zur
Struktur zum Player gehen, um einen neuen Sound namens
Death Sound-Effekt zu erhalten. Sparen Sie. Und alle Spieler haben
die gleichen Soundeffekte. Ich klicke einfach auf diese und den Spieler, Spieler-Info. Und ändere das hier
unten in den Tod. Und das hier. Okay, also wenn du zu diesem gehst, ist
die Tiefe eingestellt. Lassen Sie mich jetzt einfach nicht verbundene Pins
verstecken. Und hier drüben nennen wir
sie Multicast-Tod. Jetzt nennen wir es hier
und setzen diesen Texteffekt. Nehmen wir jetzt die Spielerinformationen und lassen Sie mich etwas mehr Platz schaffen. Hier können wir Break und
Haydn verbundene Pins sehen und wir können den Tod hier einfach
als Auswirkungen nutzen. Und das hier können wir
sagen, Hol dir einen Schauspielerstandort. Und lass es mich tatsächlich hochziehen. Es gibt mehr Platz
zum Arbeiten. Und zieh das alles nach unten. Einfach so. Jetzt
spielen wir den Soundeffekt. Lass mich tatsächlich sterben
und testen es aus. Wenn ich also nur auf
diese Bilder stoße, kannst
du sehen, dass du
diesen Soundeffekt hast. Und jetzt brauchen wir auch einen
Response Soundeffekte. Also lass mich hier rauf
gehen und einen Blick auf den Code werfen. Vielleicht musst du
es einfach in den Tod falsch schreiben. Werfen wir
einen Blick auf den Code. Wenn wir also
sterben oder nicht sterben. Das ist also nicht mehr. Und das wiederholen, und mal sehen, wo
wir
den Tod tatsächlich auf falsch gesetzt haben. Ich weiß eigentlich nicht
, wo wir es gemacht haben. Versuchen wir also zu
mögen, was Sie
jetzt tun können, um etwas zu finden. Dies ist ein gutes Lehrbeispiel. Wenn ich jetzt mag, erinnere mich
nicht, wo ich
das Falsche gemacht habe. Ich kann mit der rechten Maustaste klicken und Referenzen suchen
sagen. Und dann kann ich einfach so nur Referenzen
in dieser Blaupause findet, dass das
nur Referenzen
in dieser Blaupause findet,
was meiner Meinung nach in
Ordnung ist, weil ich denke, dass es hier verwendet wird. Aber wenn Sie möchten, können
Sie darauf klicken. Finden Sie in allen Blaupausen. Das wird
diese verwendete Funktion tatsächlich in
all Ihren Blueprints finden . Also kann es
das tatsächlich tun, um aufzuspüren , wo er
das Todesereignis tatsächlich wieder benutzt hat. Also hier habe ich es
im Widget Blueprint in unserer Haupt-Benutzeroberfläche gefunden. Ein Doppelklick hier würde
dich zum Menü bringen. Und genau hier haben wir es gemacht, wo
wir geklickt haben, Okay, und es hieß, der
Tod sei falsch. Jetzt machen wir es
hier drüben im Tod. Gehen wir also zurück
zur Spielerbasis. Und wenn die Schulden falsch sind, spielen
wir den
Multicast-Tod, wo es so ist, als hätte er die
Reaktions-Soundeffekte. Was wir hier also tun können, ist, dass
wir
einfach diesen Tod benutzen können, anstatt einen neuen namens
Multicast zu antworten . Also werde ich
das ein bisschen wegziehen. Was wir hier unten tun können,
nennt man Multicast-Tod. Und jetzt können wir zu den Player-Info
zurückkehren eine neue Variable namens
Response Soundeffekte
erstellen. Und es ist ein solider Hinweis
, der zur feindlichen Basis geht. Klicken Sie nun auf
die Spielerinformationen und
stellen Sie den Soundeffekt so ein, dass er
reagiert, kompiliert und gespeichert wird. Gehen wir nun zum, lasst uns hier unten gehen,
nehmen Sie diese Spieler-Info, brechen Sie sie entweder nicht verbundene Pin. Also verwende ich
die Antwort. Und dann können wir es einfach hier
verbinden und wieder den Schauspielerstandort bekommen. Und jetzt spielen wir
den Response Soundeffekt. Also lass es mich versuchen, und ich glaube, es wird funktionieren. Also spielt es diesen Santa Fe. Und wenn wir auf Okay klicken. Und Sie können sehen,
dass ich diese Antwort und Wirkung habe. Okay, Ehrfürchtig. Also, dass die Arbeit am Client und es
wahrscheinlich auch auf
dem Server funktionieren wird, weil dies durch den Server ausgeführt wird. Das waren also alle
Soundeffekte. Wenn du willst,
kannst du auch die Musik hier hinzufügen. Das hier. Sie können dieses
einfach spielen und dieser wird wahrscheinlich clientseitig
spielen. Ich denke nicht, dass Sie dies durch
einen Multicast
spielen sollten , weil
die Spieler die
Geräusche
natürlich zusammen hören, als würden sie nicht
denselben Soundtrack
in derselben Sekunde teilen . Spielen Sie das einfach durch die
Kunden und versuchen Sie zu üben. Vielleicht versuche einfach
da reinzugehen und das selbst zu machen. Aber ich werde das wahrscheinlich am Ende
dieses Kurses machen , weil es ein bisschen nervig ist,
die Musik
ständig zu spielen ,
während ich spreche. Klicken wir also auf
Datei und Alles speichern. Und lass uns
zur nächsten Lektion übergehen.
93. Beheben des Totenkopfes der Leiter: Lasst uns nun den
Leiterfehler beheben, wir im vorherigen Video gesehen haben. Also hier oben. Wenn ich also hier oben beschädigt werde, bleibe
ich drin stecken, lasst
es uns noch einmal versuchen. Ich bleibe hier in
dieser Kollisionsbox stecken. Und das liegt daran, also lass mich dieses Spiel tatsächlich
schließen und zurück zur
Spieler- und Spielerbasis gehen. Und der Grund dafür liegt
hier in unseren IstKundenwesen. Wenn wir also setzen,
klettert es auf „false“, und das stimmt nicht. Sie können hier sehen, dass wir
den Kollisionstyp auf **** ändern . Und denken Sie daran, dass wir
diesen Kletterspieler gemacht haben um dies zu umgehen,
diese Kollisionsboxen hier oben. Und wenn wir es ändern, ist
wie Kollisionstyp in ****
, bleiben wir tatsächlich
in diesen Kollisionsfeldern
stecken . Das ist es, was
wir versuchen zu tun. Also müssen wir hier etwas neu oder kleine Neuprogrammierung machen. Wenn ich auf diesen klicke,
lass mich diesen Pin ausblenden. Okay, also um damit anzufangen, gehen
wir tatsächlich zurück. Ich habe gefunden, dass die beste Lösung dafür
darin besteht, hier
zu den Kachelkarten und innerhalb
der Kachelkarten zu gehen . Wir haben also etwas, das als
Insight national geführt wird, minimieren dies und gehen zum
Klettern und Klettern. In dem Kunden, der hergestellt wurde,
haben wir etwas gemacht, das als
obere Kollisionsbox bezeichnet wird. Und hier stellen wir fest, ob du hochklettern
kannst oder nicht. Und du siehst die Kiste hier. Das ist, ich weiß nicht, ob man es visuell
sehen kann , als wären
dies die Bugs tatsächlich. Der über dem Buchstaben. Dies ist die, die wir hinzugefügt haben, was dazu führt, dass
Sie nicht hochklettern können. So können wir den Up-Button überspannen. Wenn Sie auf der
Leiter sind und sich daran erinnern, können
Sie versuchen, das
Buchstabenvideo anzusehen , wenn Sie sich
nicht erinnern, aber es ist eines, das wir hinzugefügt haben. Und anstatt es hier hinzuzufügen, lass mich tatsächlich
etwas anderes machen. Also in der Kachelzuordnung,
die wir hinzugefügt haben, also geht
dieser Schauspieler in das Ansichtsfenster, Lassen Sie uns tatsächlich
ein Kollisionsfeld um diese Plattform erstellen
, ist , dass wir
diese Plattform definieren. Um dies zu tun, klicken wir
hier hoch und fügen Sie eine
Kollision bei einer Box-Kollision hinzu
und suchen Kollision bei einer Box-Kollision wir es
leugnen, klettern Sie hoch. Wir verweigern also, dass der Spieler die Aufwärtstaste
drückt, damit
er die Leiter dort oben spammen. Und das Gute daran, es hier drin
zu schaffen. Selbst wenn wir zehn
Buchstaben oder zehn Seile hinzufügen, wird
dies
für alle funktionieren, denn es ist eine Schachtel, die hier
alles bedeckt. Der beste Weg, dies hier zu setzen,
ist jetzt, lass uns in die Perspektive gehen und
auf
die rechte Ansicht klicken und dann hier oben in den Lit-Modus
gehen. Und du wirst das viel besser
sehen können. Und lass mich einfach ein bisschen
rauszoomen. Okay, also diese
Kollisionsbox hier, der beste Weg, dies zu tun,
ist, dass Sie nur
diese Plattform abdecken müssen , damit Sie
versuchen können , mit dem
x hier zu gehen, oder? Hundert, zweihundert,
dreihundertachtzig. Und du kannst einfach
versuchen, diesen Bereich abzudecken. Also vielleicht 375, nur
ein bisschen kleiner, so
etwas oder 73 AT nur um sicherzustellen
, dass es auch hier
draußen den Bereich
abdeckt. Und für die Kollisionsbox
Y und Z sind es vielleicht 35. Ich denke, es
deckt schon viel davon ab. Und versuche einfach
genau über dem Gras zu decken. Du musst damit
nicht wahnsinnig werden. Also
entferne ich das Schnappen. Und genau wie die obere
Linie knapp über
diesen Kollisionskästen hier
unten auf dem Rasen liegt . Okay, also denke ich, das
deckt es gut ab. Lassen Sie uns kompilieren und speichern, und lassen Sie uns
dazu gehen und klicken Sie darauf, wenn
sich die Komponente überlappt. Also klick hier und sag,
Schauspieler hat markiert. Und nochmal, sagen wir,
es ist der Spieler. Drinnen von hier. Wir müssen es erneut
durch eine Behörde führen. Switch hat also die Berechtigung
und stellt sicher, dass es der
Server ist, auf dem er ausgeführt wird. Lasst uns einen Zweig machen. Jetzt fragen wir also,
ist es der Spieler? Wenn ja, nehmen wir dies und
sagen, erhält Spielerreferenz. Und das wollen wir einfach noch einmal
nennen. Kann hochklettern. Denken Sie daran, eine Nachricht
zu wählen. Kann hochklettern, kann also nicht klettern, sondern kann Nachricht hochklettern. Und wann immer Sie
kollidieren, denken Sie daran, was auch immer Sie mit
dieser Box kollidieren, die wir gerade hier hinzugefügt haben. Sie können die Aufwärtstaste nicht
drücken, gerne klettern, weil Sie
sonst das Seil ausgeben können. Also nimm es und
setze es negativ aus. Das ist also richtig. Als Nächstes klicken Sie hier
und klicken Sie auf Endüberlappung. Und lassen Sie uns einfach
diesen Code einfügen und verbinden Sie ihn hier. Also andere Schauspieler hier unten, auch
andere Schauspieler hier oben. Und lasst es uns wahr werden. Jetzt kannst du jetzt hochklettern, wenn du nicht in dieser Box bist. Okay, jetzt
haben wir den Code hier. Also lasst uns zur blinden Basis gehen. Und anstatt die Basis zu klettern, löschen wir jetzt den Code hier
, weil wir ihn nicht brauchen. Lassen Sie mich dieses
Feld tatsächlich vollständig löschen. Entferne es. Ich werde dir Fehler geben und all dies auch
entfernen. Also jetzt haben wir den
Code stattdessen hierher verschoben. Das ist es, was
es stattdessen einstellen wird. Das nächste, was
wir tun können, ist zu gehen, lass uns zur Spielerbasis gehen und einen Blick auf den
Client werfen, der Code ist. Der Kunde, der
Code war, war also hier oben. Und innerhalb des
Klettercodes
hatten wir dieses Set genannt. Set kann hochklettern. Dies ist die, die wir
gerade hierher gezogen sind. Also was ich tun will, lass mich
tatsächlich zurückgehen. Wo ist es hier? Was ich hier
drin machen möchte, ist jetzt
wie Branch hier zu machen
und einen NOT Boolean zu schreiben. Wenn Sie also nicht aufstellen können, was bedeutet, dass Sie tatsächlich mit dieser Box
kollidieren, haben
wir gerade hinzugefügt. Also wenn du damit
kollidierst und auch fragst,
ob du kletterst. Also lasst uns loslegen ist klettern. Und es ist hier klettert. Und schreibe ein UND-Boolean. Lass es mich eigentlich einfach
machen, damit ich es dir viel besser
erklären kann . Also verbinde das hier. Also was ich hier machen möchte. Wenn du also Bob nicht besteigen kannst, was bedeutet, dass du hier
mit dieser Box kollidierst. Wenn ich es einfach überziehe,
kann es sie tatsächlich alle zusammen haben. Wenn Sie also
mit dieser Box kollidieren, bedeutet das, dass
dies falsch ist, als ob Sie nicht Geld klettern können, was dies hier wahr macht. Wenn du also nicht hochklettern kannst
und deine Klienten sind, dann bist du immer noch auf der Leiter. Sie stehen also unter Brief, aber Sie
überlappen dies auch,
was bedeutet, dass Sie hier oben sind. Dann wollen wir uns noch einmal daran erinnern,
bevor wir es hier
im isClient setzen ,
ist auch der verklumpende Spieler. Das wollen wir. Denn wenn Sie
klettern und diese
Box überlappen, möchten
Sie
die Kollisionsfelder
hier oben deaktivieren , damit Sie hochklettern können. Das ist es, was wir versuchen zu tun. Lassen Sie mich also zurück
zum Event Graph. Lassen Sie mich das zuerst schließen und um es mir selbst leichter zu machen, erstellen
wir tatsächlich
eine Aufzählung. Klicken wir also mit der rechten Maustaste auf
die Blueprints Enumeration, und nennen wir es
einen Kollisionsstatus. Wofür ich
diese Aufzählung namens
Collision State verwenden werde. Ich werde nur
eine Liste von zwei Gegenständen erstellen, dieselbe Kollision an
und Kollision aus. Sehr, sehr einfache, sehr
einfache Aufzählung hier. Also nur um zuzuhören, denken Sie daran, und Aufzählung
ist nur eine Liste
aller gewünschten Elemente. dieser willen wollen wir
die Kollision nur ein- und ausschalten. Dies ist nur die Liste. Schließen wir es und gehen wir hier
tatsächlich zur
Spielerbasis zurück. Denk dran, wir können diese Kapsel nicht
einfach nehmen. Whoops, wir können einfach
diese Kapsel nehmen und sagen Kollisionsobjekttyp
einstellen und dann zum Beispiel auf
Kletterspieler setzen. Wir können das nicht tun, denn
denken Sie daran, dass wir
dies über den Server ausführen , damit
der Client einen Fehler hat. Wenn Sie also auf Jetzt
spielen klicken
und versuchen Sie tatsächlich zu
sehen, ob das funktioniert. also als
Kunde spiele, kann ich hochklettern. Du kannst sehen, dass ich hier klettern kann, aber es wird unseren Charakter stören. Und anstatt es auf diese Weise zu
tun, müssen
Sie es
durch eine Vertretungsbenachrichtigung ausführen nur um die Kunden
auch über diese Änderungen zu informieren. Nehmen wir also an, Lasst uns
zuerst alles
speichern und jetzt können wir unsere Aufzählung
verwenden. Machen wir eine neue Variable. Nennen wir es eine
Kollisionszustände. Du kannst es auch etwas
anderes nennen, wenn du willst. Aber ich
nenne es einfach Collision State. Und ich ändere den
Variablentyp in den E-Kollisionsstatus, wie auch immer wir es hier
in der Aufzählung nennen. Also E Kollisionsstatus, so
nannten wir es hier draußen. Also lasst uns jetzt zusammensparen. Und ich werde
diese Replikation zu
einer Wiederholungsbenachrichtigung machen und dann die Funktion
entpacken. Ich übernehme diesen
Kollisionsstatus und sage Enumeration einschalten. Also haben wir das jetzt ein
paar Mal gemacht. Wenn die Kollision aktiviert ist, möchte
ich, dass Sie
meine Kapsel nehmen und den
Kollisionsobjekttyp
als Teich festlegen , weil wir mit
allem wie diesem kollidieren
wollen. Wenn meine Kollisionen
von ich kopiere,
füge es ein und setze es so
ein, dass er als Spieler klettert. Also wird es
die Plattformkollision bringen, eigentlich alle
Kollisionen des Bodens. Also sehr einfache Aufzählung, einfach die Kollision ein- und
ausschalten. Jetzt können wir das sehr nützlich nutzen. Also können wir diesen
Kollisionsstatus übernehmen und ihn auch hier einstellen. Also denken wir jetzt, dass
ich dachte, dass wir
es tun würden , wenn wir nicht hochklettern können, was bedeutet, dass wir hier oben
mit dieser Box kollidieren. Und wir klettern. Das bedeutet, dass wir
die Kollision ausschalten wollen, weil wir klettern und diese Plattform
umgehen wollen. Wenn wir
diese Kiste jedoch nicht hier treffen oder wenn
wir nicht klettern, dann wollen wir
die Kollision einschalten , denn vielleicht,
wenn wir nicht klettern, obwohl wir diese Box
berühren, wenn wir nicht klettern, stehen wir
vielleicht oben
drauf und dann
wollen wir die Kollision nicht ausschalten, sonst fallen wir
durch den Boden. Also wollen wir
die Kollision einschalten, wenn
wir nicht klettern oder wenn
wir uns nicht berühren. Diese Box hier oben
bedeutet, dass wir hier unten sind
und dann wollen wir tatsächlich, dass unser Boden liegt.
Das ist also richtig. Eine andere Sache ist,
ich meine, du kannst versuchen,
es zu spielen und zu sehen, was passiert. Also spielst du es hier. Ich kann hier rauf gehen. Und wenn ich getroffen werde,
siehst du, dass ich immer noch stecken bleibe. Und das Problem liegt hier in der
kolumbianischen Unwrap Funktion. Denken Sie daran, dass wir all diese hatten. Ich werde sie tatsächlich alle
löschen. Und ich verbinde
die Pins wieder wie zuvor. Weil wir sie nicht mehr wirklich
brauchen. Und du kannst
all das einfach näher bringen. Okay, also lasst uns kompilieren
und speichern und versuchen wir jetzt zu spielen. Mal sehen, ob es funktioniert. Jetzt kann ich sehen, ich kann klettern und spiele gerade als
Kunde. Also kann ich das machen. Der andere Bug
ist gerade, dass ich nicht runterklettern kann. Ich versuche
runter zu klettern, aber ich kann nicht. Aber du kannst sehen, dass
der Tod funktioniert hat. Alles funktioniert. Das Problem ist gerade
so, als würde es gerade funktionieren. Und wenn ich
zu Boden springe, kann
ich wieder laufen. Wenn ich hier hochspringe, kann
ich wieder laufen. Das Problem ist, dass ich nicht runtergehen
kann. Also müssen wir das beheben. Also müssen wir zum Event Graph gehen. Und das Problem ist hier drüben. So kann klettern ist
wahr, wenn man klettern kann und
versucht nach unten zu klettern. Also das ist es, was, denken Sie daran, dass wir diesen Timer gemacht haben,
wo wir prüfen ob der Spieler
versucht, nach unten zu klettern. Und ja, wenn du runterkletterst, aber wir haben die Kollision nicht wirklich
ausgeschaltet. Lassen Sie mich also kopieren,
fügen Sie das hier oben ein. Also hier im Timer. Wenn Sie also tatsächlich
mit dem Klettern beginnen, ist die Klemmung auf „true“ eingestellt. Ich möchte meine Kollision ausschalten. Und hier oben, wenn wir
den isClient absagen. Wenn du also mit dem Klettern
fertig bist, kann
ich es tatsächlich
so einstellen, dass es wieder läuft. Also richte es auch hier ein. Jetzt
sollten alle Probleme behoben werden, wenn wir das richtig gemacht
haben. Also lasst es uns noch einmal versuchen. Ich kann klettern, ich kann laufen, ich kann auch
runterklettern. Alles funktioniert
und wenn ich hier oben sterbe, werde
ich einfach gedrängt. Das funktioniert auch.
Und wenn ich sterbe , funktioniert das auch. Also denke ich, dass es eine einfachere Möglichkeit ist, mit der Kollision umzugehen, und versuchen
wir, hier oben
weggeworfen zu werden. Das funktioniert auch. Ich kann klammern und ich
kann auch hier oben sterben. Ja, das funktioniert auch. Okay, das ist also eine
einfache Möglichkeit, dies zu tun, indem Sie
einfach eine Aufzählung
mit der Kollision ein- und ausschalten
und dann auf eine Wiederholungsbenachrichtigung schalten. In der Benachrichtigungsfunktion schalten
Sie die
Kollision nur ein und aus je nachdem, was
Sie hier einstellen. Und denken Sie an die Variablen „On“ oder
„Rep Notify“. Sie können Benachrichtigungen nur
über einen Server festlegen. Ereignisse können sagen, dass das genug ist. Denn denk dran, du kannst nicht einfach hier rein und
es durchmachen. Sie müssen auf dem Server sein bevor Sie
ungelesene Funktionen einstellen können. Also sehr, sehr wichtig und das ist es, was wir
tun, um immer zu überprüfen ob es der Server ist,
über den
Sie laufen , und ob dies der Fall
ist, das ist richtig. Ja. Das war es dafür behoben. Und lass uns
zum nächsten übergehen.
94. Strukturen Erfahrung hinzufügen: Lassen Sie uns nun
unser Nivelliersystem erstellen. Also zuerst, was wir für
die Nivellierung brauchen, ist hier in der Struktur und den
feindlichen Informationen oder Tierinformationen, wir müssen Feinden
Erfahrung geben , denn
offensichtlich wird
jeder Feind
etwas geben Art von Erfahrung und es wird
anders sein. Schreiben Sie also Erfahrung hier in der Struktur und ändern
Sie sie in eine ganze Zahl. Wie du kannst, du kannst es in einen Schwimmer
stecken. Aber die Erfahrung, die ich will, du hast kein wirklich Komma, also hast du keine
Dezimalstellen. Und deshalb brauchen wir nicht
wirklich einen Schwimmer. Das sind also ganze Zahlen. Und ich hätte gerne,
wenn du ein Spiel mit etwas hast, das zum Beispiel
20,5 Erfahrung
gibt, als du es auf einen Float setzen
müsstest. Sonst gehe ich nur
mit einer Ganzzahl, weil nur ganze
Zahlen
sind, die ich mache. Und für die Erfahrung werde
ich
es tatsächlich direkt unter den Schaden legen. Dieser wird also angeben, wie viel Erfahrung
jedes Tier geben wird. Also lasst uns jetzt zum Feind
gehen und dann stützen wir uns. wir daran, wie kurz zuvor zu kompilieren
und zu speichern. Und lass uns zum Schwein gehen
und den vollständigen
Blueprint-Editor öffnen. Und da drinnen für die
Erfahrung für das Schwein, lassen Sie uns zum Beispiel jedes Mal 20 Erfahrung
machen, wenn wir ein Schwein töten. Für die Schnecke bekommen wir jedes
Mal, wenn
wir eine Schnecke töten , zum Beispiel
zehn Erfahrungsverbindungen. Sparen Sie. Whoops. Okay, das wird also für das Tier
getan, die Struktur für die Tiere. Lasst uns jetzt in den Spieler gehen. Der Spieler
benötigt zwei Variablen. Also brauchen wir zuerst ein Level. Also was ist dein Level derzeit? Und lassen Sie uns das
in eine ganze Zahl setzen. Das sind ganze Zahlen. Und lassen Sie uns auch Erfahrung machen. Wie viel Erfahrung
hast du gerade? Und das ist auch eine ganze Zahl. Lasst uns die ausdrücken. Ich lege sie hier oben direkt unter
den Basisschaden. Okay, also lasst uns das aufheben. Und das letzte Ding. Lassen Sie mich
jetzt zuerst
zur Spieler- und
Spielerbasis gehen und kompilieren und speichern. Und hier in den Eigenschaften und
der Spieler-Info-Struktur, dem Level als Standard, beginnst
du mit einem. Denk also daran, du
beginnst nicht mit Level 0, du beginnst mit Level eins. Denken Sie also daran, das
hier als ausländische Erfahrung zu schreiben. Wir werden das später aktualisieren, also mach dir darüber keine Sorgen. Lass es uns schließen. Also das Letzte, was
du definieren musst, wie viel Erfahrung
du pro Level benötigst. Sie haben also irgendwie so,
als ob Sie eine
Liste benötigen , welche Erfahrung für welches Level
benötigt wird. Das brauchen wir also, um tatsächlich eine neue Struktur zu
schaffen. Klicken wir mit der rechten Maustaste und gehen wir zu Blueprints und
erstellen eine neue Struktur. Und dieses hier nenne ich
es Level-Info. Es enthält also Informationen darüber, welche Erfahrung wir für jedes Level
benötigen. Es braucht also nur zwei Variablen. Wir brauchen das Level. Und das wird
eine ganze Zahl sein. Und diese
nennt man Erfahrung. Wie viel
Erfahrung braucht man? Und das wird auch eine ganze Zahl sein. Also zu zwei sehr grundlegenden
Dingen, wie hoch ist das Level? Und statt Erfahrung können
wir es einfach als
Erfahrung erforderlich bezeichnen. Es ist also ein erklärendes Niveau und Erfahrung
erforderlich, um aufzusteigen. Lasst es uns schließen. um mit
dieser Struktur arbeiten zu
können, müssen wir tatsächlich mit Datentabellen
arbeiten. Tische. Wir werden in der nächsten Lektion
mit denen arbeiten. Also lasst uns weitermachen.
95. Einführung in Datentabellen: Jetzt, da wir diese
Level-Info-Struktur haben, lassen Sie uns mit
Datentabellen arbeiten und
sie sind so nützlich, dass
Sie sehen, dass sie gut zu verwenden sind und auch sehr einfach sind, nicht, nicht wirklich
komplex konzept. Gehen wir zum Ordner,
erstellen einen neuen Ordner, nennen ihn Datentabellen und haben alle unsere
Datentabellen hier. Im Moment
werden wir nur einen haben, aber ich war gerne strukturiert. Und jetzt können Sie mit der rechten Maustaste
hier klicken und Sonstiges. Und hier können Sie
Datentabelle auswählen, diese. Jetzt fragt es Sie
, nach welcher Struktur soll
ich eine Datentabelle erstellen? Und dann müssen Sie die Struktur
angeben. Und die eine ist diese Level-Info
, auf die wir geklickt haben. Okay, und nennen wir es
d t für Datentabelle Ups. Und ich nenne
es auch Level-Info. Und doppelklicken Sie darauf. Und hier befinden wir uns in
einer DataTable. Jetzt brauchst du einen neuen Wert, also musst du hier
auf Addieren klicken. Jetzt um einen Mehrwert zu schaffen. Dieser Wert gibt Ihnen eine Zeile
und dann können Sie die Variablen sehen, die Sie
innerhalb der
Level-Info-Struktur erstellt haben . Jedes Mal, wenn Sie eine neue
Variable in Ihrer Struktur hinzufügen, befindet
sie sich hier in
dieser Datentabelle. Was diese Datentabelle ist, können
Sie sich diese nur als
Excel-Excel-Dokument vorstellen ,
in dem Sie
beispielsweise das erforderliche Niveau
und die Erfahrung haben . Und dann machst du einfach mehr
Zeilen und definierst diese. Für die erste
statt einer neuen Zeile benenne
ich sie einfach in eine um. Wenn Sie also auf F2 klicken, um umzubenennen
und auf eins zu klicken, können
wir auch
mit der rechten Maustaste klicken und auf Umbenennen klicken. Das liegt an dir. Hier fangen wir also auf Stufe
eins an, offensichtlich nicht 0. Hier muss man also schreiben, wie viel Erfahrung
benötigt wird, um bis zu zwei zu erreichen. Also 50 Erfahrung, um
bis zu zwei zu erreichen. Und dann lass mich einen neuen Wert hinzufügen und dass die Zeile ich
einfach zwei aufrufe. Und das ist sehr wichtig. Wir werden diese tatsächlich
benutzen, also nenne
sie unbedingt 1234 und so weiter. Für diesen braucht
man auf Stufe zwei 75 erfahrene
Love Lab. Und das rufe
ich drei an. Auf Stufe drei
brauchst du 100, um aufzusteigen, und lass uns einfach fünf machen. Also um vier braucht man 125 und das ist
für Sie geeignet, um einhundert,
einhundertfünfundzwanzig . Und auf Stufe fünf
und fünf brauchst
du 150, um aufzusteigen. Wir können also einfach definieren wie viel Erfahrung
Sie benötigen, um zu verbessern. Und offensichtlich
kommt das Spieldesign hier ins Spiel. Sie müssen
alle diese Zahlen ausgleichen. Also schließen wir es jetzt und das war es für Datentabellen. So kannst du weitermachen
und alles speichern. Und lasst uns
zur nächsten Lektion übergehen.
96. Daten-Tabellen über Google Sheets: Das Coole
an Datentabellen ist also, Sie
dies nicht wirklich ständig manuell machen müssen, wie zum Beispiel alle diese Zeilen erstellen. Manchmal hat man
zum Beispiel das Spiel, das
ich auf Steam veröffentlicht habe,
wenn man
Gegenstände nur in lustiger Geschichte hat. Im Farmschwanz
habe ich wie alle Artikel, die
Sie im Shop kaufen können, ich habe sie tatsächlich
in einer Datentabelle. Und das wird so viel
Zeit in Anspruch nehmen, denn wenn Sie zehn oder 20 Variablen
für jedes einzelne Element haben , wird
es ewig dauern. Und deshalb ist die Verwendung von
Google Sheets viel schneller und
ich würde das empfehlen. Also hier in Google, Beispiel wenn du
ein Konto erstellst und hier
reingehst und zur Fahrt gehst. Hier drin können
Sie einfach mit der rechten Maustaste klicken und ein neues Google Sheets
erstellen. Und in diesem
Google Sheet kann
ich mir jetzt meine Datentabelle
ansehen. Wenn Sie also nur minimieren, wenn Sie sich nicht an
die Struktur erinnern, gehen
Sie einfach zurück
zur Struktur, schauen Sie sich sie an und dann müssen Sie einfach die Namen hier
schreiben. Wenn ich zum Beispiel in mein Google-Blatt
zurückgehe, musst
du
den genauen Namen Helden schreiben, auch mit den Großbuchstaben. Also
kann ich zum Beispiel sagen,
lass uns normalerweise mit der
Zeilennummer anfangen und eigentlich genau hier.
Versuchen wir es einfach. Also diese Nummer hier, und ich werde hier einfach den Stil
ändern, nur um es viel besser aussehen zu
lassen, nur um meinetwillen. Und hier oben wird es mutig sein. Okay? Also hier oben haben wir die erste
Variantenvariable, die Level sagt. Und der nächste sagt, dass
Erfahrung erforderlich ist. Ich werde das größer machen. Also so etwas. Das könnte mein,
mein Google Sheet sein. Nun, das ist meine Datentabelle. Also in der Reihe bei Nummer eins. Wir haben also Level eins und
das spielt keine Rolle. Ich mache sie einfach als Zeilennummern. Also auf Level 23, und du kannst sehen dass es viel schneller ist, weil
ich einfach so ziehen kann. Jetzt kriegt es das alles. Und wenn Sie neu
bei Google Sheets sind, können
Sie sich ein
Tutorial auf YouTube ansehen. Es dauert zwei Minuten. Wenn ich diese
Zahlen auswähle, kann
ich zum Beispiel nach unten ziehen und
diese automatisch auflisten lassen. Und die
nötige Erfahrung kann ich
zum Beispiel sagen, wir fangen mit
50 an und dann kann ich 75 sagen. Und ich glaube, das kann es automatisch
machen. Lass es mich versuchen. Das kann es auch
automatisch machen. Sieht, dass du
25 darüber hinzufügst und
das macht es einfach automatisch. Sie können sehen,
dass dies viel schneller
ist, als hier unten jede
einzelne Zahl einzugeben. Das macht es
automatisch für mich. Und Sie können sogar
Formeln in Excel erstellen, um Ihr Spiel
auszugleichen,
sodass Sie nicht jede einzelne
Zahl manuell eingeben müssen . Aber offensichtlich müssen wir
das Spiel testen , um sicherzustellen, dass es funktioniert. Nehmen wir an, dieses
Google-Blatt war in Ordnung und gut. Und jetzt klicke ich auf Datei, gehe zum Download und
gehe zum Download als CSV, sehr wichtiger CSV. Aber jetzt wird es heruntergeladen. Dies ist meine heruntergeladene Datei, also kann ich sie jetzt umbenennen. Und in was Sie umbenennen müssen
, ist derselbe Name
wie die Datentabellen. Wenn ich also hierher gehe, heißt
es DT Level Info. Stellen Sie also einfach sicher, dass Sie genau den gleichen Namen
haben, Informationen auf
DT-Ebene mit
den Großbuchstaben. Ich ziehe es rein und lege
es hier in dieser Datentabelle ab. Und eigentlich denke ich, dass ich das muss, eigentlich muss ich es nicht, aber wenn Sie es nicht hatten, damit Sie sehen können, ob Sie
darauf doppelklicken, können
Sie sehen, dass Sie
alle diese Einträge bekommen. Sehr, sehr nett. Es hat das
automatisch gemacht und es kann diese Informationen jetzt
tatsächlich verwenden. Und ich kann sehen, dass es so
viel schneller ist. Was ich jetzt vorher gesagt habe, können
wir es tatsächlich auch löschen. Wenn Sie also nichts haben, wenn Sie es noch nicht geschafft haben
und die Struktur haben,
lassen Sie mich zuerst alles speichern. also zu diesen Datentabellen gehen, können
Sie sie einfach hier
hineinziehen. Dann werden Sie gefragt,
dass Sie diese Datentabelle importieren, Zeilentyp der
Datentabelle. Dann musst du hier die
Level-Info auswählen, die eine. Und ich werde nur
sagen, ignoriere zusätzliche Felder. Manchmal habe ich zusätzliche
Felder, um meine Formel zu berechnen. Es sollte also einfach zusätzliche Felder
ignorieren. Und zusätzliche Felder sind genau so, als
ob es sich nur Ihre,
Ihre Variablen hier oben ansieht . Wenn Sie etwas haben, z. B. wenn Sie eine andere
Variable haben, die in Ihrer Struktur tatsächlich nicht existiert, wird
dies ignoriert. Das bedeutet es also. Und ignoriere fehlende Felder. Eigentlich will ich das nicht, denn was ist, wenn wir etwas
verpassen? Und das Feld Schlüssel importieren
sind hier nur unsere Zahlen. Also lass mich das versuchen. Unsere Nummer hier
ist also mein Eingabeschlüssel, und Sie werden sehen, wofür dieser
Schlüssel später verwendet wird. Also mach das und
lass uns versuchen, das zu tun. Vielleicht kann es das nicht, vielleicht
kann es manchmal bei Bugs raus. Lassen Sie uns also anwenden und doppelklicken. Jetzt können wir sehen, dass es klappt. Jetzt können Sie
all diese Einträge sehen. Und es sieht großartig aus. Also lasst uns jetzt alles speichern. Und ich würde empfehlen, Google Sheets jedes
Mal zu
verwenden , wenn Sie ein Spiel machen
und ein Projekt erstellen, es ist so viel schneller zu verwenden. Sie können diese Zahlen wahrscheinlich
optimieren. Vielleicht benötigen Sie
diesen Zeilennamen nicht wirklich und Sie können das Eingabeschlüsselfeld
genau mögen. Du kannst
dieses Level einfach hier schreiben. Und das können Sie nur tun, um alle diese Zeilen hier
zu minimieren. Aber jetzt funktioniert das. Lasst uns mit dem nächsten übergehen.
97. Eine Funktionsbibliothek erstellen: Okay, das nächste,
was wir tun müssen um diese
Datentabelle in unserem Code zu verwenden, müssen
wir sie
durch eine Bibliothek schaffen. Und das
haben wir noch nie gelernt, aber es ist sehr einfach. Keine Sorge. wir jetzt mit der rechten Maustaste. Und lasst uns einen neuen
Ordner erstellen und ich nenne ihn Bibliotheken. Dies ist das letzte neue
, was wir hier lernen werden. Also lasst uns
hier reingehen und mit der rechten Maustaste klicken. Und hier im Tab Blueprints haben
Sie etwas, das
als Funktionsbibliothek bezeichnet wird. Bisher haben wir von den Blueprint-Kursen
erfahren. Wir haben etwas über
die Strukturen erfahren, wir haben etwas
über Aufzählungen erfahren. Wir haben etwas über
Blueprint-Interfaces erfahren, und jetzt werden wir eine
Blueprint-Funktionsbibliothek erstellen. Sie können also sehen, dass wir all das
durchgemacht haben. Und diese ist auch eine
Bibliotheks-Makro-Bibliothek. So sehr ähnlich. Aber machen wir uns vorerst nur Sorgen um
die Funktionsbibliothek. Also lasst uns drauf klicken. Und ich nenne es einfach Funktionsbibliothek,
einfach so. Lassen Sie mich hier hineingehen und jetzt
sagen, dass die Funktion, die wir erstellen
möchten , heißt
Levelinfo. Wir versuchen also,
diese Ebene Informationen
aus dieser Datentabelle zu erhalten , die
wir extrahieren möchten. Das machen wir also
in der Funktionsbibliothek. Wir versuchen,
Informationen aus
dieser Datentabelle zu extrahieren , und wir
können diese in unserem Code verwenden. Also hier, hol dir Levelinformationen. Ich schaffe es rein. Und denken Sie daran, wenn wir etwas reines
machen, ist
es so, als würde man sie in
diese grüne Funktion verwandeln. Wenn ich also zur Spielerbasis gehe, kannst du ein Beispiel sehen, und wenn ich mich
zum Beispiel nur umsehe , bekommt das die Kontrolle. Rotation ist eine reine
Funktion und diese, die blaue, ist eine
unsichere Funktion. Also die reine Funktion,
Sie haben
diese Ausführungspins nicht , weil Sie sie hier nicht wirklich benötigen. Denken Sie daran, wann immer Sie nur Informationen
benötigen, benötigen
Sie keine Ausführungsstifte. Ausführungspins dienen nur
zum Festlegen von Informationen. So
stellen Sie zum Beispiel die Bewegungseingabe ein, Sie setzen in diesem Fall
das x ist der z-Wert. Aber hier bekommst du gerade die
Kontrolle Rotation. Einen Vektor abrufen wird nur Informationen
erhalten. Sie müssen
nicht wirklich neue Informationen festlegen. Hier,
Informationen auf Gate-Ebene, die ich bekomme. Ich setze es auf rein. Und die Eingabe
wird
aus den
Schlüsseleingaben extrahiert , die Sie hier eingeben. Die Tasteneingabe
ist also nur eine Zahl. Also mache ich neue Eingaben und es
wird eine ganze Zahl sein. Und ich nenne es Level. Also versucht es zu sehen. Das, was ich
hier machen werde, ist in der Spielerbasis, es wird einen
Blick auf die Spielerinformationen werfen und einen Blick darauf
werfen, welches
Level du bist. Und von dieser Ebene aus kann es die Nummer eins sehen. Von dieser Ebene aus
wird es Ihnen sagen, welche Erfahrung erforderlich ist,
um bis zu zwei zu erreichen. Das ist es, was
wir versuchen zu tun. Was dieses Level
und das, was wir verwenden
müssen , heißt Datentabelle abrufen. Abrufen der Datentabellenzeile. Wir versuchen, eine bestimmte
Reihe aus diesem Level herauszuholen. Wenn wir also Stufe vier sind, wird
es auf vier gehen. Und dann wird es eine Tabellenzeile
bekommen und diese Informationen 125
in der erforderlichen Erfahrung verwenden. Also lasst uns das versuchen. Wir können
es nicht einfach so anschließen, aber wir können zwei Strings sagen. Also konvertieren wir es zuerst
in eine Zeichenfolge, und dann kann es es schaffen. Konvertieren Sie es zuerst in eine Zeichenfolge und
konvertieren Sie es dann in einen Namen. Und dann gehen wir
hier rein, lass es uns verbinden. Und die Datentabelle, aus der wir extrahieren
möchten, haben
wir nur eine. Also wähle es hier aus. Und dann lass uns von
hier fahren und zurück sagen. Und wir fügen einen Return-Knoten hinzu. Und das ist die Information,
jetzt ist dies die Tabelle. Jetzt weiß es, als ob
wir auf Stufe vier sind, sehen
Sie hier draußen in den Informationen
, dass wir Stufe vier sind. Und wir brauchen so viel
Erfahrung, um aufzusteigen. Hier. Nennen wir es einfach Level Info
Satz von Informationen über Outgrow Level. Okay? Und das Coole an
Bibliotheken, die man eigentlich kann, sind globale Funktionen. Du kannst sie überall anrufen. Wenn ich jetzt einfach in meine
Spielerbasis gehe und einfach noch Levelinformationen
sage, kannst
du es sehen. Es ist hier aus der
Funktionsbibliothek, also ist es eine globale Funktion, die
Sie überall verwenden können. Und du könntest fragen, warum programmieren wir nicht einfach alles oder viele
Dinge hier drin? Es ist tatsächlich
teuer, dies zu tun. Ich habe viel darüber gelesen. Und manche Leute verzögern tatsächlich
ihre Spiele. Wenn Sie diese
Funktionsbibliothek haben, ist es sehr schwer. Ihr Spiel ist zurückgeblieben. Es klingt also so, als wäre dies
sehr, sehr schwer zu benutzen, wenn
Sie zu viel haben, aber in Fällen wie diesem, in denen
wir es tatsächlich benutzen müssen. Und manchmal müssen
Sie nur denken,
dass Sie
eine Funktion verwenden müssen, die ich in
50 Blueprints verwenden muss , die ständig in fünf
Blueprints verwendet werden muss, dann sollten Sie wahrscheinlich gehen in und schaffen Sie es
hier rein, zum Beispiel, die Level-Informationen
zu erhalten, können
wir das in unserem
Spieler-Controller, in unserer Benutzeroberfläche,
in unserem Spieler-Controller verwenden oder nicht wie
die Spielerbasis und die
gegnerische Basis steuern und so am. Wir können es also an vielen,
vielen Orten verwenden und es ist wahrscheinlich eine gute Idee, es hier
anstelle einer bestimmten Blaupause zu schaffen . Okay, also kannst du hier sehen, dass ich einfach Informationen auf Gate-Ebene sagen
kann, und jetzt
müssen wir hier etwas
anschließen , damit wir
diese Player-Info anschließen können, zum Beispiel kann ich dir einfach sehr schnell
zeigen. So können wir zum Beispiel
die Spieler auf das aktuelle Niveau bringen und wir können es hier anschließen. Und wenn
der Spieler zum Beispiel Stufe drei ist, extrahiert
er
diese Zeile Nummer drei,
und er weiß, dass Sie es brauchen. Jetzt kannst du
es von hier aus nehmen und es
aufbrechen und es
kennt dein Level drei. Und du brauchst hier 100 Erfahrene, um aufzusteigen. Also sehr, sehr coole
Methode, um es zu machen. Also haben wir, wenn ich es einfach sehr schnell
erkläre. Also hast du hier eine
Struktur namens Level-Info
erstellt und diese Variablen erstellt. Und danach
sind wir einfach in
Google Sheets gegangen und haben das hier
gemacht. Jetzt können Sie diese Informationen
ziehen und in diese Datentabelle ablegen. Ich werde nur hier
im Content Browser sein. Und dann müssen Sie auswählen, für
welche Struktur diese
Datentabellen diese Datentabellen. Und das haben wir gemacht. Also schaffe es einfach das für uns. Dann gehen Sie weiter und gehen zur Funktionsbibliothek
und erstellen diese,
holen Sie sich die Datentabellenzeile. Dann wählen Sie aus, welche Datentabelle und wie lautet der Zeilenname? Ihr eigener Name sind hier
nur Zahlen. Wenn Sie zum Beispiel den
Zeilennamen auf Hallo bearbeiten, wird er nicht wissen,
ob Sie ein Level eins sind, wird nicht wissen, was das ist, weil Ihr
Zeilenname Hallo ist. Es ist keine Zahl, aber
wir haben sie als Zahlen. Und es wird wissen,
dass
wir, wenn Ihre Stufe drei herausgeben wird und
diese Informationen herausgeben wird, wenn Ihre Stufe drei diese Informationen
und
diese Informationen herausgeben wird, sie tatsächlich
hier nennen und überall verwenden können. Also lasst uns alles speichern und lass uns
zum nächsten übergehen.
98. Erfahrungen mit feindlichem Tod hinzufügen: Hallo und willkommen zurück. Jetzt werden wir Erfahrung
hinzufügen, wenn
das Tier stirbt. Und hier bin ich in
der Spielerbasis. Und zuerst müssen wir eine Veranstaltung namens
Ad Experience
erstellen , da wir dem Spieler Erfahrung
verleihen
möchten. Also wollen wir das
etwas später bereinigen, aber fügen wir es einfach
hier hinzu, wo Platz ist. Lassen Sie uns
weitermachen und ein individuelles Ereignis erstellen. Und lassen Sie uns das über
die Blueprint-Interface-Funktion tun. Gehen wir also zu den Schnittstellen, zur Spielerbasis und lassen Sie uns eine neue Funktion
namens Add Experience erstellen. Und hier ist die Eingabe
nur die ganze Zahl, weil
es nur die Erfahrung ist. Und nennen wir es
erfahren hinzuzufügen. Lass uns kompilieren
und speichern und lass uns
zur Spielerbasis zurückkehren und alles hier speichern. wir nun mit der rechten Maustaste
und rufen Sie die Anzeigenerfahrung Und dieses
Mal lassen Sie uns einen durch den Server
namens Ad Experience laufen lassen, um sicherzustellen, dass der Client
nicht betrügt. Lassen Sie uns es durch den
Server führen, der zuverlässig ist. Und nennen wir es hier,
Server-AD-Erfahrung. Jetzt brauchen wir wieder eine ganze Zahl
namens Experience, um hinzuzufügen. Und lasst uns sie hier verbinden. Okay, also haben wir diese
Veranstaltung hier und wir haben
gerade nichts damit zu
tun. Aber die Sache ist, wenn
man einen Feind tötet, muss
man einstecken, wie
viel Erfahrung Sie für die geschickten
oder erschlagenen Feinde hinzufügen müssen . Also lasst uns jetzt
zum Feind gehen. Also lasst uns innerhalb der
feindlichen und feindlichen Basis finden wir hier,
wo wir den Feind töten. Also töten wir den Feind. Dies ist der Schaden. Und so prüfen wir hier,
ob die Gesundheit 0 ist. Und wenn ja, werden wir weitermachen und es zu Tode bringen. Bevor wir das
tun, töten
wir hier den Feind. Wir sind sicher, dass der Name tot ist. Also hier rufe
ich tatsächlich meine Anzeige an, um das Event hier
und die Spielerbasis zu erleben. Um den Spieler zu bekommen, haben
wir bereits einen
Spieler-Controller. Wir können sagen, er wird kontrollierter Bauer. Und dann können wir „
Layer-Referenz abrufen“ sagen , weil wir versuchen,
die Spielerbasis zu referenzieren. Und lasst uns es verbinden. Whoops, lasst uns es verbinden. Genau so. Darf es stattdessen
einfach hier hochziehen. Okay, also haben wir das jetzt
und jetzt können wir
davon abziehen und sagen, Add Experience. Und es ist eine Nachricht, weil sie von einer
Blueprint-Interface-Funktion stammt. Und wie viel Erfahrung
möchten Sie hinzufügen? Denken Sie daran, wir haben in
der Tierstruktur gemacht, das
haben wir bereits gemacht, damit wir es hier brechen können. Verstecken wir vorerst alles und klicken
und
klicken wir auf diese Erfahrung, klicken
und
klicken wir auf diese Erfahrung denn wir haben bereits festgelegt wie viel Erfahrung
jedes Tier geschenkt wird. Jetzt wollen wir nur diese Erfahrung
geben, die der Feind würfeln wird. Also verschiebe es einfach hierher. Und dann werden wir mit unserem Code
fortfahren. Ich verschiebe es ein
bisschen nach oben, genau so. Okay, jetzt fügen wir
Erfahrung hinzu, wenn der Feind
getötet wird und die
Erfahrung hier zur
Spielerbasis übergeht. Und es wird hier
durchgehen. Jetzt, da wir dies erstellt
haben, sind
wir bereit, die
Erfahrung für den Spieler zu aktualisieren.
99. Die Erfahrung aktualisieren: Okay, also lasst uns jetzt weitermachen und das Erlebnis
für den Spieler
aktualisieren. Jetzt haben wir die Erfahrung, wie viel der Feind gibt, und er wird
diese Werbeerlebnisse durchlaufen. Jetzt sind
wir hier auf dem Server bereit, diese Spielerinformationen zu
aktualisieren. Nehmen wir also diese
Spielerinformationen und lassen Sie es uns aufschlüsseln. Verstecken wir jetzt alles und machen
einfach diese eine
Erfahrung, die wir gemacht haben. So viel Erfahrung hat
der Spieler gerade. Und offensichtlich fängst du mit 0 an. Nehmen wir also diese Erfahrung
, die Sie gesammelt haben, und sagen Plus und fügen Sie sie mit der aktuellen Erfahrung hinzu
, die Sie haben. Wenn du also 0 hast und
das Schwein dir 20 gibt, hast du jetzt 20,
weil du
sie addiert hast und das
ist der neue Wert. Stellen wir es also hier auf den
neuen Wert ein, damit es aktualisiert wird. Nehmen wir also diese Info. Sagen wir Set-Mitglieder, und lassen Sie uns es hier verbinden. Was wir damit machen können,
ist
es tatsächlich so nach unten zu ziehen und es aufzunehmen. Und was, was
willst du einstellen? Wir wollen die Erfahrung einstellen, und dies ist die Erfahrung, auf die
wir sie einstellen möchten. Dies ist die aktualisierte Nummer. Und dann denk daran,
diese Spielerinformationen zu nehmen und hier einzustellen. Jetzt hast du aktualisiert wie viel Erfahrung dein Spieler durch die Struktur
hat. Das ist also eigentlich
so einfach wie das. Jetzt haben Sie die
aktualisierte Erfahrung, wie viel
Erfahrung Sie haben. Und offensichtlich
wird es in
der Benutzeroberfläche nicht aktualisiert , da wir noch keine Benutzeroberfläche
erstellt haben. Aber Sie können eine Zeichenfolge
erneut drucken und sehen, ob das stimmt. So kannst du das
noch einmal aufbrechen und alles verstecken, das Erlebnis
machen und es immer auf dem Bildschirm ausdrucken , um
den neuen Wert zu sehen,
damit du auf Play klicken kannst. Und hier kann ich Feinde treffen. Der Server wird
jetzt zehn sagen. Und wenn ich den zweiten töte, wird
es 20 sagen, weil jede Schnecke
zehn Erfahrungen gibt. Wenn 3040, weil
es auch getötet wurde. Sie können also sehen, dass das jetzt einwandfrei
funktioniert. Jetzt, da die Erfahrungen
des falsch sind, werden
wir sehen, wie wir auch das Level
aktualisieren können.
100. Aktualisieren des Niveaus: Wir sind jetzt bereit,
das Level für den Spieler zu aktualisieren. Ich hoffe also, dass Sie für diese Lektion vollkommen
wach sind. Es gibt etwas Mathematik,
die wir machen müssen, nicht wirklich zu komplex, aber wir müssen einfach ganz wach
sein und
wissen, was wir tun. Jetzt, da wir die
Erfahrung des Spielers
aktualisiert haben , können wir jetzt überprüfen, ob der Spieler
diese Erfahrung überschritten hat , die zum Aufsteigen
erforderlich ist. Denken Sie also daran, dass wir
diesen namens
Gets Level Info zuvor gemacht haben. Und damit können wir
das auflösen und versuchen zu
sehen, ob der Spieler über diese
erforderliche Erfahrung verfügt. Und wir müssen angeben, welches Level der
Spieler derzeit ist. Und wir können das tun,
indem wir hier oben klicken, und lassen Sie uns dieses Level hier machen. Also beginnen wir standardmäßig mit Level eins
und lassen mich es
einfach hierher ziehen
und das hier machen. wir also versuchen, wie hier zu sehen, schreiben
wir eins weil der Spieler Stufe
eins ist und diese
Datentabelle
durchläuft und er weiß, dass wir
50 Erfahrung brauchen. Das wird also 50
hier in der erforderlichen Erfahrung sagen . Was wir also tun werden, ist, dass
wir das machen werden, und lassen Sie uns
diese Erfahrung zuerst machen. Nehmen wir das hier und sagen: Ist es größer oder gleich? Ist es größer oder gleich als
die erforderliche Erfahrung? Und lasst uns hier oben einen Zweig machen. Und lasst
es uns verbinden. Also töte
ich zum Beispiel jemanden und sagen
wir, ich habe 200 Erfahrung und sie werden
benötigt, ist vielleicht nur 150. Also frage ich nur, ist 200 größer oder gleich als
das erforderliche, was
zweihunderteinhundertfünfzig ist. Das heißt, wir müssen den Spieler
aufsteigen. Wenn das nicht der Fall ist, tun
wir nichts. Also aktualisieren wir vielleicht einfach die Benutzeroberfläche oder was auch immer
wir versuchen. Ich verstecke das hier. Das ist also das, was
wir tun werden. Wenn es also stimmt,
werden wir den Spieler nivellieren. Es ist falsch. Wir tun nichts außer dem
Aktualisieren der Benutzeroberfläche, was wir später tun werden. Okay, also um den Spieler
zu nivellieren, sagen
wir mal, dass es wahr ist. Sie haben mehr Erfahrung als
ihre erforderliche Erfahrung. Dann musst du, lass uns diese Spieler-Info nehmen. Und lasst uns zuerst
diese Erfahrung machen. Sagen wir also, wir haben 200. Subtrahieren wir es. Subtrahieren Sie es von der erforderlichen
Erfahrung. Nehmen wir an, Sie haben
200 um 150 subtrahiert, was vielleicht erforderlich ist. Das gibt dir also 50
erfahrene übrig. Also müssen wir zuerst
diese Erfahrung subtrahieren und dann den Spieler
lieben, lieben. Lassen Sie uns also versuchen, ein paar Umrichtungsnotizen zu machen, damit
es ein bisschen besser aussieht. Und anstatt
das von hier aus zu tun, nur um es sauberer zu machen, mag
ich das Aussehen nicht. Wir können das einfach weiter
wegschieben und das
aufbrechen und die Erfahrung
sagen, denn jetzt ist es aktualisiert. Nehmen Sie also die
Erfahrung von hier aus. Und jetzt können wir
das Ding hier sagen. Diese Erfahrung wurde
von der benötigten Erfahrung abgezogen. Und wir können es hier nehmen und wie hier
ablegen. Und statt dieses
Levels von hier aus können
wir das einfach wieder verstecken, nur um es besser aussehen zu lassen. Wir können es eigentlich einfach von hier
nehmen nur damit sie nicht zu
weit voneinander entfernt sind. Und lass es mich einfach anschließen. Okay, also so etwas, ich ziehe das hoch, nur damit es
ein bisschen besser aussieht. Ziehen Sie dies möglicherweise nach unten damit sie nicht
miteinander kollidieren. Okay, so etwas hier. Also fragen wir: Ist
diese Erfahrung, die
wir gerade haben, ist sie größer oder gleich als
die erforderliche Erfahrung? Wenn das stimmt, nehmen wir die Erfahrung auf und subtrahieren sie von der
erforderlichen Erfahrung. Also vielleicht 200 minus 1 Fünftel. Wir haben zum Beispiel 50 Erfahrene
übrig. Und jetzt müssen wir
die neue Erfahrung machen. Also werden wir
die Splitter-Informationen
erneut nehmen und Setmitglieder sagen und wir möchten die
Erfahrung auf diese Zahl 50 setzen, vielleicht ist
das die Nummer. Und dann müssen wir den Spieler
aufsteigen, weil der Spieler
den erforderlichen Betrag überschritten hat. Doppelklicken wir also hier und machen eine Umleitung, um das noch besser aussehen zu
lassen. So etwas.
Okay, und hier haben wir jetzt
die neue Erfahrung aktualisiert und lasst uns die
Struktur zuerst setzen. Jetzt, da wir die Struktur
festgelegt haben, können
wir sie hier aufschlüsseln
und wir können alles verstecken. Und wir könnten das
Level erreichen und plus
plus plus plus Mittel sagen . Du kannst es sehen. Fügen Sie einen
zum angegebenen Wert und legen Sie ihn dann genau so fest. Dies bedeutet, dass dies das
Gleiche ist wie dies. Also nimm es hier raus und
sag Plus und schreibe eins, nimm das dann und setze diesen Wert
genau so. Das ist das Gleiche. Also nehmen Sie einfach
Plus-Plus heraus, um es zu bearbeiten und einzustellen. Und dann müssen wir natürlich unsere Struktur
mit dieser Nummer
aktualisieren. Jetzt haben wir ein neues Level. Sie können also wieder
hier
herausziehen und Set-Member sagen. Und jetzt wollen wir
hier die Stufe
zwei und die neue Nummer festlegen , einfach so. Okay, und denken Sie noch einmal daran,
diese Struktur genau so festzulegen . Jetzt haben wir
die Erfahrung aktualisiert, Sie haben das Level aktualisiert. Und was ich jetzt tun möchte, denken Sie
daran, dass Sie viele Feinde
töten können und vielleicht haben Sie die
erforderliche Erfahrung sowohl
für Stufe zwei
als auch für Stufe drei
überschritten . Nehmen wir an, Sie haben
einen Feind getötet, der Ihnen
so viel Erfahrung gegeben hat , dass Sie statt eins
Level zwei Level Sub haben. Also müssen wir
noch einmal überprüfen, als ob es in Ordnung ist, ob Sie
diese Erfahrung abgezogen haben, aber Sie müssen noch einmal überprüfen, diese neue Erfahrung, die
Sie in Ihrer Tasche haben, wieder höher als sie
erforderlich sind für das nächste Level. Denn vielleicht müssen wir
zwei Ebenen gleichzeitig anstelle
von einer hinzufügen , wenn Sie diese Anforderung
erfüllt haben. Also
ziehen wir davon,
und tatsächlich ziehe ich wieder in diesen Zweig
und doppelklicken, um Umlenknoten zu machen, genau so wie es ist. Sieht hier besser aus. So etwas. Ich ziehe
alles so hoch. Okay, also was wir
hier machen, ist, dass wir
es noch einmal überprüfen , ist die
Erfahrung, die Sie gerade mit dieser
aktualisierten Erfahrung
haben. Sie daran,
dass wir unsere Erfahrung
aktualisiert haben, obwohl es davon und Erfahrung nehmen Denken Sie daran,
dass wir unsere Erfahrung
aktualisiert haben, obwohl
es davon und Erfahrung nehmen wird. Also diese Erfahrung haben
wir jetzt das aktualisierte. Ist das höher als das nochmal
für das nächste Level erforderlich? Es prüft also ständig,
ob es erforderlich ist, Beispiel wenn wir eine
höhere Erfahrung
als die erforderliche
Raumerfahrung haben , wenn nicht, wird es
zu falsch gehen und nichts tun. Es wird also
nichts zu unserem Level hinzufügen. Das ist es im Grunde genommen. Dies ist der Code. Wir haben also so, wie wir sind, wir fügen die Erfahrung hinzu,
wenn wir einen Feind töten. Dann prüfen wir, ob wir die Erfahrung haben
, die erforderlich ist, damit diese Ebene steigt. Und es wird diese Informationen aufgrund dieser Level-Info-Funktion
, die wir durchgeführt haben,
aus
der Datentabelle
nehmen aufgrund dieser Level-Info-Funktion
, die wir durchgeführt haben,
aus
der Datentabelle dieser Level-Info-Funktion
, die wir durchgeführt haben,
aus
der , Funktionsbibliothek. Und dann wird es unsere neue
Erfahrung auf den
neuesten Stand bringen , weil wir diese
Erfahrung von den
erforderlichen
subtrahieren , weil
wir uns verbessern. Wir brauchen also nicht wirklich
all diese Erfahrung. Und
kommen wir mit dieser neuen Erfahrung wieder auf
die erforderliche Erfahrung
für das nächste Level? Wenn nicht, aktualisieren wir vielleicht einfach die Benutzeroberfläche oder wo auch immer
wir hier tun werden. Jetzt, da wir mit diesem Code
fertig sind, lassen Sie uns tatsächlich die Nivellierung
oder die Ebene der Benutzeroberfläche
erstellen.
101. Erstellen der Level: Um die schöne URL zu erstellen, kehren
wir zu unserem
UI-Ordner innerhalb des erstellten
Widget-Blueprint-Hauptplatzes zurück. Und lasst uns einfach
das Level hier hinzufügen. Es liegt an dir, wo du es hinzufügst. Und das ist nur ein
Kurs, wie Sie einfach das gewünschte Design machen können. Aber hier fügen wir
einfach ein angezeigtes Level hinzu. Nehmen wir also an, ich möchte
es direkt neben dieser Benutzeroberfläche hinzufügen. Also
muss ich tatsächlich ein horizontales,
horizontales Feld hinzufügen , damit sie horizontal ausgerichtet
sind. Also gehe ich zu einer
horizontalen Box. Und dann lege ich dieses Overlay in eine
horizontale Box. Und ich werde ein weiteres
Overlay in die horizontale Box legen. Hier
möchte ich mein Level EY entwerfen, indem ich
einfach diese
horizontale Box die Richtung ziehe und es
sieht so aus, weil
es nicht füllt. Also klicke ich
auf dieses Overlay und klicke hier auf Füllen, damit es das Ganze füllt. Und mit diesem ist dies die Nivellierungs-, Nivellieranzeige. Und hier will ich ein Bild als Hintergrund,
genau wie dieses. Ich gehe mit dem gleichen Design. Wenn dieses Bild auf ein schwarzes Quadrat
flach
eingestellt ist und
diesen ganzen Raum ausfüllt, werde
ich dort ein Leerzeichen
zwischen diesen beiden Overlays legen . Stellen
Sie einfach sicher, dass sich
der Abstandhalter außerhalb
der Overlays befindet, wenn Sie sie minimieren . Also hier dazwischen. Und das ist der Abstand
in X-Richtung, also vielleicht etwa zehn. Okay? Und hier, lassen Sie mich dieses Bild
duplizieren und lassen Sie mich das
blaue Bild auswählen, das jetzt blau flach ist. Und nochmal, klicke einfach oben auf diese Ausrichtung
und mache die Größe auf fünf. Duplizieren Sie dies, nehmen Sie die
Ausrichtung nach unten vor. Wir haben also das gleiche
Design wie zuvor. Und jetzt möchte ich etwas Text hinzufügen. Und den Text möchte ich zuerst
ein vertikales Feld hinzufügen , weil
ich Texte machen möchte. Und der erste
wird Level sagen. Also hier wird es Level sagen. Und der zweite
auf meinem vertikalen Feld wird nur
dieses Level angezeigt. Stufe eins ist also der Anfang. Und das möchte ich
in die Mitte
legen und diesen auch in die
Mitte legen. Und die ganze vertikale Box möchte
ich auch in
die Mitte legen. Jetzt können Sie beide Texte auswählen, damit wir sie zusammenfügen können. Und für die Font-Familie wähle
ich Bold aus. Für die Größe. Ich lasse es einfach 24 sein. Und dieses für den Schatten setze
ich
den Schatten-Offset 22 und ändere das Alpha auf 0,35. Wir haben eine
Art Basis-Display, und Sie können sehen, dass dies
sehr klein und schmal ist. Es wird davon
weggedrängt. Sie können also auf
dieses zweite Overlay klicken und auf Ausfüllen
klicken, um es auszufüllen. Und wenn Sie es hier nicht so groß
wie diese füllen möchten . Sie können diese
Füllnummer einfach ändern, jetzt ist es 1. Du kannst 0.5 schreiben und
es kann es kleiner machen. Ich glaube, ich gehe mit
0.4 und ich werde
meine horizontale Box etwas
größer machen meine horizontale Box etwas , weil ich denke, dass
dies viel zu klein ist. Etwas, so etwas. Und was wir jetzt tun können, einfach sicher, dass der
Ankerpunkt korrekt ist. Klicken Sie also auf den Anker und legen Sie ihn stattdessen hier ab. Und dann schreiben Sie Nullen 0 und
die Position, die Sie sehen können unter unserem Fenster
ausgerichtet.
Und das wollen wir nicht. Spielen Sie also noch einmal mit den Achsen und deshalb ist
die Ausrichtung hier. Und das ist nur auf eins eingestellt,
und es wird hier oben sein. Nun, für die Position, werde
ich
es auf vielleicht 30
im x und minus 30 in y setzen . Minus 30 geht nach oben. Jetzt haben wir unsere
Nivellierungsanzeige. Um es uns in den Variablen einfacher
zu machen, klicke
ich
auf diese Nummer und nenne sie die nächste Stufe. Und dafür müssen
wir es nicht wirklich in
eine Variable verwandeln , weil
wir sie nicht brauchen. nur sicher, dass ich hier auf
diesen Text klicke , weil
wir ihn ändern müssen, stellen Sie sicher, dass er variabel ist. Aber diese für diese
Ebene stellt auch sicher, dass es variabel ist. Und das nennt man
Texterfahrung. Ebene der Texte. Dieser Fortschrittsbalken wird
als Prog-Erfahrung bezeichnet. Und ja, das ist alles darum. Als hätten wir alles was wir brauchen und lasst uns alles retten. Und im nächsten werden
wir dieser Benutzeroberfläche Funktionen hinzufügen.
102. Level: Also hier bin ich wieder in meiner
Haupt-Benutzeroberfläche und lass uns nun diesem
Erfahrungsnivelliersystem Funktionalität
hinzufügen. Das, was wir tun
müssen, ist, uns Diagramm zu
gehen
und etwas zu codieren. Also hier möchte ich
mit der rechten Maustaste klicken und lasst uns
ein neues benutzerdefiniertes Ereignis erstellen und
nennen wir es Updates Erfahrung. Und dieser wird das Erlebnis und
das Level aktualisieren . Also wird es
diese Erfahrung haben. Und wenn wir über die
erforderliche Erfahrung verfügen, werden
wir auch
das Level aktualisieren. Jetzt weiß ich nicht, was wir hier in die Inputs einfügen müssen, wie wir
das vorerst herausfinden müssen, lass es uns einfach so sein. Und das erste, was
wir tun müssen, ist diese
Fortschrittsbalkenerfahrung zu
machen. Und genau wie zuvor
sagen wir
mit der Health Bar Prozent. Und dies wird letztendlich
den Prozentsatz für diesen
Fortschrittsbalken hier festlegen . Also wird es sich ausfüllen. Und normalerweise
beginnt es wie hier standardmäßig als 0. Also werden wir den
Prozentsatz um etwas festlegen. Und danach
haben wir diese Erfahrung. Und wir werden diesen Text
auch auf
diesen Fortschrittsbalken setzen . Das ist also dieser Text an der Spitze. Und denken Sie daran, wenn wir dynamische Texte
haben, genau das, was ich Ihnen vorher beigebracht habe, müssen
wir Formattext verwenden. Also nochmal, dieselbe Methode, rappen, Formattext speichern. Und wir brauchen zwei Variablen. Wir brauchen, wie viel
Erfahrung Sie haben und wie viel Erfahrung benötigt
wird, um zu steigen. Machen wir also zwei
Variablen hier. Machen wir geschweifte Klammern und schreiben Erfahrung,
Erfahrung. Das ist also die
aktuelle Erfahrung. Und dann, wie außerhalb
der geschweiften Klammern, schreibe
ich einen Schrägstrich. Und dann machen wir
neue geschweifte Klammern und nennen es Erfahrung nötig. Und mach es wie fertig
mit geschweiften Klammern. Wir haben also zwei geschweifte Klammern. Wir haben diesen hier, wir haben einen Schrägstrich und
diesen zweiten. Jetzt haben wir zwei Variablen, die wir als dynamische Variablen festlegen
können. Ich sehe, dass wir, wie in den Spielerinformationen, vielleicht brauchen wir hier nur eine
Spielerinformation, denn anstatt alle diese
Variablen hier
einzustecken, wir tatsächlich genau,
wie wir es verwenden können, wie wir kann alle diese Informationen mithilfe
der Spielerinformationen aktualisieren. Also werde ich dies tatsächlich als Eingabe- und
Schreib-Layer-Info
erstellen ,
genau so. Und nennen wir es Spieler-Info. Eigentlich machen wir es von hier aus. Also mit dem, was wir
bisher haben, probieren wir es aus. Nehmen wir die geteilten
Informationen und brechen sie auf. Und jetzt können wir
diesen Prozentsatz hier verwenden. Denken Sie daran, dass dies die Erfahrung ist. Wie viel Erfahrung Sie gerade
haben, geteilt durch die erforderliche Erfahrung
, die Sie benötigen. Verstecken wir also alle
nicht verbundenen Pins damit wir die
erforderliche Erfahrung benötigen. Denken Sie daran, dass die Funktion, die wir
in der Bibliothek erstellt haben, global ist. Also können wir einfach sagen, hol dir die Levelinformationen und du
kannst hier darauf zugreifen. Sie müssen
das Level eines Spielers angeben. Das haben wir hier in unserer
Struktur so. Und jetzt kannst du das aufbrechen. Jetzt haben Sie die
erforderliche Erfahrung. Die Erfahrung, die Sie durch
die erforderliche Erfahrung geteilt
haben ,
gibt Ihnen den Prozentsatz. Und eigentlich gibt es hier
einen kleinen Fehler. Wie wenn Sie es so machen, wird
es tatsächlich
0 anzeigen, weil Sie daran denken, dass dies eine Ganzzahl ist und dies eine
Ganzzahl ist und dies ein Float ist. würde es
diese Daten korrekt verarbeiten, aber die Zahl wird falsch
angezeigt,
denn denken Sie daran, dass Sie
beim Teilen von Ganzzahlen eine ganze Zahl erhalten
. Es wird
Ihnen keinen Prozentsatz geben, als hätten Sie keine
Dezimalstellen oder Ganzzahlen. Wenn Sie zum Beispiel sagen, ist
die Erfahrung, die Sie haben, zehn geteilt durch 50. Und diese Zahl, die Sie erhalten, ist
eine Dezimalzahl. zeigt nicht, dass
diese Zahl gleich
0 ist, da ganze Zahlen keine Dezimalstellen
haben können. Der richtige Weg, dies zu tun, besteht darin dies
zuerst in einen Float umzuwandeln. Sagen wir also zwei Schwimmer. Und mach das
Gleiche, damit dieser schwebt. Und lasst uns das löschen. Und jetzt werden wir sagen, dass
diese Erfahrung geteilt ist. Und jetzt arbeiten wir stattdessen
mit einem Float. Stellen Sie also sicher, dass Sie
es zuerst zu einem Float machen sonst erhalten Sie
diese Dezimalstellen nicht, aber Sie
haben nur ganze Zahlen. Jetzt haben wir die
Dezimalstellen. Doppelklicken wir und
erstellen hier einen Eisenbahnknoten. Und jetzt die Zahl
, die wir gerade haben, können
wir sie im Prozentsatz verwenden. Wir werden den
Fortschrittsbalken korrekt aktualisieren. Okay, also das ist jetzt fertig. Und als Nächstes, klicken
wir zuerst auf diese und verstecken Pin, nur damit
es ein bisschen besser aussieht. Das nächste ist also, dass
wir
die Erfahrung aktualisieren müssen , die Sie haben
und die sie erfahren haben. Das ist sehr einfach, denn
die Erfahrung, die wir haben, ist genau diese Erfahrung. Lassen Sie mich doppelklicken und hier einen Umleitungsknoten
erstellen. Und die nötige Erfahrung
ist nur diese erforderlich. Also kann ich einfach doppelklicken
und es hier ablegen. Und lassen Sie mich das einfach nach unten
ziehen, damit es nicht das
Ganze mit den Linien hier überläuft. So etwas. Das sieht etwas
sauberer aus, besser zu arbeiten. Okay, jetzt haben wir
diese Informationen gesetzt. Was wir als Nächstes tun müssen, ist die Levelanzeige
für die Spieler zu
aktualisieren. also diese Textebene nehmen, möchten wir diese Ebene jetzt hier
aktualisieren. Nehmen Sie also diese Ebene
und sagen Sie Text einstellen. Und jetzt ist das auch
sehr einfach, weil wir bereits das
Level für den Spieler haben. Wir können das
einfach nehmen oder Sie können
das nehmen , was Ihnen überlassen ist,
und stecken Sie es hier an. Und nochmal, mach einen Umleitungsknoten , damit er viel besser aussieht. So etwas. Jetzt haben wir tatsächlich
alle Informationen, die wir aktualisieren, den Prozentsatz, wir aktualisieren den dynamischen
Text in diesem Fortschrittsbalken. Und wir aktualisieren hier auch
den Nivellierungstext. Jetzt können wir kompilieren und speichern, und jetzt können wir diese
Update-Erfahrung in
unserem Player-Controller nutzen , um die
Erfahrung und das Level des Spielers zu aktualisieren.
103. Fertigstellung des Leveling: Hallo und willkommen zurück. Lassen Sie uns jetzt
das Nivelliersystem abschließen. Gehen wir zum
Spieler-Controller. Denken Sie daran, dass wir die UI-Updates
im Player-Controller durchführen. Also gehe hier zum
Spieler-Controller und jetzt lass es uns einfach hier unten
schaffen. Wir haben die
Update-Gesundheitsleiste hier oben. Lasst uns ein neues machen. Dafür
nenne ich es einfach Update Experience. Lassen Sie uns also zuerst
im Player-Controller
Blueprint Interface
zu den Schnittstellen zurückkehren . Und machen wir es hier
namens Update Experience. Es wird daran denken, die Informationen
des Strukturspielers
als Variable zu betrachten Informationen
des Strukturspielers , da dies diejenige ist, die wir erstellt haben. Und nennen wir es Spieler-Info. Kompilieren und speichern.
Lass uns zurückgehen und es hier anrufen, aktualisiere das Erlebnis. Und jetzt nochmal, führe es
durch die Kunden. Denken Sie daran, dass es nicht der
Server ist, es ist jetzt der Client weil wir die Benutzeroberfläche bearbeiten und die
Benutzeroberfläche über den Client geht. Also benutzerdefinierte Ereignisse
und gehen durch den Client, sagen
Update-Erlebnis. Und lassen Sie es uns zu einem
eigenen Kunden laufen und zuverlässig. Und lassen Sie uns die
Spieler-Info-Variable hier hinzufügen. Suchen Sie also nach Spielerinformationen. Jetzt können wir es hier aufschreiben,
Cl Update, Erfahrung. Jetzt wird es hier
durchlaufen, durch den Client
laufen, und der Client
wird die Widget-Blueprints-Funktion ausführen, die wir hier in WB Main erstellt haben, hier Update Experience genannt. Das
werden wir jetzt tun. Jetzt kannst du von hier ziehen. Und tatsächlich müssen wir auf
das Widget Blueprint Main zugreifen. Und wir erinnern uns bereits daran , dass wir das als Variable in
unserem Spieler-Controller haben. Fangen wir also von hier aus an
und sagen Update Experience, und Sie werden es hier sehen. Also ruf es hier an, verbinde sie und verbinde sie dann hier. Jetzt wird es also gehen und diese Informationen
einspeisen, hier
rein und aktualisieren
alles für uns. Jetzt haben wir nicht angegeben
, wo wir das hinzufügen werden. Aktualisieren Sie die Erfahrung, gehen
wir tatsächlich zurück zu, speichern
wir alles und gehen
wir zurück zum Spieler, Bassisten, Spielerbasis. Und denken Sie daran, dass wir diese
Werbeerlebnisveranstaltungen hier gemacht haben. Und das
möchten wir hier hinzufügen denn wenn Sie sich verbessert
haben, aktualisieren wir
die neue Erfahrung. Wir aktualisieren das neue Level. Und dann wird
es noch einmal nachsehen. Müssen Sie wieder aufsteigen? Wenn ja, wird die Erfahrung erneut aktualisiert,
aktualisieren Sie das Level. Danach
wird es nein sagen, du musst nicht mehr
aufsteigen. Du bist nicht, du triffst nicht die erforderliche Erfahrung
für dieses Level, in dem du dich befindest. Also mach einfach weiter und
aktualisiere die Benutzeroberfläche hier. Die Benutzeroberfläche ist wieder, es ist
jetzt die Funktion, die wir brauchen oder das Ereignis, das wir brauchen, um darauf innerhalb
des Player-Controllers zuzugreifen. Wir können jetzt „Get Controller“ sagen. Wir sind innerhalb
der Spielerbasis. Und hier lassen Sie uns sagen, dass der Spieler-Controller REF
, den wir viel früher gemacht haben. Verbinden wir es hier. Lasst uns nun davon ziehen
und Update Experience sagen. So nannten wir
die Interface-Funktion. Und es ist eine Nachricht, weil es sich um eine
Blueprint-Interface-Funktion handelt. Jetzt braucht es die Informationen. Also ziehe ich
einfach von
hier unten und ziehe diese
Spielerinformationen hinein. Und jetzt wird es die Erfahrung
aktualisieren. Also lassen Sie uns das Element
kompilieren
und speichern geben Sie dem
Spieler viel mehr Hilfe. Ich will einfach nicht ständig
sterben. Setzen Sie also die maximalen
Hügel auf vielleicht 500 und der Strom
hilft auf 500. Und lass uns jetzt spielen. Okay, jetzt bin ich der
Spieler, ich treffe das. Wir können jetzt sehen, dass es aktualisiert wird. Aber anfangs kann man sagen, dass
es 0 von 100 sagt. Das ist nicht richtig. Also müssen wir
ein erstes Update machen. Denken Sie daran, dass Ihre Benutzeroberfläche nur
aktualisiert wird , wenn
Sie Erfahrung sammeln. Wenn Sie also spawnen, aktualisieren
Sie Ihre Benutzeroberfläche nicht. Du aktualisierst es nur,
wenn du etwas tötest. Also lasst
es uns tatsächlich hier oben machen, lassen Sie mich
diesen Code kopieren und lassen Sie mich hierher
gehen und es
am Anfang machen. Wenn ich also gerade
anfange, das Spiel zu spielen und auf den Spieler
reagiert, der auf die Kamera reagiert, stellen
wir die Kameraansicht ein. Eigentlich mache ich
es hier. Gleich nachdem Sie die Kameraansicht
eingestellt haben, füge
ich dies hinzu. Und ich werde meine
Benutzeroberfläche als erstes Update aktualisieren. Also genau hier, so
etwas. Okay, und jetzt
kompilieren und speichern wir. Jetzt klicken wir auf Play. Und Sie können sehen, dass dies bei der ersten Aktualisierung der Fall ist, und Sie haben jetzt
die richtigen Informationen. Jetzt kann ich etwas töten. Es gibt dir zehn Erfahrungen. Die Leiste wird ebenfalls aktualisiert. Großartig, und mal
sehen, ob wir aufsteigen. Also bringe ich noch
ein paar mehr um. Jetzt fühlt es sich an wie ein Spiel. Wenn alle
Elemente zusammenkommen. Jetzt können wir sehen, dass ich sicherstellen werde
, dass ich auf Stufe zwei und meine geknetete
Erfahrung jetzt 75 Jahre alt ist. Und wenn ich weiter töte,
wird es es jetzt erhöhen. Jetzt wird es tatsächlich
richtig aktualisiert. Und wenn ich hier rauf gehe und ein paar davon
fülle, okay, also sehe ich jetzt, dass
ich 70 von 75 habe. Mal sehen, ob es richtig
berechnet wird. Wenn ich also denke, dass jedes Bild 20 Erfahrungen
gibt, also wenn ich nur eine töte, sollte
es jetzt 15 sagen. Also lass mich einen töten. Ich falle nicht runter. Es sagt 15, also
berechnet es tatsächlich richtig
und es hat mich ausgeglichen. Das ist also schön und alles
wird jetzt richtig aktualisiert. Das Letzte, was wir tun
müssen, ist, einfach
einen Soundeffekt und einen visuellen
Effekt hinzuzufügen , wenn wir aufsteigen. Also werden wir es ein
bisschen interessanter machen.
104. SFX und VFX aufwerten: Aber das Letzte hier
im Nivelliersystem, Lasst uns weitermachen und etwas Klang und
visuellen Effekt zum Aufsteigen
hinzufügen . Gehen wir zurück zur
Spielerbasis. Und hier drin, gehen
wir zu
unserer Anzeigenerfahrung und fügen wir nun einen Multicast hinzu. Also klicken wir mit der rechten Maustaste. Mache ein benutzerdefiniertes Ereignis. Und lasst uns Multicast machen. Und ich nenne
es einfach genauso. Du kannst es Level hoch nennen oder
ich nenne es einfach ein Erlebnis, weil ich
es dort oben einschließe. Und ich werde es
in einen Multicast zuverlässig umstellen. Ich werde den
Soundstandort genau wie zuvor spielen. Und diese Variablen hinzufügen. Ich nenne es
Pegel Up Soundeffekt. Okay? Und wir möchten auch wie ein visueller Effekt
spielen, wenn Sie aufsteigen, aber der visuelle Effekt
ist ein Flipbook. In den Kursmaterialien, die
ich für Sie aufgenommen habe, diese Textur
, die Sie hinzufügen müssen. Also hier in der Ebene des
Charakters, Lasst uns hier zu unseren
Asset-Charakteren gehen. Und lassen Sie uns diese
Texturstufe hineinziehen. erneut mit der rechten Maustaste darauf und
wenden Sie Papier auf die Einstellungen und extrahieren Sie nun diese Sprites. Und das Netz dafür ist,
dass ich glaube, es war 180 mal 180. Und jetzt klicke auf Extrakt. Und jetzt
benenne ich all diese um. Jetzt, da Sie sie hier vor
sich haben, ich
jetzt auf alle,
klicken Sie mit der rechten Maustaste und
erstellen Sie ein Flipbook. Und ich nenne
es ein B-Level nach oben. Okay, jetzt
doppelklicke ich auf dieses Flipbook und setze die Frames pro
Sekunde auf acht. Und du siehst, dass es seltsam
aussieht. Und das ist, denken Sie daran, Sie können es vielleicht herausfinden, aber es liegt wahrscheinlich daran, dass
dies dieses Material hat. Wechseln wir also das
Maskenmaterial in das durchscheinende Material. Also auf der Suche nach durchscheinendem. Also haben wir es jetzt
ein paar Mal benutzt. Durchscheinendes, unbeleuchtetes
Sprite-Material, man sieht es jetzt
viel besser aus. Schließen wir diesen Effekt also ab. Wenn Sie diese Materialien nicht
sehen, denken Sie
daran, zu den
Einstellungen zu gehen und den
Content-Engine-Inhalten und
Plug-In-Inhalten
des Entwicklers zu aktivieren Content-Engine-Inhalten und
Plug-In-Inhalten
des Entwicklers . Wenn Sie
mit ihnen fertig sind, können Sie sich
immer so von ihnen entfernen. Sie sehen also nicht alle
diese zusätzlichen Ordner. Manchmal ist es nervig, all diese Ordner zu
sehen. Also klicke ich einfach weg und ich
habe es sauberer. Also zeig ich ihnen einfach
wann immer ich sie brauche. Gehen wir also zurück
zur Spielerbasis und jetzt müssen wir
diesen Level-Up-Effekt spielen. Aber das ist ein Flipbook und wir können die
Figuren-Flip-Bücher nicht wirklich ändern. Also müssen wir uns ändern. Sie können das Flipbook für
Charaktere nicht ändern. Also müssen wir hier
eine weitere Komponente hinzufügen. Fügen wir also eine neue Komponente hinzu. Und nennen wir es oder
suchen einfach nach einem Flip Book. Also Papier Flip Book. Ich nenne das hier, vielleicht nivellierst
du die V-Effekte. Du nennst
es einfach so. Ich werde es vorerst
an mein Sprite anhängen. Für dieses Flip Book ändern
wir es zu, Lasst uns unser Level hier oben finden. Das ist der Effekt Liebe, Liebe, also haben wir ihn hier. Und zuerst wollen wir
das nicht ständig zeigen. Also gehe ich tatsächlich
runter und unsichtbar. Ich werde
das hier sichtbar entfernen, also ist es
im Spiel zunächst nicht sichtbar. Was ich also machen möchte, wenn ich
aufstieg, ist, dass ich
dies nehmen und die Sichtbarkeit sichtbar machen
möchte. Ich verbinde das hier. Nachdem es sichtbar ist. Ich werde es dann um
einige Zeit verzögern und
es dann wieder auf unsichtbar setzen. Ich werde es bis zum
Zeitpunkt dieser Flip Books verzögern. Ich nehme das
und sage „Flip Book“, und wir können dieses auswählen, Buchlänge und Verzögerung
umkehren. Und nachdem wir uns verzögert
haben, so lange dieses
Flipbook auch läuft, werden
wir es wieder
auf unsichtbar setzen. Nehmen Sie diese Sichtbarkeit also hier und schließen
Sie sie mit diesem an. Doppelklicken, um eine Umweisung vorzunehmen. Um es besser aussehen zu lassen, können
Sie die
Sichtbarkeit hier falsch festlegen. Wir verstecken es wieder, was auch immer. Wir haben eine Schleife
dieses Flipbooks beendet. Und ich bin mir einfach nicht sicher, ob das tatsächlich von Anfang an
spielen wird, also stellen wir es auf sichtbar ein. Aber was ist, wenn das was ist diese Flip Books tatsächlich in der Mitte
spielen, wenn
wir es auf sichtbar setzen? Also werde ich das tatsächlich von hier
entfernen. Und lasst uns den Code hier tatsächlich durchsetzen
. Also stellen wir es auf sichtbar ein. Und dann lass uns dieses
Flipbook nehmen und „Flipbook einstellen“ sagen. Weil wir es nur von
Anfang
an zeigen wollen , wann immer
wir es zeigen wollen. Und dann müssen wir
wählen, welches Flipbook. Machen wir es nicht hier. Ziehen wir es
einfach in dieses Ereignis. Und anstatt ein
neues Flip Book zu rufen, können
wir es als Level
Up the Effects bezeichnen. Und lassen Sie mich das hochziehen,
nur um es sauberer zu machen, indem wir es stattdessen hier
öffnen, wir haben den VFX als
Effekte und den Standort. Und wenn Sie einen
Umleitungsknoten erstellen, können
Sie aus diesem eine
Umleitungsnotiz machen, damit er besser aussieht, so. Und ja, das sieht jetzt gut aus. Wir haben also diese Anzeigenerfahrung mit Effekten und
müssen sie
irgendwo hinzufügen und wir müssen sie hinzufügen wenn der Spieler steigt. Wenn wir also hier
zum Anzeigenerlebnis gehen, müssen
wir herausfinden, wo
der Spieler steigt. Und wenn Sie
sich an den Code erinnern, steigt
der Spieler auf. Hier können wir es einfach
hier am Ende dieses Codes ändern. Dies ist die Nivellierung des Effekts. Und nehmen wir das, nehmen Sie das
hier und sagen Sie MC, MC Werbeerfahrung wie diese. Und du kannst das hier nehmen und
einen weiteren Umleitungsknoten erstellen. Oder du eigentlich werde
ich es stattdessen hier aufstellen. Hier unten gibt es keinen Platz. Einfach so. Okay, also
so etwas hier. Und jetzt haben wir diese
Anzeigenerfahrung und müssen den visuellen Effekt
und den visuellen Effekt
wählen. Sie können es einfach zur
Struktur hinzufügen, wenn Sie möchten. Gehen wir also zurück
zur Struktur. Gehe zu Spielerinformationen wurden hier hinzugefügt. Nennen Sie es Level nach oben als Effekte. Und auf der Ebene der Effekte, der Effekte oder der V-Effekte werde
ich es tatsächlich hier aufstellen. Und das liegt nur daran, dass
ich möchte, dass die Soundeffekte zusammen sind und die
visuellen Effekte, wenn Sie mehr zusammen sein
müssen.
Lasst es uns ändern. Dieses V wirkt sich auf ein
Flipbook aus Papier. Und der Soundeffekt
ist ein Sound-Cue. Und denken Sie daran, dass wir bereits
einen Soundeffekt hinzugefügt haben. Also kompiliere und speichere alles. Und lass uns hier zum Spieler gehen. Spielerinformationen, und lassen Sie uns
den Soundeffekt auf Pegel aufstellen , um für alle
Spieler gleich zu sein , da wir nicht wirklich mehr
als einen haben. Also hier. Und das Niveau der V-Effekte können
wir hier klicken
und aufsteigen sagen. Und wir können den wählen, den
wir gerade gemacht haben. Und jetzt kompilieren und speichern wir. Und lasst uns gehen und es hier
tatsächlich wählen. Nehmen wir also an, wir können es hier tatsächlich aus
diesen Spielerinformationen
brechen. Wir haben es schon hier. Also lasst es uns kaputt machen. Und lassen Sie uns alles verstecken
und einfach das Niveau
seiner Effekte und das
Niveau der Effekte auswählen . Steck sie hier ein. Und dann haben wir den Standort, der Standort des Spielers ist. Also nimm es hier und sag, bekommt Schauspielerstandort. Einfach so. Und ich glaube nicht, dass
uns etwas fehlt. Also werde ich
diese nicht verbundenen Pins ausblenden und kompilieren und speichern. Okay, jetzt haben wir diesen
Leveling-Soundeffekt und wir können versuchen, auf Play zu klicken
und zu sehen, was passiert. Klicken Sie also auf den
Play-Button und spielen Sie uns hier. Versuchen Sie jetzt, aufzusteigen, um zu sehen, ob das tatsächlich funktioniert. Und ich versuche
hier hochzugehen, um schneller aufzusteigen. Es gibt also einige Fehler
bei diesen Animationen. Später werden
wir in
der nächsten Lektion tatsächlich reparieren , ich habe es gefunden. Ich kann sehen, dass ich tatsächlich aufgestiegen bin. Und es gab ein gewisses Effektspiel. Also lasst es uns noch einmal versuchen. Nett. So können Sie
sehen, dass der Effekt abgespielt wird und der
Soundeffekt ebenfalls abgespielt wird. Sie können sehen, dass dies der Fehler
ist, den ich in der nächsten Lektion
tatsächlich beheben möchte. Und jetzt sieht es aus, sieht
eigentlich gut aus. Und wenn Sie möchten, dass der Effekt
auf Ihrem Kopf spielt, denken Sie daran, dass Sie zum Spieler
zurückkehren können. Und da Sie es gerade als Effekt
hinzugefügt
haben, können Sie einfach auf diese Ebene
klicken,
VFX-Ebene. Und denken Sie daran, dass dies
nur ein Flipbook ist, fügen
Sie es hinzu, damit Sie es einfach über Ihren Kopf
ziehen können , angekündigt wird, über Ihrem Kopf zu
spielen. Und wann immer du aufstiegst,
wird hier oben spielen. Also rette alles. Das war's vorerst. Jetzt lasst uns tatsächlich
die letzten Bugs beheben , die ich
beim Spielen des Spiels gefunden habe. Ich habe
ungefähr eine halbe Stunde gespielt und habe versucht, Bugs zu finden. Und ich habe zwei von ihnen gefunden. Also lasst uns weitermachen und die reparieren. Und wir sind fertig, fast
fertig mit diesem Spiel.
105. Beheben der letzten Fehler: Okay, also lasst uns jetzt
die beiden Bücher reparieren , die
wir derzeit haben. Der erste ist also, dass
Sie angreifen können, wenn Sie auf dem Brief stehen , und das wollen
wir nicht tun. Gehen wir also zur
Spieler-A- und Spielerbasis. Und was ich hier
drinnen bearbeitet habe. In deiner Angriffslogik musst
du nur diesen booleschen Wert
hinzufügen. Im Moment haben wir also, dass
wir nicht angreifen wollen, wenn du
bereits angreifst . Wenn du schon tot bist, willst
du nicht angreifen. Die, die Sie hinzufügen müssen. Klicken Sie
hier auf dieses Plus und fügen Sie dies hinzu. Wenn du also schon bestiegen
bist , willst
du auch nicht angreifen. Also sehr einfach zu beheben, wir müssen nur danach suchen. Die zweite Sache ist manchmal die Feinde in
der Todesanimation. Und das liegt daran, dass wir
vergessen haben, den Gehmodus hinzuzufügen. Und lass uns zurück
zur feindlichen Basis gehen. Also habe ich viel
Zeit damit verbracht , diesen Code
umzustrukturieren. So kann es versuchen, es
hier zu sehen und zu kopieren. Im DNA-Schaden haben
wir einen Display-Controller
und ich habe
diese Gesundheitsberechnung tatsächlich
zuerst vor allem anderen verschoben . Versuchen Sie also zu Disk und
ich glaube, diese waren zuerst wie vor diesem
gesünder. Aber ich denke, dass es strukturell sinnvoller ist, zuerst die Gesundheit zu
berechnen. Und nachdem Sie das ****
berechnet haben, können
Sie den
Bewegungsmodus auf None einstellen. Ich glaube, das
war das Gegenteil. Also das war hier
und das war hier. Aber ich denke, es wird nur ein bisschen besser aussehen
lassen, sie
zuerst in den Arbeitsmodus
einzustellen , bevor Sie
den versteckten Zustand einstellen. Die andere Sache ist,
wenn
ich für die Logik festgestellt habe, dass es besser ist , diesen KI-Controller
anstelle von Controller zu
verwenden . Und als ich den KI-Controller bekam, fand
ich, dass es besser ist, diesen KI-Controller zu
verwenden
, den wir auch hier verwendet haben, und den Wechsel zum
Standort oder Schauspieler. Verwenden Sie diesen
KI-Controller und nehmen die Gehirnkomponente davon
und stoppen Sie dann die Logik. Okay, also haben wir das hier. Und dann gehe
ich zur Verzögerung. Ich glaube, wir hatten sofort einen
Stopp. Stoppen Sie sofort hier. Sie können dies löschen und wir werden
dies später hinzufügen. So sieht es gerade
aus, ganz einfach. Und jetzt verzögern wir
es, genau wie zuvor. Wir fragen, ob der
Feind tot ist oder nicht. Wenn der Feind nicht tot
ist, wird er gehen und
es laufen lassen, oder? Ich glaube
, das haben wir auch vorher gemacht. Die Move Ai ist gleich, alles ist gleich. Und dann habe ich hier
etwas Neues hinzugefügt. Wenn der Feind also tot ist, sind
wir wie
anstatt die Logik neu zu starten. Also versuche das zu löschen,
wenn du das jetzt hast. Wenn Sie also den Controller
abrufen und Logik starten
oder Logik neu starten, können
Sie diese entfernen. Und stattdessen habe ich hier ein neues,
ein neues Ereignis gemacht , ich habe einen
namens Neustart Behavior Tree gemacht . Ich denke, das ist viel besser
als die Logik neu zu starten. Denn manchmal, wenn
Sie die Logik neu starten, starten
Sie diese Logik und nicht den Verhaltensbaum neu. Und deshalb werde ich speziell den Verhaltensbaum
neu starten. Ich habe diese
Box ein bisschen gefunden. Und
so etwas wird
perfekt funktionieren , wenn wir
tatsächlich hierher gehen. Und denk daran, dass ich vorher geredet habe, du könntest zerstören, was diesen Schauspieler komplett
entfernt. Und wenn wir das täten,
hätten wir dieses Problem nicht. Das ist also nur dieses
projektspezifisch. Nur für dieses
Projekt, das ich mache, wird
das ein Problem sein. Aber wenn du den Schauspieler tatsächlich
zerstörst, wird
das kein Problem sein. Aber an diesem Tag bewege ich zwei
werden immer noch irgendwie ausgeführt weil sie die
Logik stoppen und Logik starten startet
einfach diese Logik
anstelle des Verhaltensbaums. Also habe ich diesen namens
Neustart Behavior Tree gemacht. Und es ist nur eine
Funktion oder Ereignisse, die tatsächlich innerhalb der Funktion
der feindlichen
Basisschnittstelle entstanden sind. Wenn Sie also zur
Schnittstelle und zur feindlichen Basis gehen, habe ich diesen namens
Neustart Behavior Tree erstellt. Und ich habe es hier
in der feindlichen Basis genannt. Und dann habe ich
zeilenseitige Ereignisse gemacht. Also läuft auf dem eigenen Kunden und zuverlässig und
ruft ihn dann hier auf, natürlich den Kunden. Also läuft es
hier runter und hier unten. Ich stoppe die
Bewegung sofort. Und dann stoppe ich
die Logik, nur um sicher zu sein, dass die
Logik gestoppt wurde. Und dann nehme ich meinen KI-Controller und
bekomme einen Verweis
auf meinen KI-Controller. Eigentlich hier gemacht. Wir haben in der Schnittstelle
ai-Controller hergestellt, wir haben dies namens
Good AI-Controller ref gemacht. Ich verstehe das,
damit ich einen Verweis
auf meinen KI-Controller bekommen kann . Und da drinnen statt
meines KI-Controllers, lass mich jetzt zurück zum
feindlichen Luftregler. Ich hab das gemacht. Also bevor wir diesen Run
Behavior Tree hier oben hatten. Und anstatt dies zu tun, mache
ich tatsächlich mein benutzerdefiniertes
Ereignis namens AI-Tree ausführen. Und wenn ich anfange zu spielen, führe
ich dieses Event hier aus. Und der Grund, warum ich diese Veranstaltung
gemacht habe, ist , dass ich es
auch an anderen Stellen ausführen
möchte . Also nicht nur im Startspiel, sondern ich möchte
es auch hier laufen lassen. In meiner feindlichen Basis
wann immer ich anfange. Ihr Verhaltensbaum wurde neu gestartet. Also führe ich diesen Run AI-Baum aus. Wir führen diesen
Verhaltensbaum einfach wie zuvor aus. Das ist also, was
im Wesentlichen passiert wenn wir den
Verhaltensbaum neu starten. Also habe ich hier oben bearbeitet, ich führe diesen
Neustart-Verhaltensbaum wenn der Spieler tot ist. Wenn der Feind
uns also jagt und der Spieler stirbt, wird er
den Verhaltensbaum neu starten. Okay, also wenn der Feind würfelt, fügen
wir die Erfahrung
genau wie zuvor hinzu. Wir setzen den Schreibtisch um wahr zu sein. Und hier, wie kurz bevor
wir antworten oder so, entfernen
wir die
generierten Überlappungsereignisse. Dann verblassen wir den Charakter. Danach haben wir
den Delay-Timer. Wir legen etwas Zeit. Wir setzen die Gesundheit auf den Feind
zurück. Dann aktivieren wir die
generierten Überlappungsereignisse. Dann habe ich diese hinzugefügt, die Set-Bewegung zum Gehen
und Schreiben vorher. Deshalb
spawnte der Feind in der Todesanimation. Denn denken Sie am Anfang an
hier drüben, setzen
wir diesen Bewegungsmodus auf „ None“ und den
Bewegungszustand, der getroffen wird. Wenn der Feind würfelt. Wir haben es nie zurückgesagt. Wenn der Feind also
würfelt und reagiert, setze ihn einfach wieder auf Laufen und Lauf hier. Die feindliche Reaktion. Denken Sie daran zu mögen, ich
habe das auch verschoben. Ich habe die
Antwort danach verschoben weil ich sicherstellen möchte, dass meine generierten Überlappungsereignisse „true“ eingestellt
sind,
bevor ich antworte. Dann antworte ich und dann
fragte ich ihr Schicksal auf falsch. Und dann habe ich diesen
namens Neustart Behavior Tree hinzugefügt . Ich glaube, dass die
Todesfunktion auch hier war, also habe ich sie gelöscht. Und der Grund ist, dass
die Todesfunktionen hier
bereits laufen. Denken Sie also daran, dass
dieser Schauspieler verblassen wurde. Und wenn der Schauspieler
fertig ist und wenn es hier auf
falsche Bedeutung gesetzt ist, wenn er auf false eingestellt und wenn der Schauspieler
fertig ist, wird
es diesen Tod führen. Es ergibt also keinen Sinn, diesen Tod hier oben zu
haben. Also lösche das von hier aus, und ich habe gerade dieses
Neustartverhalten hinzugefügt um zu lesen, nur um sicher zu sein
, dass es funktioniert. Und hier unten glaube ich
auch, dass wir
die Laufrechte hatten , sind Gehmodus eigentlich
die Arbeitslast. Sie können das
von hier aus löschen, denn jetzt haben
wir es bereits hier oben. Wir müssen
es also nicht wirklich hier unten haben. Und so
sieht es aus und
wenn es fertig ist. Wenn der Tod auf „false“ eingestellt ist, ich auch
den Verhaltensbaum neu nur um sicher zu sein,
dass er nicht abgehört. Versuchen Sie auch, es
aus dem Code zu lassen und
prüfen Sie, ob es funktioniert. Wenn Nüsse, um es wieder anzuschließen. So
sieht es gerade aus. Und wenn wir das Spiel spielen
und probieren wir es aus. Mit dem Code sieht es also viel
besser
aus, als ob nichts nervt. Ich habe 15 Minuten
lang versucht zu spielen. Also habe ich gerade
die Gesundheit für
den Feind geändert , damit ich
sie etwas schneller töten kann. Aber es sieht so aus, als würde jetzt
alles funktionieren. Sie laichen nicht
und lagern nicht. Sie laichen nicht mit
ihrer Todesanimation. Und wir können darüber nachdenken, das Spiel so zu
spielen. Alles funktioniert
richtig, wie Sie sehen können. So genial. Und das waren die
Bugs dafür. Und wenn die Feinde wieder, unser Durchschneiden, Sie diese Trennung
zwischen ihnen erhöhen können , wie ich es Ihnen zuvor
gesagt
habe, habe ich das auch hier getan,
weil es Clipping gab. Also klickte ich auf den
ersten, sagte der E21, klickte auf den zweiten
auf 1.2, dann den dritten, also 14 und klickte auf den
vierten, antwortete auf 1.6. Also kann ich es um weiter erhöhen. Wenn Sie sehen, wie sie ausschneiden, können
Sie sie immer vergrößern. Aber ja, jetzt ist alles
repariert und
hoffentlich testen wir die Leiter kurz bevor wir das beenden. Das
hab ich nicht gemacht. ist also auch nicht unmöglich, den Brief anzugreifen, nur wenn ich von der Leiter falle. Sie können also nur sehen, wenn
ich den Brief abgeschlagen
habe, kann ich tatsächlich angreifen. also auf dem
Brief selbst stehe, kann
ich nicht angreifen, aber wenn sie mich abgeschlagen haben
und ich markiere, kann ich sie angreifen. Okay, also das war es für diese Lektion und lasst uns alles
speichern. Und lass uns weitermachen.
106. Erstellen der schwimmenden Text: Hallo an alle und
willkommen in dieser Rubrik. In diesem Abschnitt habe ich
darüber nachgedacht, Namensschilder zu erstellen, aber stattdessen
erstellen wir tatsächlich schwebende Kampftexte. Ich denke, es ist an
dieser Stelle interessanter , dies zu schaffen. Und ich füge die Namensschilder in meine zukünftigen zusätzlichen Videos ein. Für den schwebenden Kampftext. Es sind nur ein paar Texte. Wenn du den Feind triffst
, erscheint dieser Text
und er zeigt dir, wie viel Schaden du dem Feind zugefügt
hast, denn im Moment
hat der Spieler keine Chance, ihn zu sehen. Es wird also hochfliegen und
dir sagen, wie viel Schaden du angerichtet hast. Und wenn der Feind dich trifft, zeigt dir
der Feind wie viel Schaden er
dir als Spieler zugefügt hat. Fangen wir also damit an. Fangen wir an, mit der Benutzeroberfläche zu arbeiten. Gehen Sie also zum UI-Ordner, und hier können wir mit der rechten Maustaste klicken und einen neuen
Benutzer-Widget Blueprint
erstellen. Lasst uns das hier erstellen. Und nennen wir es w
b und schwebenden Text. Das ist also das Menü, das
ich benutzen werde. Hier drin. Diese Benutzeroberfläche wird sehr einfach sein. Beginnen wir noch einmal mit
dem Canvas-Panel. Beginnen Sie immer mit einem Canvas-Panel , wenn Sie eine Benutzeroberfläche erstellen. Und drinnen von hier, suchen
wir nach einem Overlay tatsächlich Quantile Quantile Box. Und ich zeige dir
, was ich hier mache. Also horizontale Box und das einzige, was wir
brauchen, ist ein Bild
im horizontalen Feld und einen Text innerhalb des
horizontalen Feldes. Es wird also nur ein Bild sein
und das wird eine Ikone sein, offensichtlich dieses Bild hier. Und dann einige Texte, die
dir zeigen, wie viel Schaden du dir allen
Feind zugefügt hast. Für die Benutzeroberfläche, wo Sie nicht den ganzen Bildschirm
benötigen. Zum Beispiel brauchen wir hier oben nur
einen schwebenden Text. Anstatt mit dem Bildschirm zu gehen, müssen Sie ihn auf den gewünschten Wert
ändern. Erwünscht ist nur
dieser Teil hier zu sein, damit Sie sehen können, dass die
Leinwand verschwunden ist
oder tatsächlich nicht verschwunden ist. Es ist immer noch da, aber es hat sich hier nur an
diesen Inhalt
angepasst. Klicken
wir also mit dem Bild auf das Bild und importieren wir es
tatsächlich. Also nochmal, in dem
Kursmaterial, das ich für
Sie in die Benutzeroberfläche und die Bilder aufgenommen habe , diese Art und dieses Blutsymbol. Nehmen wir die also,
gehen wir zu den UI-Bildern. Und drinnen von hier, lass uns diese beiden importieren. Dies ist keine Pick-Slots, daher müssen
wir nicht mit der rechten Maustaste klicken und Dampf-2D-Einstellungen
anwenden. Jetzt gehen wir zurück und
klicken hier auf dieses Bild. Suche zum Beispiel nach Blut. So. Und jetzt kann ich sehen, dass es
nicht in der richtigen Größe ist. Klicken Sie also auf dieses horizontale
Feld, damit ich
die Größe wie diese ändern kann , damit es korrekter
angezeigt wird. Und klicken Sie auf
diese, anstatt horizontal
und vertikal zu
füllen, machen
wir in der Mitte. Und für die Größe mache
ich nur 44
um 44 Pixel. Also viel kleiner als zuvor. Und für den Text,
Klicken wir darauf und lasst uns
zum Beispiel etwas Schaden reiten . Zum Beispiel habe ich
Two 135 Schaden angerichtet. Dies wird sich
je nach Schaden wieder
dynamisch ändern . Ändern wir die Schriftart in Schwarz. Und ich verwende
diese sehr schweren Schriftarten gerne denn wenn du
im Spielbereich bist, möchte
ich, dass der Text sehr
sichtbar ist. Wählen Sie das aus und
richten Sie es auf die Mitte aus. Und auch hier unten
zur Begründung, auch ausrichten
und zur Mitte ausrichten. Richten wir
es tatsächlich nach links da es sich auf der
linken Seite dieses Bildes befinden sollte. Je länger dieser Text sein wird, so wird
es sein. Das ist also tatsächlich richtig.
Lassen Sie es uns einfach hier links zur
Rechtfertigung behalten. Und hier drüben versuchen
wir für diese Größe etwas wie 30. Also ein bisschen größer. Und lasst uns eigentlich,
bevor wir irgendetwas tun, einen Abstandhalter
zwischen diesen beiden hinzufügen. Suchen wir also nach einem Abstandhalter zwischen dem
Bild und dem Text. Und lasst uns den Abstandhalter auf
etwa zehn einstellen , so
etwas. Und dazu fügen
wir eine Gliederung hinzu. In der Gliederungsgröße füge
ich eine ein. Wir haben also einen kleinen Umriss. Sie können hier
diese schwarze Farbe sehen. Anstatt ganz schwarz zu sein, machen
wir es einfach etwas grauer. Also nur ein kleiner Effekt. Du kannst den Unterschied erkennen. Dies ist der alte,
das ist das Neue. Also ein sehr, sehr
kleiner Unterschied, nicht etwas sehr Schweres. Für den Schatten. Ich werde
tatsächlich Schatten anwenden. Nun, lasst uns vielleicht 0,5 anwenden. Und wenn das zu viel ist, können
wir es immer reduzieren. Also 0.5 und es wird Schatten
anwenden, damit wir es
tatsächlich in der Umgebung
klarer sehen können . Und was die Farbe angeht, können
wir sie tatsächlich dynamisch
ändern,
damit wir
die Farbe hier nicht wirklich ändern müssen. Und jetzt müssen wir
den Drehpunkt richtig ausrichten. Anstatt also
hier auf die horizontale Box ausgerichtet zu sein, gehen
wir nach oben und
verankern es in der Mitte. Und lasst uns die
Ausrichtung 0.5 bis 0.5 machen und die Position
0 ist 0. Einfach so. Jetzt ist es
vollständig in der Mitte ausgerichtet. Und wenn Sie vielleicht
nicht verstanden haben, wie diese Ausrichtung
war, wenn Sie sie wieder auf 0 haben, können
Sie sehen, dass sie immer
auf diese obere linke Ecke ausgerichtet ist. So 0.5, wir können sehen, dass es
in der Mitte auf das x ausgerichtet ist. Und hier richtet es sich in
der Mitte zum y. Sie können
also sehen, dass es in der
Mitte ausgerichtet ist. Wenn Sie 0,5 bis 0,5 schreiben, wenn Sie einen schreiben, können Sie
sehen, dass es auf diese Weise ausgerichtet ist, 0 oder Zeilen auf diese Weise. 0,5 ist also in der Mitte. Und du siehst, dass wir hier
noch etwas Zufallsraum haben. Und das liegt daran, dass wenn Sie auf das horizontale Feld
klicken, sehen
Sie, dass die Größe hier
nicht dem Text entspricht. Sie können also einfach auf
diese Größe klicken, um den Inhalt zu erhalten, und es wird automatisch auf das angepasst, was
Sie hier haben. Wenn Sie also Ihren
Schaden viel höher haben, können
Sie sehen, dass das horizontale
Feld
automatisch
auf diese Zahl skaliert wird . Das ist also ein sehr cooler
Trick, um den Inhalt anzupassen. Jetzt haben wir diese
Kampftexte und es ist bereit, auf
das horizontale Feld zu klicken, Sie können sehen, dass es in
der Mitte ausgerichtet ist und es sieht jetzt
völlig korrekt aus.
107. Hinzufügen von UI: Lassen Sie uns jetzt eine UI-Animation hinzufügen , um sie etwas
interessanter zu machen. Also haben wir noch nie
mit Animation gearbeitet. Und wenn Sie diese App nicht haben, versteckt sie sich
manchmal hier. Sie haben also einen Animations-Tab oder wir finden ihn
hier im Fenster. Animationen. Sie können es
auch hier finden, wenn es geschlossen ist. Aber hier unten können Sie
einfach klicken und ziehen
und Sie können sehen, dass diese
Animationsregisterkarte angezeigt wird. Wir möchten also eine
Animation für dieses Jahr erstellen, und ich möchte
das Ganze verschieben, sowohl das Symbol als auch den Text. Also klicke ich auf
dieses horizontale Feld und lass uns vorerst
den Namen ändern. Nennen wir es HB
für horizontale Box. Und lassen Sie es uns in schwebenden
Text umwandeln, damit sie es sind. Also jetzt haben wir das. Hier
unten in der Animation können
Sie auf diese
Schaltfläche klicken, um eine Animation hinzuzufügen. Und nennen wir es „
Laden von Textanimation“. Jetzt können Sie auf
diese Animation klicken und dann auf Track hinzufügen klicken. Und dann
musst du auswählen, wozu
du Animation hinzufügen möchtest? Und ich möchte mögen, dass
du
das auswählen musst , zu dem du die Animation
hinzufügen musst. Zum Beispiel wähle ich dieses horizontale Feld aus
und klicke hier. Und jetzt kann ich auf
dieses horizontale Feld klicken ,
um eine Animation dafür zu erstellen. Die Sache ist, dass wir es tun wollen, ist zuerst, dass wir es einfach verschieben wollen. Es läuft also wie
wenn ich einen Feind treffe, wird
es von hier aus gehen. Also hier im Laufe der Zeit zum Beispiel mehr als 1 Sekunde, also wird der
Text hochfliegen. Das ist also die Hauptsache, die
wir gerade machen wollen. Hier im horizontalen Feld kann
ich auf diesen Drag hinzufügen klicken. Und ich möchte
die Transformation ändern. Transformieren. Sie können die Übersetzung ändern, was bedeutet, was immer wir gerade tun
wollen. Ändern Sie also die Position
des Textes, also Übersetzung. Und Sie können die Rotation,
die Skala und dieses Jahr ändern . Fangen wir also mit
der Übersetzung an. Lasst uns hier rein klicken. Für die Übersetzung möchte
ich also von 0 gehen. Und es ist tatsächlich in
der entgegengesetzten Weise. Es ist nach oben, so ist es. Es ist im Minus. Ich möchte jetzt von 0 gehen. Ich denke nach 1,5 Sekunden. Also möchte ich meine ganze
Animation 1,5 Sekunden machen. Nach 1,5 Sekunden gehe
ich also minus 150 im y. So können Sie Ihre Punkte
erstellt sehen. Sie gehen also
von hier nach hier, Sie können sehen, wie einfach es
ist, UI-Animationen zu erstellen. Wir haben es so gemacht, als
ob du es selbst machst, kannst
du es in 15 Sekunden machen. So sehr einfach,
von 0 auf minus 150 zu gehen. Okay, das sieht also interessant aus, aber ich
wollte
gerade ein bisschen mehr für
die Rotation tun . Es ist in Ordnung. Es beginnt mit 0,
aber nach einem 2.5th, also 0.5, möchte ich
fünf in der Rotation machen. Und dann nach 1 Sekunde möchte
ich wieder zu 0 gehen. hier auf 0 klicken, können
Sie sehen, dass es einen neuen Punkt hinzufügt. Und wenn Sie diese Punkte jemals verschieben
müssen, können
Sie immer auf
den Punkt klicken und
ihn an einen anderen Ort ziehen. Wenn Sie möchten, dass es
länger oder kleiner ist, können
Sie das immer tun. Also einfach so kannst
du sehen, ob ich das
einfach entferne, wenn ich auch
woanders klicke. Jetzt können Sie sehen, dass es hochfliegt, es dreht sich um fünf Grad auf diese Weise und dann dreht es sich um. Wenn Sie möchten, dass es mehr wird, können
Sie immer
zehn schreiben, wenn Sie möchten. Du siehst jetzt,
dass es viel mehr herauskommt. Aber ich wollte es
nur vorerst behalten und wir können immer ändern, wenn es sich um eine
zu kleine Änderung handelt. Also denke ich auch, dass es interessanter
sein wird, wie wenn der Text in
unsere erste Phase kommt, scheint es. Nachdem ich 0,3 Sekunden auf die Waage
geklickt
habe, möchte ich sie zu einer Größe machen. Es fängt also mit einem hier an, und dann scheint es
die Größe von zwei zu haben. Und dann nach 0.6 möchte
ich tatsächlich, dass es hier
wieder zu einem zurückgeht. Wenn es also Spawns ist, tut es das. Das kommt uns ins Gesicht, geht wieder zurück und steigt nach oben. Okay, das
sieht also interessant aus. Aber als letzter Effekt denke
ich, dass es auch
interessanter sein
wird , wenn es im Laufe der Zeit
verschwindet. Hier um 1 Sekunde werde
ich jetzt tatsächlich eine weitere
Transformation sein, weil sie hier
nicht wirklich eine
Sichtbarkeitsfunktion hat. Klicken Sie also hier oben auf den
Track. Und obwohl ich es in einer Sekunde
hier habe, ist
es nicht wirklich wichtig. Sie können
es jederzeit ändern, wenn Sie
dies noch nicht getan haben und Sie es in 1 Sekunde
ändern müssen. Auch hier können Sie diese Punkte einfach anklicken
und ziehen. Wenn ich also 1 Sekunde eine Träne
habe, klicke ich auf die Strecke. Und dann derjenige
namens „Render-Opazität“. Dafür fange
ich mit
einem an . Das ist also richtig. Dann gehe
ich zu 1.5, schreibe ich 0, also wird es verschwinden. Jetzt können wir die Animation sehen. Wir gehen davon ab. Und dann wird es steigen, und dann wird es langsam
verschwinden, so. Also sehr flüssige Animation. Und du kannst immer hier
hochklicken, um es zu spielen. So wird es aussehen. So sehr interessante
Animation, die du machen kannst. Und du kannst machen,
was du willst. Sie können auf diese
Spur klicken und Sie können tatsächlich sehen, was Sie
auch für diese Transformation tun können Sie haben auch eine Scheranimation und versuchen, an
jede Animation zu denken , die
Sie versuchen. Und ich denke, das ist eine
einfache und coole Animation , mit der wir arbeiten werden. Also das war es für
diese Animation und wir können kompilieren und
speichern, alles speichern. Und lass uns mit
dem nächsten übergehen.
108. Schwebende Text: Jetzt, da wir mit
der Benutzeroberfläche und der Animation fertig sind, beginnen
wir mit
der Funktionalität von
hier und
dem Widget-Blueprint. Gehen wir nun zur Grafik und löschen wir
diese Standardereignisse. Anstatt
hier klicke ich mit der rechten Maustaste und erstelle
ein neues benutzerdefiniertes Ereignis. Nennen wir es Update. Text wird geladen. Schwebender Text wurde aktualisiert. Sehr, sehr einfach. Es wird unseren Text aktualisieren. also auf diesen Text klicken, ändern
wir zuerst
den Namen. Ändern wir es in
TXT, der Text lädt. Und klicken wir
hier ist variabel, sonst wird es hier nicht
erscheinen. Und lassen Sie uns diesen
Text jetzt nehmen und
diesen Text so sagen . Und jetzt können wir diesen Text
hier nehmen und ihn in
diese Funktion oder Ereignisse ziehen, da wir dieses Ereignis anderswo
aufrufen werden ,
um den Text zu aktualisieren. Anstatt hier
nenne
ich es einfach Floating-Text. Wir können auch die
Farbe des Textes ändern. Wenn der Feind uns trifft, können
wir eine rote Farbe haben. Wenn wir den Feind treffen, können
wir eine blaue Farbe haben. So können wir
die Farbe auch variabel machen. Wenn Sie diesen Text noch einmal nehmen , können
wir, wenn Sie nur
möchten, wenn Sie nicht wissen
, wie die Funktion
heißt und Sie wissen,
was Sie tun möchten. Sie möchten die Farbe ändern,
nur um Farbe hinzuzufügen und zu
sehen, was passiert? Und so
findet man es am besten. So können Sie hier sehen, dass
wir etwas namens SetColor und Opazität haben. Also wähle das hier. Und jetzt können
Sie in
Farbe und Deckkraft davon ziehen
und Schieferfarbe erstellen. Und jetzt können Sie sehen, dass Sie die Farbe des Textes
ändern und Sie können es auch ändern passt ein Vordergrund wird Farbe
angegeben. Dies ist der Standardwert. Du musst das nicht anfassen. Sie können die Farbe hier tatsächlich
ändern. Damit können wir die
angegebene Farbe einfach wieder aufnehmen in unsere Veranstaltung
einstecken. Wir werden
es woanders ändern. Und nennen wir es einfach
Floating-Textfarbe. Und das Letzte, was wir tun wollen, ist, dass wir
dieses Symbol ebenfalls ändern möchten. Es ist also Blut, wenn wir getroffen
werden und es ist dieses Sortiersymbol, wenn
wir den Feind treffen. Das wollen wir auch dynamisch ändern. Lassen Sie uns zuerst
den Namen erneut ändern und es Bild
nennen, Text
laden und vielleicht
Symbol für schwebendes Textsymbol. Lassen Sie uns kompilieren
und speichern und gehen wir zur Grafik. Und statt hier, ziehen
wir es jetzt und sagen, dass dieser Satz Pinsel
heißt. Wenn Sie nur nach dem Pinsel aus der Textur suchen
, und dies ist eine
Textur, und deshalb sagen wir
Pinsel aus der Textur einstellen. Also lass es uns anschließen
und du kannst sehen, dass du alle
deine Texturen hier findest. Aber wir wollen uns dynamisch
ändern. Ziehen wir diese
Textur also und machen es hier. Und nennen wir es
Floating-Text-Icon. Und lassen Sie mich hier einfach
etwas besser organisieren , damit
Sie doppelklicken können. Eigentlich kannst du diesen
hier
auch einfach nach oben ziehen . Ich
denke, dass es besser ist. Und zieh es her. Drücken Sie auf Cue, um alles
auszurichten. Und ich denke,
das sieht gut aus. Das ist es, was wir bisher haben. Das ist die Funktionalität. Und denk dran, wir
wollen unsere Animation spielen. Hier oben im
Event Construct können
Sie also Event-Konstrukt schreiben und das wird
wahrscheinlich nur mit dem Spiel beginnen. Denken Sie daran, dass wir Begin Play
und unsere anderen Blueprints verwenden. Es heißt jedoch Event Construct, wenn
Sie es mit UI zu tun haben, dies ist dasselbe. Das ist genau wie immer, wenn du das
Spiel spielst und die Benutzeroberfläche
konstruierst. Was wir also tun
wollen, ist, dass Sie
unsere Animation, schwebende
Texte Animation sehen können . Das haben wir geschaffen. Hol dir diese Variable hier. Und das Einfachste, was wir
einfach ziehen können und Animation abspielen
sagen. Jetzt
spielen wir die Animation ab. Wir müssen nicht wirklich mehr tun. Das war's also. Versuchen wir es ein
bisschen nach unten. Jetzt haben wir die
Funktionalität dieser Benutzeroberfläche hier. Mit dieser Funktionalität können
wir dies tatsächlich
anderswo aufrufen und die Benutzeroberfläche aktualisieren.
109. Erstellen des schwimmenden Text: Okay, also müssen wir jetzt
einen Floating-Text-Akteur erstellen. Wenn Sie also Schaden nehmen und
Feind oder Feind Sie beschädigen und Sie diese Benutzeroberfläche hier
spawnen möchten. Wenn du
es auf die Welt spawnen willst,
denk daran, dass du
etwas brauchst, um es zu spawnen. Du kannst hier nicht einfach Text
ohne irgendetwas spawnen. Also brauchen wir tatsächlich einen
Schauspieler und wir müssen diesen Schauspieler
spawnen, wenn
der Feind getroffen wird. Und dann entfernen wir diesen Schauspieler, wenn
der Text fertig ist. also zu den Blueprints gehen
und hier drinnen klicken, können wir mit der rechten Maustaste
klicken und auf Blueprint-Klasse klicken. Und dann können wir einfach
einen einfachen oder keinen Papierakt erstellen . Wir wollen hier eigentlich ein normales
schaffen. Ich habe es mit dem Papier versucht
und es hat eigentlich nicht funktioniert. Also müssen wir ein normales benutzen. Und damit
nennen wir es PP Floating Text. Und klicken wir hier drauf. Und was wir hier machen wollen, möchten
wir dem Ansichtsfenster
nichts hinzufügen, aber hier oben in den Komponenten klicken
wir hier und
lassen Sie uns nach Widgets suchen. Und Sie können sehen, dass Sie hier
etwas namens Widget haben. Und das ist ein 3D-Widget. Es ist also nicht wie die Benutzeroberfläche hier
drüben, die wir gemacht haben. Wenn Sie
hier eine Komponente hinzufügen, können Sie sehen dass sie tatsächlich auch im
Ansichtsfenster angebracht ist. Es ist ein 3D-Widget
und so
machst du Dinge wie ich in der Welt zu zeigen
. Also habe ich vorhin über das
Namensschild gesprochen. Wir werden diese
in den zusätzlichen Lektionen machen, aber die Namensschilder machen, wird
das Gleiche sein. Machen Sie diese 3D-Widgets,
weil wir
sie in der Welt anzeigen wollen und vielleicht dem Charakter
folgen sollten. Also hier haben wir ein Widget erstellt. Und Sie können
rechts im Widget sehen, im Detailbedienfeld können
Sie einige Einstellungen ändern. Zuerst müssen Sie also die Widget-Klasse
auswählen. hier schauen, müssen Sie diejenige
auswählen, die Sie gerade erstellt haben. Also der
schwebende Text des Widget Blueprint. Und ich kann sehen, dass es
hier erscheint, das Darstellungsfenster. Also lasst uns kompilieren und speichern. Und anstatt Welt zu machen, also wenn Sie sich für die Weltraumwelt entscheiden, wird
es auf der Welt
so aussehen. Wie ein Charakter tatsächlich
um diesen Text drehen
und ihn in 3D sehen
kann . Ich möchte jedoch nur, dass
es überprüft wird. Und was Bildschirm bedeutet ist, dass er
uns immer auf dem Bildschirm gegenübersteht. Ich möchte nicht, dass es wie 3D-Text
aussieht. Bildschirm wird der richtige sein. Und ich werde sagen,
zeichne eine gewünschte Größe. Also haben wir es jedoch
in unserem Widget-Blueprint geschafft, und das war's für diesen. Das war also eigentlich
einfach. Gehen wir also zum Ereignisdiagramm und fügen die Funktionalität hinzu. Löschen wir
diese Standardeinstellungen. Und dafür klicke ich rechten Maustaste und erstelle
dein individuelles Ereignis. Ich möchte keine
Blueprint-Interface-Funktion nur für
diese schwebenden Texte erstellen Blueprint-Interface-Funktion nur für ,
weil ich nicht glaube, dass ich hier mehr Sachen brauche. Lassen Sie uns dieses hier zu
einem benutzerdefinierten Ereignis machen und nennen wir es schwebenden Text
anzeigen. Und dafür nehme
ich dieses Widget. Benennen wir es tatsächlich um. Benennen wir es in
schwebende Text-Widgets um. Also nehme ich es hier hin. Und dann müssen wir „Benutzer
abrufen“ sagen, Widget-Objekt. Und jetzt müssen wir es in die Vergangenheit umsetzen, was
Sie hier gewählt haben. Also der schwebende WB Text, kostet WB, Text zu laden
und ihn dann hier zu verbinden. Und jetzt haben wir Zugriff auf
diesen Widget Blueprint, sodass Sie von hier aus
alles anrufen können. Und denken Sie daran,
was wir
von diesem Widget-Blueprint aus anrufen möchten , lassen Sie
es mich hier tatsächlich vergrößern. Das, was wir von dort aus anrufen
möchten, ist dieser schwebende Text zu aktualisieren. Hier können wir also nach
Updates suchen , die Texte laden, und Sie können diese
Funktion von dort aus aufrufen. Und stellen Sie einfach sicher, dass Ziel dieser schwebende WP Text
ist. Und das sind alles, was
Sie aktualisieren müssen. Und jetzt ziehe ich es einfach
wieder hierher in dieses Ereignis weil wir es woanders
anrufen werden. Genau so. Und das hier werde
ich tatsächlich als Multicast ausführen. Also das ist, denk daran,
was ich vorher gesagt habe. Ein Multicast kann nur
durch ein Serverereignis laufen. Sie können sich also vorstellen, dass Sie irgendwo ein Serverereignis
haben werden . Also werden wir später
ein Serverereignis erstellen. Dies läuft jetzt durch den Multicast und es wird diese Informationen
allen Spielern
anzeigen. Und der Grund, warum
ich
das im Multicast nenne und
nicht in einer Wiederholungsbenachrichtigung. Auch hier
wird dieser Kampftext erscheinen und verschwinden. Und für Spieler, die
sich
noch nicht verbunden haben oder weit weg stehen, diese
Informationen irrelevant, da sie
nach 1,5 Sekunden verschwinden. Es macht also keinen Sinn für
einen Vertreter zu benachrichtigen, denn denken Sie daran, Eric Notify ist etwas
, das alle Clients auch benachrichtigt , wenn sie zehn Minuten später
eine Verbindung herstellen. Wenn Sie es also zehn Minuten später in einer
Wiederholungsbenachrichtigung tun ,
wenn
sie eine Verbindung herstellen, sehen sie all
diesen Spam-Kampftext, der diesen Spam-Kampftext, nach 1,5 Sekunden
erscheint und verschwindet, obwohl er ist vor zehn Minuten passiert. Das wollen
wir also nicht. Wir haben gesehen, dass ein Multicast es
nur hier zeigt und nun auf die anderen
vernetzten Spieler hereingefallen , die dir nahe stehen. Wenn Sie diesen Multicast spielen
, werden diese
schwebenden Texte angezeigt. Und denk dran, das ist ein Schauspieler. Ein Schauspieler, wenn Sie
es in die Welt spawnen, müssen
Sie es
irgendwann entfernen , denn
obwohl Sie
diesen Text hier abspielen und diese
Animation so verschwindet. Denken Sie daran, dass Sie
einen Schauspieler hervorgebracht haben und dieser Akt, dieser Punkt Schauspieler wird
nicht von selbst verschwinden. Also müssen wir
diesen Schauspieler irgendwann zerstören. Also nehme ich das
hier und
nehme meine schwebende Animation. Also nenne ich das hier. Sie haben etwas namens
get and time, weil ich diesen Schauspieler löschen
möchte diesen Schauspieler löschen
möchte nachdem diese Animation gespielt
wurde. Also kann ich dieses Mal kriegen. Also 1,5 Sekunden. Ich kann es tatsächlich so bekommen, indem ich die Animation nehme und
das Enzym bekomme, das 1,5 Sekunden ist. Und ich kann jetzt eine Verzögerung setzen
und mich hier verbinden. Jetzt kann ich
dann den Schauspieler zerstören. Was das tut, ist, dass ich meinen Text aktualisieren
werde und ich sage ihm, dass er warten soll wie lange diese Animation ist. Wenn Sie
diese Animation
irgendwann auf fünf Sekunden ändern möchten , ist
dies sehr cool, da sie sich jetzt einfach automatisch auf
fünf Sekunden ändert , weil sie nur die Endzeit
erhält
deiner Animation. Und wir verzögern es. Und dann zerstören wir diesen Schauspieler hier, weil
wir ihn nicht mehr brauchen. Das war's also für diesen
schwebenden Text-Schauspieler. Und jetzt lasst uns
tatsächlich
weitermachen und die größere
Floating-Text-Logik machen.
110. Schwebende Text: Arbeiten wir nun an der größeren Textlogik
zum Hochladen. Was wir also tun wollen, ist wieder
einen schwebenden Text anzuzeigen ,
wenn der Feind, der Feind dich trifft und
wenn du den Feind triffst. Je nachdem, wer
schlägt, wer zum Beispiel den Feind getroffen hat, möchte
ich, dass der Text über
dem Feind liegt. Wenn der Feind dich jedoch trifft, möchte
ich, dass der Text über dir liegt. Also müssen wir es für
beide Spielerbasis hier tun. Und wir müssen
es auch für die feindliche Basis tun. Und denk dran, wir haben ein
Elternteil für beide gemacht. Denken Sie also daran, dass die
Charakterbasis sowohl für die
Spielerbasis als auch für die gegnerische Basis
sichtbar ist . Also haben wir das zu
Beginn dieses Kurses gemacht. Also lasst uns das tatsächlich
innerhalb der
Charakterbasis codieren , denn dann können wir es
sowohl in der gegnerischen Basis
als auch in der Spielerbasis verwenden . Und jetzt können Sie sehen, wie
nützlich es ist, für all diese Gegenstände
einen Elternteil zu erstellen . also zu einem späteren Zeitpunkt Wenn Sie also zu einem späteren Zeitpunkt die
Feinde dazu bringen wollen, Gegenstände fallen zu lassen, denke ich auch,
dass
wir das in den zusätzlichen Lektionen tun werden . Werfen Sie einen Blick auf meinen Kurs. Vielleicht habe ich bereits viele
zusätzliche Lektionen
gemacht , als
du diesen Kurs ansiehst. Aber für die Elemente möchten
wir erneut erstellen, mit der rechten Maustaste klicken
und einen Akteur erstellen. Und dann möchten wir eine Artikelbasis
erstellen. Und aus der elementbasierten möchten
wir zum
Beispiel eine Quest-Item-Basis erstellen. Und von Quest-Item-basiert möchte
ich Quest-Items erstellen. Also sehr, sehr gute
Vorgehensweise, um Basis-Blueprints zu erstellen ,
da Sie sie später zu Ihrem Vorteil nutzen können. Gehen wir also zum
charakterbasierten und machen den schwebenden Text. Öffnen wir also den vollständigen
Blueprint-Editor. Ich lösche alle
diese Standardereignisse. Und hier fangen wir an,
unser benutzerdefiniertes Ereignis für
Displayschrifttext zu erstellen. Wenn Sie es nennen, zeigen Sie
schwebenden Text an. Und wir können es zu einer
Blueprint-Interface-Funktion erstellen. Aber im Moment
weiß ich eigentlich nicht , welche Variablen wir brauchen. Fangen wir einfach an, einen Kunden
zu machen. Du kannst es immer ausschalten. Und lasst uns hier runter gehen, neue benutzerdefinierte Ereignisse
erstellen und über den Server
ausführen. Denn denken Sie daran, dass
Sie im
schwebenden Text hier einen Multicast erstellt haben. Also müssen wir es durch
den Server laufen und wir
müssen es hier machen. Also führe es hier auf
dem Server aus. Und lass mich
ihm tatsächlich einen Namen geben. So wird der Server den Text geladen. Dafür rufen wir
es wieder hier auf. Wir sind also inzwischen daran gewöhnt und ich habe
es nicht richtig genannt. Zeigen Sie also an, und versuchen wir es noch einmal, Server zeigt schwebenden Text an. Okay, also hier, was
ich als
Variable machen möchte ,
will die Schauspieler tatsächlich. Wenn es also der Feind ist
oder der Spieler ist, denn denken Sie daran, dass dies eine Charakterbasis
ist. Also habe ich momentan
keine Ahnung, ob es der Spieler oder der
Feind ist, der beschädigt wird. Lassen Sie mich also hier nach Schauspieler
in der Variablen suchen. Wähle diesen einen Schauspieler. Und lassen Sie uns den
Namen in beschädigten Schauspieler ändern. Also müssen wir herausfinden
, wer beschädigt ist, ist der Spieler oder
ist es der Feind? Jetzt können wir mit der rechten Maustaste auf diesen Schaden klicken und
ihn zu einer Variablen befördern. Und nennen wir
es einfach „beschädigter Schauspieler“. Jetzt können wir die
Replikation so einstellen, dass sie repliziert wird. So kann der Kunde diesen Wert
auch sehen. Und das müssen wir offensichtlich auch in
dieses Ereignis hineinziehen , denn dieses wird irgendwann
woanders anrufen. Jetzt haben wir dieses
und ich möchte
meinen schwebenden Text-Schauspieler
an dem Ort spawnen meinen schwebenden Text-Schauspieler , an dem der
Schauspieler beschädigt wurde. Also lasst uns diesen
Schaden dem Schauspieler nehmen. Und eigentlich das,
was wir tun wollen, lassen Sie
es uns einfach erstellen, damit Sie es sehen können. Ich denke, es wird
verwirrend sein, wenn ich hier anfange. Das, was wir
tun wollen, ist diesen Schauspieler hervorgebracht, also hat der BP-schwebende
Text hervorgebracht. Schwebende Texte. Also versuchen wir
diesen schwebenden Text zu spawnen. Und hier unten
müssen Sie auswählen,
versuchen, den Standort anzupassen, aber immer spawnen, nur um sicherzustellen, dass er
immer spawnt. Und für diese Spawn-Transformation müssen
wir von hier aus fahren
und sagen, dass wir transformieren. Jetzt brechen wir es auf, um
sowohl den Standort als auch die
Drehung und den Maßstab zu sehen . Und das ist es, was
du versuchst zu tun. Wir versuchen jetzt,
diesen schwebenden Text über
dem beschädigten Schauspieler zu spawnen . Also versuchen wir,
diesen beschädigten Schauspieler zu nehmen und
sagen, dass wir den Standort der Schauspieler holen. Weil denken Sie daran, dass
dies ein Schauspieler ist. also den Standort der Schauspieler bekommen, können
wir
es einfach so anschließen. Ich möchte es jedoch ein
bisschen über den Schauspieler spawnen. Ich möchte es nicht mitten
im Schauspieler spawnen. Also werde ich tatsächlich sagen,
brechen und diesen Vektor brechen. Also kann ich das X, Y und Z. sehen Ich mache
das Gleiche hier. Ich nehme das und
sage make vector. Und jetzt ist das x dasselbe, das y ist dasselbe.
Es ist nur das z. Also hier oben, wenn Sie
möchten, dass der Text ein bisschen nach oben ist, ist
es die Z-Achse. Also nehme ich diese
Z-Achse und sage plus vielleicht 30 oder
so ähnlich. Du musst das testen und dann steckst du
es so ein. Das X ist also das gleiche,
das y ist das gleiche. Und ich passe nur
den Z-Wert so an, dass er etwas über dem Schauspieler liegt. Ziehen wir das hoch und organisieren wir
das ein bisschen besser. Beantworten Sie jetzt diesen schwebenden
Text an dieser Stelle, also ist die Drehung dieselbe, also sind Nullen 0 und der Maßstab ist hier gleich, wir
müssen das nicht berühren. Jetzt können wir dies auf
eine Variable bewerben und wir können es
als schwebenden Text bezeichnen. Jetzt ist dies der Schauspieler, den wir spawnen, wenn
wir den Feind treffen. Okay, also denken Sie von diesem Schauspieler
daran, dass Sie
diesen Multicast gemacht haben und jetzt haben Sie tatsächlich einen
Hinweis auf diesen Schauspieler. Sie können von hier ziehen und schwebenden Text
anzeigen und Text zum Laden
anzeigen. Und es ist nicht von
der Charakterbasis, es heißt hier oben nur
Funktion. Und stellen Sie sicher, dass das Ziel
Floating-Texte von BP sind, um
sicherzustellen, dass es von hier kommt. Jetzt können Sie diesen Text tatsächlich
aktualisieren. So sehr cool. Sie können dieses Ereignis aufrufen, es geht hier durch und dann können Sie diese schwebenden Texte tatsächlich
aktualisieren. jedoch daran, dass ich Ihnen
vorher gesagt habe , dass wir die Farben
ändern werden. Wenn
der Spieler
uns zum Beispiel trifft oder der Spieler den Feind trifft, den Feind, oder er
zeigt hier eine blaue Farbe an. Wenn der Feind uns jedoch trifft, zeigt
er eine rote Farbe an. Wir können es also nicht vollständig so
machen, weil wir eigentlich nicht wissen, ob dieser beschädigte
Schauspieler ein Spieler ist oder nicht. Was Sie also tun können, können
Sie entweder diesen
beschädigten Schauspieler nehmen und sagen, dass Schauspieler Spieler markiert
hat oder
Schauspieler Feind markiert hat. Weil wir alle
wissen, was Schauspieler ein Tag hat. Wir haben es schon mal benutzt. Ich denke jedoch später, wenn es ein echtes Spiel war, einen anderen Kurs vielleicht haben
Sie jede Menge Karten, Tonnen von Schadenszeichen, und Sie
brauchen tatsächlich mehr Variablen als nur Spieler und Feind. Sie können hier tatsächlich eine Aufzählung
erstellen , die
viel besser,
viel dynamischer und dann viel einfacher für Sie ist. Also lasst uns
das in der nächsten Lektion machen.
111. Schwebende Text: Für diese Aufzählung wir mit der rechten Maustaste und lassen Sie uns eine Blueprint-Aufzählung
erstellen. Nennen wir es einen
schwebenden Texttyp. Innerhalb dieser schwebenden
Texttyp-Aufzählung, fügen
wir zwei Dinge hinzu. Lassen Sie uns hier hinzufügen, nennen Sie
es Ebenenschaden. Und nennen wir es
hier unten, Feindschaden. Es kann also entweder Schichtschaden sein oder es kann feindliche Schäden sein. Jetzt können wir diese
Aufzählung nehmen und hier
zur Spielerbasis oder
Charakterbasis zurückkehren . Und jetzt lass mich diese
schwebenden Texte vorerst löschen. Bevor ich das jetzt aufrufe fügen
wir
es tatsächlich zu diesem Ereignis hinzu. Fügen wir diese Aufzählung hinzu. Und es hieß E schwebender
Texttyp, der hier ausgewählt wurde. Und nenne es wieder den
schwebenden Texttyp. Lassen Sie uns für diese Aufzählung ziehen und sagen wechseln. Denken Sie daran
, dass wir das schon ein paar Mal benutzt haben. Schalten Sie nun die Aufzählung ein,
damit wir überprüfen können, ob es sich um gegnerischen
Schaden oder Spielerschaden handelt. Wenn es sich also um
Spielerschaden
handelt, denken Sie daran, dass er über
den Feind spawnt wird , weil
der Spieler Schaden hat, Sie haben den Feind beschädigt. Der Schaden wird
über den Feind spawnen. Also nehme ich diesen
beschädigten Schauspieler und wir können sagen bekomme feindliche Referenz, weil wir diesen Schauspieler jetzt bekommen wollen. Wir wollen es
über den Feind spawnen. Jetzt. Du kannst es so machen. Und für die, für
den feindlichen Schaden, kannst
du versuchen zu überlegen, was wir
tun können , und vielleicht hast du es schon
erraten. Nehmen wir diesen beschädigten Schauspieler. Und jetzt sagen wir „Spielerreferenz
abrufen weil wir
sie dort spawnen wollen, wo der Spieler ist. Wenn der Feind dem Spieler also
Schaden zufügt, wollen
wir den
Schaden über dem Spieler spawnen. Die Spieler referenzieren. Und von hier aus können wir
diesen schwebenden Text jetzt nehmen und wieder ziehen und sagen, Text zum Laden
anzeigen und
diese Funktion aufrufen. Jetzt können wir es hier zusammenfassen. Kopieren wir es hier unten ein. Und du kannst es
wieder zu den Zielen ziehen. Und ziehen wir es etwas nach unten, damit wir mehr Platz haben,
mit dem wir arbeiten können . Einfach so. Und wenn Sie möchten, können Sie
doppelklicken, um Knoten
umzuleiten und
ihn
etwas schlanker aussehen zu lassen . So etwas. Okay, jetzt können wir diesen Text
aktualisieren je nachdem, ob es
sich um einen Spieler handelt oder nicht. Und lass mich das ziehen, damit ich tatsächlich sehen
kann
, was los ist. Und jetzt können wir
das ziehen
und die ganze Logik, die diese beiden
aktualisieren wird ,
wird dazwischen liegen. Zunächst einmal wird
es für
den schwebenden Text die Höhe des Schadens sein. Das ist also der Schaden des Spielers. Wir müssen zeigen, wie viel
Schaden der Spieler angerichtet hat. also
daran, dass wir
dies bereits haben, alle Schadensereignisse. Gehen wir also zum
Feind, zur feindlichen Basis. Und innerhalb der feindlichen Basis haben wir dieses
Schadensereignis
bereits. Von diesem Schadensereignis wissen
wir bereits, wie viel
Schaden der Spieler angerichtet hat. Lasst uns also mit
der rechten Maustaste auf diese
klicken und zu einer Variablen aufsteigen,
damit wir sie verwenden können. Und nennen wir es einfach
Spielerschadenbeträge. Lassen Sie uns verbinden und
denken Sie daran, es zu replizieren. So kann der Kunde diesen Wert
auch sehen. Wir müssen das
Gleiche später tun. Also lasst uns
das Gleiche für den Spieler hier machen. Wenn der
Feind dem Spieler also Schaden zufügt, müssen
wir hier auch mit der rechten Maustaste klicken, um zu einer Variablen aufgestiegen zu werden, und nennen wir ihn
feindliche Schadensbeträge. Okay, also fördern wir diejenigen, die
variabel sind, weil wir sie
tatsächlich verwenden wollen. Also repliziere diesen auch. Denken Sie daran, das zu tun. Gehen wir nun zurück
zur Spielerbasis. Wie sehr hat der Spieler diesen Feind
beschädigt? Dann können wir
das dem Feind nehmen und Spielerschadenbeträge sagen. Und jetzt können wir
es einfach hier verbinden und es wird deinen Float in einen Text
umwandeln. Wir können das
Gleiche hier unten tun. Wir können sagen, dass Feinde sie
beschädigen. Und wir können es wieder einstecken. Und jetzt wird angezeigt wie viel Schaden der Feind dem Spieler zugefügt
hat. Nun, was die Farbe der
schwebenden Texte angeht, können
Sie hier anklicken. Also mache ich es
blau,
wenn der Spieler den Feind trifft. Dies ist also der Blair-Schaden und er wird blau
angezeigt. Also schiebe das
da hoch und wähle einfach
etwas Zufälliges. Und für die Sättigung schreibe
ich tatsächlich 0,5. Ich will nicht, dass es zu
blau ist. Klicken Sie also auf OK. Und dafür kannst
du versuchen, das Gleiche zu tun. Also nur um eine rote Farbe zu wählen, vielleicht rosafarbener wie diese. Stellen Sie dann
die Sättigung so auf 0,5 ein und klicken Sie auf OK. Also jetzt für das schwebende Symbol, also wenn der Spieler den Feind
beschädigt, möchte
ich das Schwert hier zeigen. Auf der Suche nach Wund können
Sie dies
jedoch für die Feinde wählen. Wenn der Feind den Spieler
beschädigt, möchte
ich nach diesem Los-Symbol
suchen. Jetzt haben wir es also, es ist
dynamisch hier. Okay, jetzt sind wir hier mit dieser Logik
fertig. Das war eigentlich das
schwerste. Jetzt haben wir diese volle Logik. Also müssen wir
dieses Ereignis irgendwo anrufen. Und wir werden tatsächlich
eine schwebende
Textbibliotheksfunktion ausführen eine schwebende
Textbibliotheksfunktion ,
da diese
einfacher aufzurufen ist. Denken Sie daran,
dass wir bereits
etwas in dieser Bibliothek gemacht haben und diese Veranstaltung aufrufen
müssen. Und es wird
durch den Server gehen. Es wird
diesen beschädigten Schauspieler brauchen. Diesmal ist der Schauspieler, den wir später einstecken
werden. Und es wird diesen
Schauspieler brauchen, den Ort nehmen, den schwebenden
Textakteur über dem
Feind oder dem Spieler
spawnen ,
je nachdem, wer beschädigt wurde. Und wenn es ein
verschwommenes Bild ist, müssen wir das
auch später einstellen. Wenn es sich um einen Spielerschaden
handelt, nimmt er den Feind und zeigt
den Schadensbetrag des
Spielers an. Und zeige
diesen schwebenden Text auch durch den Multicast an. Und wenn der Schaden
ein feindlicher Schaden
ist, wird er
die TSP-Ebene nehmen , weil dies der beschädigte Schauspieler
ist, es sind die Feinde, die den Spieler
beschädigen. Und es wird
diesen feindlichen Schaden nehmen und es wird
ihn in diesen Multicast werfen. Multicast wird hier laufen. Es wird
diesen Widget-Blueprint benötigen und
es wird aktualisiert. Gehen wir also zurück zu
unseren Widget-Blueprints. Es wird hier zu
diesem Ereignis gehen den
Text, die Farbe
und auch das Symbol des Textes aktualisieren . Und nachdem Sie diese Dinge aktualisiert haben, wird
es warten, bis
diese Animation beendet ist. Und dann wird
es diesen Schauspieler zerstören weil wir ihn nicht
weiter laichen wollen.
Also wird das Spiel
irgendwann verzögern weil Sie Ihre Schauspieler nicht
entfernen. Jetzt ist all das fertig. Lass uns tatsächlich weitermachen und lass uns weitermachen und es tatsächlich beenden. Also hier ist die Veranstaltung, die
wir nennen wollen.
112. Funktion der Textbibliothek: Okay, also sind wir fast fertig mit den
schwebenden Texten. Also lass uns jetzt
in die Bibliotheken gehen. Wir haben bereits einen gemacht und gehen
zur Funktionsbibliothek. Und drinnen von hier,
fügen wir eine neue Funktion und nennen wir sie jetzt schwebenden Text
anzeigen. Und der Grund, warum ich es
hier
tatsächlich erstelle , ist, dass
dieser schwebende Text, vielleicht brauchen wir ihn in
vielen, vielen Schauspielern und ich
möchte es nicht in jedem
einzelnen Schauspieler schaffen. Auch hier
ist es gut, eine Bibliothek zu verwenden, wenn Sie eine Funktion in vielen
Akteuren, Blueprint-Akteuren,
aufrufen möchten . Zeigen Sie also schwebende Texte an. Ich kann mir vorstellen, obwohl ich
meinen Erwerb nicht erstellt
habe, kann ich mir vorstellen, dass ich das in vielen
Schauspielern
verwenden werde und deshalb
lese ich es hier drinnen. Der schwebende Text benötigt wiederum die Eingabe eines Akteurs, benötigt wiederum die Eingabe eines Akteurs da wir den beschädigten
Akteur brauchen, den wir zuvor erstellt haben. Und wir brauchen den
schwebenden Texttyp. Und das ist die Aufzählung. Wählen wir also zuerst
die Akteurvariable aus. Und dann wählen wir
die schwebenden Texte aus. Dieser ist der Typ des
schwebenden Textes der Aufzählung. Von diesem beschädigten Schauspieler müssen
wir das Event
vom Spieler oder der
Charakterbasis aus aufrufen . Wir müssen das nennen. Lassen Sie mich es tatsächlich in
eine Blueprint-Interface-Funktion verwandeln . Gehen wir also zu den Schnittstellen und wir haben momentan keine. Also klicken wir mit der rechten Maustaste und
Blueprint Interface. Nennen wir es jetzt
Character Base. Und drinnen von hier nehmen
wir an, wir müssen
diesen namens „Gets
Character Reference“ haben . Und hier wird
hier eine Ausgabe der Zeichenbasis ausgewählt. Und nennen wir es Charakter,
Kompilieren und Speichern. Und jetzt gehen wir zurück
zur Charakterbasis, gehen Sie zu den Klasseneinstellungen und fügen Sie hier
Ihr Blueprint-Interface
hinzu, Zeichenbasis,
Kompilieren und Speichern. Denken Sie daran, auch hier zu kompilieren
, damit dies sonst
nicht für Sie angezeigt wird. Also klicke hier drauf. Und dafür werden wir uns
einfach selbst sagen. Also haben wir das jetzt ein
paar Mal gemacht. Damit können
wir jetzt eine Referenz bekommen. In der Bibliothek
können wir
dies also tatsächlich ziehen und dann verweisen
statt Casting,
wir können jetzt sagen, dass er
Charakterreferenz erhält. Und von hier aus können wir diese Veranstaltung
nennen. Gehen wir zurück und
zeigen schwebenden Text an. Eigentlich brauchen wir
dieses auch drin, und ich werde das löschen. Wir können es jetzt
in diesem
Blueprint-Interface tun , ich lösche es und
nenne es Anzeigetext. So sparen Verbindungen hier und
hier können wir nach Suche suchen. Wir können einen neuen namens
Display, schwebender Text erstellen. Und bevor ich es fertig mache, sticht es
manchmal raus. Lassen Sie mich also zuerst
meine Eingaben hier erstellen. Schauspieler oder beschädigter Schauspieler, eher so beschädigter Schauspieler. Und der zweite war der
schwebende Texttyp. Und lasst uns die Aufzählung finden. Und dann finde den beschädigten Schauspieler
, der nur ein Schauspieler ist. Einfach so oben. Spielen Sie einfach schwebenden Text, genau so,
Kompilieren und Speichern. Jetzt können
Sie auf Zeichenbasis mit der rechten Maustaste klicken
und schwebenden Text anzeigen, und Sie können ihn hier auswählen. Und jetzt ist es eine Blueprint
Interface-Funktion. Du kannst sie verbinden. Dies jetzt in der Bibliothek können
Sie diese
Anzeige als schwebende Texte aufrufen. Okay? Alles klar, gut Von hier aus und
sagen Sie schwebenden Text anzeigen. Und es ist eine Nachricht, weil es sich hier um ein Blueprint Interface
Event handelt. So beschädigter Schauspieler, es
ist nur dieser. Also klicke ich hier
und mache einen Umleitungsknoten. Eigentlich keine Umleitung machen. Beachten Sie, dass es ein bisschen komisch aussieht. Also mach das einfach. Und für den schwebenden Text mache
ich das einfach. Das ist einfach das
, was es tun wird. Jetzt das Letzte, was wir
jetzt nutzen können, wir sind tatsächlich fertig. Wir können diese
Bibliotheksfunktion verwenden, um sie woanders aufzurufen. Also lass uns jetzt zum Feind gehen. Der Feind. Hier. Wenn der Feind beschädigt wird, wollen
wir den
Schauspieler über die Feinde spawnen. Wenn die
Feinde beschädigt werden, können
Sie jetzt sagen, dass Sie mit der rechten Maustaste klicken und sagen , wie Sie es
in der Bibliothek genannt haben. Gehen Sie also in die Bibliothek und Sie nannten es schwebenden Text anzeigen. Sie können also mit der rechten Maustaste
hier klicken und sagen, schwebenden Text
anzeigen. Und Sie können sehen, dass es hier aus der Funktionsbibliothek ist, die schwebenden Text
anzeigt. Jetzt musst du
es hier verbinden und du
musst angeben, was
der beschädigte Akteur ist. Es ist Selbst, es ist der Feind. Und was ist der schwebende Text? Es ist, es ist tatsächlich
Spielerschaden. Das ist also
gerade richtig . Kopieren wir das hier. Gehen wir jetzt zurück zur
Spielerbasis. Und für den Spieler, wenn
der Spieler hier
beschädigt wird , fügen wir ihn ein. Und wer ist der beschädigte Schauspieler? Es ist das Spieler-Selbst. Was ist die Art von Schaden, es ist NME-Schaden. Also jetzt wird es es tatsächlich spielen und ich
zeige es dir. Klicken wir also
vorerst auf Spielen und sehen, was passiert. Also werde ich hier tatsächlich als Server
spielen, als Listenserver.
Wie der Server. Jetzt können Sie sehen,
wann ich beschädigt werde wird tatsächlich angezeigt,
wenn ich den Feind treffe. Es wird
diesen Schaden hier zeigen. So sehr cool. Wenn ich jedoch als
Kunde spiele und hier getroffen werde, können
Sie sehen, dass
nichts
angezeigt wird und
darüber werden wir in der nächsten Lektion sprechen. Für diesen Kunden werde
ich mir vorerst keine
Sorgen machen. Aber für diesen Spieler sehen
Sie hier die Clientschäden, die auf dem Server
angezeigt werden. Aber wenn Sie zum Client gehen, zeigt
es tatsächlich
nichts auf dem Server an. Sie können sehen, dass es jetzt korrekt
angezeigt wird. Und lass mich dir tatsächlich zeigen
, was gerade passiert. Also Wendy, jetzt sind wir
in den Spielern. Wenn der Spieler also beschädigt wird, rufen
wir diese Funktion
hier aus der Bibliothek auf. Wir geben also an, wer
der beschädigte Schauspieler ist, es ist der Spieler selbst. Und das ist feindlicher Schaden
, der passiert. Jetzt geht es in
die Funktionsbibliothek, und es wird
diese Anzeige fließende Texte
aus der Zeichenbasis aufrufen . Charakter-Basis. Wenn Sie dieses Ereignis jetzt hier
aufrufen den Server
durchlaufen, wird
der Server diese Variable
festlegen und wir versuchen, diesen
beschädigten Speicherort für Schauspieler zu finden, diesen Text am Standort
der Schauspielerin
antworten. Und wenn wir
auf Text antworten, prüfen wir, ob es
ein klarer Schaden
ist oder ist es feindlicher Schaden? Wenn es ein Genussschaden ist? Wir werden das hier machen. Nennen Sie diesen Multicast aus
dem Floating-Text des BP. Und wir setzen
es je nachdem ob es sich um gegnerischen Schaden
oder Spielerschaden handelt, die Farben und die Symbole. Dieses Ereignis stammt also aus
dem schwebenden
BP-Text, der hier ist. Jetzt wird es
mit diesem Multicast fortgesetzt. Weitergabe an alle Spieler nimmt diesen Widget-Blueprint. Und dann wird
es den schwebenden
Text in diesem Widget durchgehen und aktualisieren, das hier drüben ist. Und jetzt zeigt dieses Widget an, Es wird
für dieses Ereignis hier eingestellt. Es wird den Text und die Farbe
des Textes festlegen
und den Pinsel einstellen. Und danach wird es bis dahin warten, diese Animation
hier, die wir gemacht haben. Es wird also warten, bis
diese Animation
fertig ist , bevor sie den Schauspieler
zerstört. Denn wenn Sie das vorher tun, werden die Texte niemals angezeigt weil es sie schnell
zerstört. Das passiert also. Sie können sehen, dass es viele Schritte sind, aber sobald Sie
wirklich gut darin sind, ist
dies eigentlich
sehr einfach. Gehen Sie also durch die
Funktionsbibliothek, gehen Sie durch die
zeichenbasierte, zeichenbasierte, die den Server
durchlaufen und den Multicast hier ausführen. Und nach dem Multicast aktualisierst
du
diesen Text hier. Okay, also sind wir
mit dem Kampftext fertig. Und der Grund, warum der Kunde
all
dies nicht erhält , ist sehr einfach und es wird wahrscheinlich eine
Minute dauern, um es zu erklären. Also lasst uns
das in der nächsten Lektion machen.
113. Actor: Okay, warum ist das also? Der Kunde kann diesen Schaden hier nicht
sehen. Wenn ich also beschädigt werde, sehe
ich es als Server
und beschädige den Feind. Ich kann es aber auch sehen, wenn ich der Kunde bin, also wenn ich den Kunden hier
eröffne, also als Kunde, kann ich diesen Schaden hier
tatsächlich nicht sehen. Warum ist das so? Und das liegt an der Replikation
von Akteuren. Bisher haben wir diese
Variablen
repliziert und Ereignisse
repliziert, aber wir haben keine
Blueprint-Akteure repliziert. Gehen wir also zum schwebenden
Text hier, Vp schwebender Text. Lassen Sie mich auf die Klassenvorgaben für
diesen Floating-Text-Akteur klicken. Und Sie können auf diese
namens Replikate klicken. Das ist es, was dir fehlt. Klicken Sie also hier und gehen Sie auch zu
den schwebenden Texten, das Widget Während nach
unten. Und Sie müssen auf
diese Komponente klicken , die als
Komponenten-Replikate bezeichnet wird. Denken Sie daran, dass wir im Multiplayer sind. Also klicke auf Play. Wenn Sie jetzt auf
„Play als Client“ klicken, können
Sie jetzt sehen, dass der Client es auch sehen
kann. Und das war die einzige
Änderung, die falsch war. Also nur diese beiden Häkchen. Und vielleicht fragst du
gerade, warum haben wir
das vorher nicht gemacht? Warum? Warum müssen wir es jetzt machen? Wie warum hat das alles funktioniert? Ohne dass wir hier klicken? Und das liegt daran, dass der Charakter, mit dem
wir gearbeitet haben in Unreal Engine Five standardmäßig repliziert
wird. Wenn Sie also auf diesen Player klicken, können
Sie sehen, dass sie tatsächlich
charakterbasiert sind. also auf die
Zeichenbasis klicken, sehen
Sie hier
im Klassenstandard für die Zeichenbasis, diese Replikate ist
bereits für Sie überprüft. Die Zeichen in
Unreal Engine werden also standardmäßig
repliziert. Und deshalb musstest du es nicht
tun. Wenn du es entfernst, wirst du viele Bugs in deinem Spiel
sehen. Dies wird jedoch standardmäßig
geprüft. Und die Akteure werden standardmäßig nicht
repliziert. Wenn Sie danach
eine App erstellen, sollte
jeder sehen, dass Sie sich daran erinnern
müssen, sich zu replizieren. Zum Beispiel, wenn du Waffen
erstellst. Wenn Sie zum Beispiel in einem 3D-Spiel
oder in einem 2D-Spiel,
wenn Ihre Feinde Waffen
fallen lassen oder
der Spieler
Waffen an den anderen Spieler wickelt, muss
dieser Waffenakteur sonst der Kunde
repliziert werden sonst der Kunde
repliziert kann diese heruntergelassene Waffe nicht sehen. also nach der Replikation, genau
wie beim Replizieren, alle diese Variablen, die wir in den anderen Blueprints
gemacht haben,
daran, auch
den Akteur zu replizieren. Wenn du ein Ganzes brauchst, werden
die Spieler es sehen.
114. Bereinigen des Projekts: Jetzt, da wir
mit dem Spiel fertig sind, lasst uns
das Projekt bereinigen. Denken Sie also daran, meinen Abschnitt
für zusätzliche Lektionen zu überprüfen. Ich werde diesen Kurs immer noch
aktualisieren. Zum Beispiel
füge ich ein Typenschild hinzu, um die Gegenstände
fallen zu lassen, die Sie verlieren
können, zum Beispiel Gesundheitstränke, Gesundheitsbalken über diesen Feinden. Wir werden auch Statistiken hinzufügen, damit
wir mehr Kraft
oder mehr Gesundheit und Updates erhalten und vielleicht das
anfragende System suchen können. Also noch viel mehr Dinge, vielleicht sogar 200
Videos, die
wir machen können, wenn wir
nicht von hier aus angefangen haben. Dies sollte
Ihnen jedoch eine gute Grundlage geben, wie einen
2D-Plattformer für mehrere Spieler erstellen können. Also haben wir gelernt, all dies zu
erstellen, wie das Importieren der Assets und Anwenden von Papier auf diese
Einstellungen. Erstellen von
Papier-Flip-Büchern, Sprites, Akteuren und Importieren Sie sie auf die Ebene der
Erstellung von Kachelkarten. Und wir haben
ein Briefsystem und ein
Angriffssystem und viele
Dinge hinzugefügt , die wir in diesem Kurs
lesen konnten. Und in der zusätzlichen
Lektionen werde
ich noch mehr Sachen hinzufügen. Auch hier, wie die Gesundheitsbars, das RPG-Statistiksystem, vielleicht ein Questingsystem. Also viele Dinge, die wir diesem Projekt
noch hinzufügen können. Aber bevor wir zu Ende gegangen sind, lassen Sie mich das Projekt aufräumen weil ich es nicht gerne
so belassen möchte. Also lasst uns zur Spielerbasis gehen, zum Beispiel können wir
mit der
Spielerbasis beginnen , lasst uns von hier anfangen. Für die Vermögenswerte müssen wir also nicht wirklich alles reinigen. Alles ist tatsächlich schon
aufgeräumt. Und lasst uns zu dem Ton gehen
, das auch gut ist. Gehen wir jetzt zu Blueprints, hier handelt es sich bei der Bereinigung
hauptsächlich um Anzeigen. Fangen wir also mit
dieser BP-Kamera an. Und dafür haben wir
eigentlich nichts. Also lasst es uns schließen. Und die Charakterbasis, wir haben hier auch nicht viel. Schau einfach hier nach. Wenn, wenn alles
geklärt ist und Ihnen gefällt, wie Sie Dinge gemacht haben oder hinzufügen
müssen, haben Sie Knoten umgeschrieben. So bin ich zum
Beispiel einfach nur Strukturen. Manchmal nehme ich einfach diese Umleitungsknoten
und verschiebe sie. Denken Sie auch daran,
alles auszuwählen und klicken Sie
auf C, um Kommentare hinzuzufügen. Und du kannst
diese schwebenden Texte
zum Beispiel nennen , du kannst
das viel besser machen als ich. Ich mache es einfach
schnell für diesen Kurs, also dauert es einfach nicht ewig. Aber versuche hier
einen langen Text zu schreiben , der
erklärt, was du getan hast. Denn wenn Sie sechs Monate später zu diesem Projekt
zurückkehren, können
Sie sich nicht
erinnern, was das ist. Also versuche zu schreiben, vielleicht schwebende Texte für den beschädigten Schauspieler und bla,
bla, bla, was auch immer. Sie können sehen, dass Sie hier
viel Platz haben. Wenn Sie möchten, können Sie die Kommentarfarbe
erneut ändern. Sie können die
Größe dieses Textes ändern damit Sie ihn
vergrößern können, wenn Sie kompilieren und speichern
möchten . Und jetzt kannst du zum
schwebenden Text gehen. Hier. Ich glaube, alles
sieht gut aus. Und ich lasse es einfach so
sein wie dieses Jahr. Sie werden gemäht werden
Region hier wirklich viel tun. Und im Player-Controller kann
man
das tatsächlich ein
wenig bereinigen , weil wir nichts hatten oder
wir nichts kommentiert haben. Hier können
wir dies zum Beispiel auswählen und Widgets initialisieren. Normalerweise mache ich auch
hier weiter und sage start play, denn dann weiß ich
wo mein Anfangsspiel ist. Wenn ich viel Code habe, initialisiert
Xia Lai Widgets. Okay, also haben wir die jetzt unten. Jetzt. Nehmen wir das an. Jetzt wählen wir hier
den Charakter aus, und diese sind zusammen. Nehmen wir also all
das und
ich nenne eine Auswahl und Laichen des geschichteten Charakters. Einfach so. Und
wir können hier runter gehen, das aktualisiert die
Health Bar und die Erfahrung. Und lassen Sie mich
das einfach auswählen und sagen, dass Sie
die Gesundheit und die erfahrenen Bars aktualisieren . Wenn du willst, sieht
das eigentlich gut aus,
aber wenn du willst, kannst du das manchmal
immer ziehen und stattdessen hier auf die Seite
legen. Wir haben es also
kompakter zusammen, aber ich glaube nicht, dass
das zusammenpasst. ein Laichen auswähle, möchte
ich einfach Dinge
zusammenfügen, die hier an den Seiten
zusammenpassen. Also
ziehe ich es einfach wieder hier runter. Wenn Sie es jetzt noch einmal möchten, können
Sie auf die
Variablen klicken und ihnen
eine Kategorie geben , wenn ich sie hier
finde. Dieses können Sie also Widget aufrufen, zum Beispiel Widget, Blueprint
oder ähnliches. Also nur eine Kategorie und das Gleiche hier
machen, Widget Blueprint und
sie
werden hier drüben in sich allein gestellt sein. Versuchen Sie das also mit
all Ihren Projekten zu tun. Zum Beispiel
ist die größte wahrscheinlich die Spielerbasis. Ich werde
das alleine aufräumen. Also werde ich wirklich
nichts hinzufügen. Ich werde einfach Dinge schleppen. zum Beispiel hier
klicke, auf Nicht verbundene Pins ausblenden klicke und dann einen Blick hier werfe, und vielleicht bin ich damit unzufrieden, ziehe
ich das nach unten. Versuchen Sie also, Ihr
Projekt so gut wie möglich aufzuräumen. Versuche alles zu kommentieren und setze sie
dort zusammen, wo sie passen. Denn im Moment
sieht man, dass es ein bisschen durcheinander ist. Also musst du alles
kommentieren. Und in der nächsten Lektion zeige ich Ihnen
wirklich sehr nützliche Ressourcen, die ich für mein eigenes
persönliches Projekt
verwende.
115. Nützliche Ressourcen: In dieser Lektion zeige
ich Ihnen einige der nützlichen Ressourcen,
die ich
für meine persönlichen Projekte verwende. Ich habe das gerade zum Spaß erstellt. Dieses Projekt hat hier erstellt. Oder du kannst Gegenstände plündern und du kannst ein Inventarsystem haben. Viele Dinge
, die Sie tun können, haben
Sie ein
Nivelliersystem wie wir. Und du hast Münzen und du
kannst hier zum Shop gehen. Und innerhalb der Scharfe kann
man tatsächlich Sachen kaufen. Für dieses Projekt können
Sie also für diesen Code
sehen, dass ich
die gleichen Methoden verwende. Wenn ich also zum Spieler, der Spielerbasis gehe, zeige ich dir
tatsächlich meine Spielerbasis. Dies ist also die bisherige Spielerbasis
für dieses Spiel. Und ich zeige Ihnen nur Ressourcen, die Ihnen beim Programmieren tatsächlich helfen werden. Wir können also sehen, dass die
Zeilen so sind. Ich mochte diese
Zeilen tatsächlich viel besser
als hier in unserem Projekt, wo
wir diese kurvigen Linien haben. Ich benutze dieses
Plug-In tatsächlich gerne, wo die Leitungen robotisch
werden oder wo auch immer
es heißt, so. Sie können es auf
dem Marktplatz finden. also auf den Marktplatz gehen
und hier drinnen sind, können
Sie nach
elektronischen Notizen suchen. Ich glaube, es nennt
sich elektronische Notizen. Und mal sehen, ob wir es hier finden
können. Vielleicht habe ich gerade nach elektronischen Notizen
gesucht. Und das ist eigentlich der Richtige. Wenn Sie also auf diese
elektronischen Notizen klicken, verwende ich tatsächlich und Sie können sehen, dass viele Schüler
tatsächlich eine Zwei benutzen. Dies ist der eine und Sie
können sehen, dass Sie
verschiedene Stile für
Ihre Blueprints auswählen können . Sie haben also verschiedene Stile. Sie können tatsächlich dunklere
Noten haben, wenn Sie möchten. Aber das ist die, die
ich verwende und es macht meine Leitungen hier elektronisch. Und ich denke, das ist
viel einfacher zu sortieren. Also denke ich,
dass dies alles ein
bisschen besser aussehen lässt, eigentlich einfacher anzusehen ist. Und Sie können hier sehen, dass
ich nicht einmal Umleitungsknoten erstellen muss . Dies wird es automatisch
für mich in unserem Projekt tun, aber die normalen kurvigen Linien, ich muss dafür
Umleitungsnotizen erstellen. Aber ich
muss dafür keine
Umleitungsnotizen erstellen , da
Sie sehen können, wenn ich ziehe, dass es
das automatisch für mich erledigt. So sehr coole Assets, die
Sie auf dem Marktplatz verwenden können. Sehr coole Sachen,
die sie gemacht haben. Also benutze ich das. Die zweite Sache ist die, die
ich verwende, ist diese namens, Mal sehen, oder es sind Kommentare zur
automatischen Größe. Diese Kommentare zur automatischen Größe
sind also auch sehr cool zu verwenden. Es wird automatisch die Kommentare
zu den Notizen formatiert, die Sie haben. So kannst du hier sehen, dass ich diese Knoten hier
habe, und wenn ich etwas ziehe, kannst
du es alle Größen sehen. Mein Kommentar hängt davon ab
, wohin ich das ziehe. Und wenn ich
zum Beispiel etwas mache , kann ich hier eine Zeichenfolge
ausdrucken. Sie können sehen, dass es es automatisch in
den Kommentar
einschließt. Also sehr cooles Zeug. Und das ist auch so, als
könntest du die Kommentare anpassen. Wenn ich hier etwas schreibe, schreiben
wir ein paar
Prints Strings in
dieses Projekt. Und wenn ich auf „Sehen“ klicke, habe ich es
jetzt angepasst. Wenn ich also klicke und
sehe, sieht man, dass es oben
und unten und an den Seiten viel mehr Platz hat . Das habe ich tatsächlich manuell gemacht. Und der Kommentar ist in der Mitte
geschrieben. Und auch ich passe die Größe automatisch auf 28 an, so. Du siehst also sehr cool. Und auch für die übliche Farbe können
Sie automatisch
auswählen, welche Farben. Also
verwende ich zum Beispiel für
dieses Projekt Blau, wenn es
clientseitig ist, ich verwende Rot, wenn es durch den Server
läuft und bezahlt, wenn es
sowohl den Server als auch die Clients läuft , für Beispiel ein Multicast. So können Sie
hier beispielsweise sehen, auch
ein durch
den Client läuft und durch den Server läuft. Es wird rot sein und wieder
durch den Kunden werfen, es wird
durch den blauen hier sein. Also alle Seiten Kommentare, sehr cool auch für
Ihr Projekt zu verwenden, nur um es organisierter zu gestalten. Und ja, ich benutze nicht
wirklich viel mehr. Normalerweise benutze ich einfach diese beiden. Sie können auch den automatischen Note-Arranger verwenden. Ich denke, es war ein bisschen
so, als hätte es mir nicht gefallen, also benutze ich es eigentlich nicht. Aber viele Leute, die ich denke
, benutzen es auch, eigentlich nicht viel,
eigentlich ein paar von ihnen. Aber ich denke, es hat
meine Notizen und Nüsse
so arrangiert , wie
ich wollte, das benutze ich eigentlich nicht. Und das Letzte, obwohl dies ein 2D-Kurs ist, das Letzte, was ich dir
hier zeigen
möchte , ultradynamischer Himmel. Wenn Sie also
vorhaben, ein 3D-Spiel zu erstellen, ist
dieses ein Lebensretter und Sie können sehen, dass viele
Leute es tatsächlich verwenden und es wird
dynamische Jungs
für Ihr Projekt schaffen . Auch hier können Sie
meine Seite, meine Kurse, ich mache auch 3D-Projekte,
3D-Kurse und die Blaupausen, die Sie hier in 2D verwendet haben, überprüfen. Das Gute daran,
2D-Spiele in Unreal
Engine zu erstellen , ist, dass Sie
jetzt viel besser in der
Verwendung von Blueprints sind als zuvor. Nun, diese Methoden die Sie
hier in einem 2D-Spiel gelernt haben, können
Sie sie auch
innerhalb eines 3D-Spiels verwenden . Obwohl all diese Blaupausen
jetzt in einem 2D-Spiel gemacht werden, ist
es in einem 3D-Spiel nicht wirklich
anders. Jetzt, da Sie Ihre
Übung in diesem 2D-Kurs hatten, können
Sie
das Gelernte
auch in unseren 3D-Kursen verwenden . Das ist also das Gute an Verwendung von Unreal Engine
und Blueprints. Der gesamte Code wird
natürlich verschwenden, wenn Sie plötzlich
zu 3D-Spielen wechseln möchten, da eine Zeitleiste eine Zeitleiste ist
und für
dasselbe in 3D
sowie für benutzerdefinierte Ereignisse verwendet wird sowie für benutzerdefinierte Ereignisse und bekomme den Standort der
Schauspielerin. müssen wir auch
in 3D machen. Das alles ist also in einem 3D-Spiel gleich.
116. Zukünftige Course: Jetzt sind wir
mit dem Kurs fertig. Ich hoffe, du hattest viel Spaß. Ich hatte viel Spaß beim
Erstellen dieses zu erstellen. Wenn Sie
diesen Kurs selbst verlängern möchten weitere Feinde hinzufügen möchten, können
Sie diese Website besuchen. Hier habe ich es hergeholt. Maple stand IN und du kannst hier
einfach mehr Monster erschaffen. Du kannst Mobs erstellen,
Pfade und
Charaktere erstellen und es kann
tatsächlich mehr Monster erschaffen. Sie können also sehen, dass wir
diese Tiere hinzugefügt haben und
jetzt haben wir es so
dynamisch gemacht , dass
Sie tatsächlich einfach zum Feind gehen und mit
der rechten Maustaste klicken
und einen neuen Feind erschaffen können. Und es wird
automatisch hinzugefügt. Denken Sie daran, hier
auf den Feind und
auch das Tierintervall zu klicken , alle Animationen, die Gesundheit den Namen und die
Erfahrung und so weiter. Und denken Sie auch daran, natürlich einen Drag
hinzuzufügen und den
Feind zu diesem Level hinzuzufügen. Obwohl wir mit diesem Kurs
fertig sind, werde
ich zukünftige
Updates für diesen Kurs vornehmen. Ich werde noch
viel mehr Dinge hinzufügen, viele RPGs Dinge. Zum Beispiel werden wir hinzufügen
Health Bar besagt, dass das System, vielleicht auch ein Skill-System. Wir werden ein Questsystem hinzufügen. Also viele andere Systeme , die wir diesem Spiel noch
hinzufügen können. Also werde ich diesen Kurs weiter
aktualisieren. Und wenn Sie sich erinnern möchten, können
Sie hier auf meine Seite gehen und einen Blick auf
meine anderen Kurse werfen. Ich versuche jeden
Monat oder alle anderthalb
Monate einen zu veröffentlichen . Werfen Sie einen Blick auf meine anderen Kurse. Und denken Sie daran, Sie können
immer zu meinem Discord gehen und mir
schreiben, wenn
Sie
einen Kurs wünschen , den Sie sehen möchten, oder wenn Sie Hilfe bei
diesem Kurs oder
anderen Kursen benötigen , können
Sie zu meinem
Diskurs und wir können uns unterhalten oder Sie können
mit all den anderen Leuten schreiben mit all den anderen Leuten , die tatsächlich an diesem Kurs
teilnehmen. Sie können mit ihnen
auf den Discord-Servern schreiben. Also eine sehr nette Community, die
wir da drin haben. Denken Sie auch daran, dass ich einen YouTube-Kanal
habe, sodass Sie auch zu meinem
YouTube-Kanal gehen können, wenn Sie drei Videos zu diesem
Thema
ansehen möchten . Also bin ich auch sehr aktiv. Sie fügen häufig
Videos hinzu, gehen Sie
also auch zu meinem YouTube
und sehen Sie, ob es etwas gibt, das Ihre Interessen wecken
wird. Also mit dem Gesagten,
danke für alles. Danke, dass du
mich unterstützt hast und ich hoffe, du hattest viel Spaß und wir
sehen uns im nächsten Kurs.