Willkommen zurück meine Spieleentwickler zu einem brandneuen Video.
Und in diesem Video,
wenn wir unser Spiel ausführen,
wenn wir auf den Feind klicken,
werden Sie feststellen, dass er hier eine zusätzliche Variable hat,
nämlich die feindliche Gesundheit und Phi schießt ihn mit ein paar Kugeln.
Beachten Sie, wie sich sein Gesundheitszustand von 100 auf 40 verschlechtert.
Und wenn ich ihn immer wieder von 40 auf 0 erschieße und er verschwindet, weil er tot ist.
Also werden wir in diesem Video eine Menge Dinge lernen.
Zieh deine Denkkappen an und lass uns anfangen.
Oh, okay, jetzt ist es an der Zeit, unsere Feinde mit der Methode zu beschädigen.
Das erste, was wir tun werden, ist, dass wir eine Möglichkeit schaffen
zu erhöhen oder die Gesundheit von unserem Feind zu entfernen.
Also gehe ich in den feindlichen Controller.
Und hier, Lasst uns Visual Studio öffnen.
Und ich werde eine ganzzahlige Variable erstellen, die die Gesundheit des Feindes darstellt.
Warum ist es eine Ganzzahl?
Nun, weil wir die Dinge einfach halten wollen.
Wir wollen nicht, dass es ein Schwimmer wird.
Also füge ich es hier unter der Geschwindigkeit hinzu.
Also erstellen wir ein serialisiertes Feld, das vom Typ Integer sein wird.
Und es wird „Gesundheit“ genannt.
Und ich werde es am Anfang auf 100 einstellen,
also haben wir nie die Gesundheit bei 0.
Ich schaue zurück in den Inspektor und sehe, wie das aussieht.
Und sie jetzt, okay, großartig.
Jetzt können Sie sehen, dass ich hier die Möglichkeit habe, die Gesundheit unseres Feindes zu verändern.
Nun, wie werden wir sicherstellen, dass wir jedes Mal, wenn der Feind getroffen wird,
ein Gesundheitsgesetz entfernen.
Dafür werden wir eine Methode erstellen. Was sind Methoden?
Nun, du hast schon gesehen, wie ich Methoden erstelle.
Das Update ist eine Methode.
Wir beginnen als Methode und auch das Gizmo wählen als Methode aus.
Aber lassen Sie uns etwas tiefer in die tatsächliche Struktur einer Methode eintauchen und sehen, wie wir sie verwenden.
Lassen Sie mich also meinen Laser aufsetzen,
und das ist die Methodenstruktur.
Es ähnelt also der Art und Weise, wie wir Variablen erstellen, da es eine Zugänglichkeit hat.
Also ein Zugriffstyp, was ist das?
Ist es ein Privat, ein Publikum?
Wir können es nicht zu einem serialisierten Feld machen,
aber wir können entweder ein öffentliches Feld erstellen,
was bedeutet, dass wir von überall in unseren Skripten und in anderen Skripten auf diese Methode zugreifen können
.
Wenn es privat ist, können wir nur innerhalb der Klasse zugreifen, in der wir verwenden.
Dann haben wir den Rückgabetyp.
Zum Beispiel gibt void zurück, nichts.
Was ist ein Rückgabetyp?
Während wir den Kurs durchlaufen,
werden Sie alle verschiedenen Rückgabetypen verstehen.
Dies bedeutet jedoch, dass wir tatsächlich einen Wert von dieser Methode zurückgeben können.
Wenn es nichts zurückgibt, bedeutet das,
dass es ungültig ist.
Lassen Sie mich Ihnen zum Beispiel hier drin zeigen.
Dies ist eine Lücke, da wir keinen Wert zurückgeben.
Wir erwarten nicht, dass später ein Wert von dieser Methode zurückgegeben wird
, wenn wir eine Methode haben, die etwas zurückgibt
Vielleicht werde ich darauf hinweisen, dass Sie darauf hinweisen.
Als Nächstes haben wir den Methodennamen.
Wenn Sie also eine Methode benennen möchten, müssen Sie sie normalerweise
nach dem benennen, was diese Methode tatsächlich tut.
Und Sie können feststellen, wie wir den Namen einer Methode erstellen.
Im Gegensatz zu den Variablen muss das erste Wort immer in der unteren Klasse sein,
oder der erste Buchstabe des ersten Wortes muss niedriger sein.
In einem Methodennamen
müssen alle Wörter innerhalb des Methodennamens groß geschrieben werden.
Sie können also sehen, dass die Geschwindigkeit hinzugefügt wird,
also ist diese Methode eine private Methode,
daher verwenden wir sie nur in einer Klassenlücke.
Es gibt nichts zurück und sein Name fügt Geschwindigkeit hinzu.
Das bedeutet, dass es einigen Arten von Objekten Geschwindigkeit verleiht.
Und was sind die Klammern am Ende?
Während diese als Parameter bezeichnet werden, bedeutet der
Parameter, dass wir einen bestimmten Wert an diese Methode senden können.
Und es kann es verwenden, um Berechnungen oder alles, was es will, durchzuführen.
Wir werden zeigen, wie das alles in der Methode funktioniert, die unseren Feinden schaden wird.
Also genug reden, lass uns anfangen.
Ich werde Visual Studio öffnen und hier,
und ich werde eine Methode innerhalb des feindlichen Controllers erstellen.
Ich scrolle auf der Erde nach unten, das Update.
Und hier drin werde ich eine Methode schaffen, um den Feind zu beschädigen.
Erstes, was muss ich sein?
Muss es ein Privat sein?
Also kann ich es nur hier und den feindlichen Controller benutzen,
oder muss es öffentlich sein?
Das bedeutet, dass ich von überall darauf zugreifen kann.
Nun, höchstwahrscheinlich werde ich es brauchen, um öffentlich zu sein, weil
ich möchte, dass die Kugeln den Feind beschädigen, wenn sie den Feind treffen.
Was wird eine öffentliche Leere sein,
und ich nenne es den Schadensfeind.
Und es ist eine Leere, weil wir nichts vom Schadensfeind zurückgeben müssen.
Alles, was wir tun müssen, ist ein bisschen Gesundheit zu entfernen, die wir bereits haben.
Und hier, also die feindliche Gesundheit.
Und lass uns das ändern oder nein,
ich zeige dir einen sehr coolen Trick und bleib einfach ein bisschen.
Wie auch immer, lassen Sie uns mit unserem Hauptaugenmerk fortfahren.
Ich möchte ihnen auch einen Parameter vom Typ integer senden ,
der der Schaden sein wird.
Das können sie.
Was ich jetzt tun kann, ist, dass ich auf die Gesundheit zugreifen kann und davon entfernen kann.
Entschuldigung, der entstandene Schaden.
Also was passiert jetzt?
Du weißt bereits, was das Minuszeichen bedeutet.
Das bedeutet, dass wir den erlittenen Schaden von der Gesundheit entfernen.
Und schließlich müssen wir sicherstellen, dass die Gesundheit kleiner oder gleich 0 ist.
Das bedeutet, dass Sie hier einfach ein bisschen Leerzeichen hinzufügen.
Das bedeutet, dass unser Feind gestorben ist und ich das Spielobjekt zerstören möchte.
Okay, schauen wir uns das ein anderes Mal an.
Und bevor wir das tun, denke ich, dass der Name Health einer Variablen nicht so spezifisch ist.
Ich denke, wir müssen es in Gesundheit von Feinden ändern.
Was kann ich hier machen?
Ich kann den Namen hier in feindliche Gesundheit ändern.
Okay, und dann scrolle hier runter und ändere diese beiden genau hier.
Aber das ist ein bisschen umständlich,
besonders wenn wir in unserem Code vielleicht 10 Mal Gesundheit verwendet haben.
Wie können wir das vermeiden?
Doppelklicken Sie einfach auf Gesundheit,
klicken Sie auf Control R, R
und jetzt werden Sie sehen, dass Sie dies hinzufügen können.
Also nenne ich das die feindliche Gesundheit.
Ich drücke Enter.
Und wenn ich nach unten scrolle,
wirst du sehen, dass sich die feindliche Gesundheit verändert hat.
also zur Erinnerung,
zur Steuerung oder zum zweimaligen Klicken
Steuerung R gedrückt.
Und Sie können den Variablennamen ändern und ihn überall und im Spiel ändern.
Das nächste, was wir tun werden, ist, dass wir diese Methode tatsächlich aufrufen werden.
Und woher nennen wir es?
Wir müssen zum Bullet-Controller gehen.
Und lass mich einfach den Bullet-Controller hier irgendwo finden.
Wo ist es in den Drehbüchern?
In den Kugeln, im Gesetz schrecklich bei Controller.
Und hier drin, wenn wir etwas auslösen, damit wir ein Objekt treffen
, was wir tun
werden, lassen wir mich diese Zeile einfach von hier entfernen.
Also instanziieren wir die Auswirkungen und wir werden auf die Kollision zugreifen.
Was ist die Kollision genau hier?
Wie Sie sehen können, ist dies ein Parameter, der an die Methode bei Trigger Enter gesendet wird.
Was ist die Kollision? Es ist das Objekt, mit dem wir gerade kollidiert haben.
Wenn wir zum Beispiel auf eine Wand stoßen,
wäre die Kollision die Wand, die wir getroffen haben.
Und in unserem Fall
wird die Kollision der Feind sein, den wir getroffen haben.
Und ich hole die Komponente, entschuldigen Sie mich.
Also bekomme ich die Komponente, die sich bei dieser Kollision befindet
, und es wird der feindliche Controller sein.
Und im feindlichen Controller,
weil ich diese Methode hier öffentlich gemacht habe, kann ich direkt hier darauf zugreifen, was der Schaden und das Amin
kann ich direkt hier darauf zugreifen,
ist.
Und was soll ich diesem Schadensfeind schicken?
Sie können jetzt sehen,
keine Argumente gibt,
also müssen wir den erlittenen Schaden anrichten.
Das wirst du genau hier bemerken.
Also schicke ich ihm den Schadensbetrag.
Aber wir haben keinen Schadensbetrag verursacht.
Also lasst uns weitermachen und es hier drin erstellen.
Das Bullet wird also auch eine Variable haben, die eine ganze Zahl sein wird.
Und das wird einfach das kopieren,
was der Schadensbetrag sein wird, und ich setze es auf etwa 10 ein.
Also was passiert hier drin?
Jedes Mal, wenn die Kugel mit etwas kollidiert,
erhalten wir die Informationen über diese Kollision.
Wir bekommen die Kollision,
wir bekommen die Komponente des gegnerischen Controllers
und greifen dort auf die Schadensfeind-Methode zu.
Wir haben ihm den Schadensbetrag geschickt.
Wir gehen zum feindlichen Controller.
Es ist öffentlich, alles, was wir die feindliche Gesundheit bekommen,
wir entfernen die beschädigten Abgenommenen.
Der erlittene Schaden ist offensichtlich der Schadensbetrag genau hier.
Und dann prüfen wir, ob die Gesundheit kleiner oder gleich 0 ist.
Wenn ja, zerstören wir das Spielobjekt, weil der Feind es getan hat.
Also. Lasst uns das alles retten.
Und lasst uns weitermachen und es in Unity testen.
Also klicke ich auf den Feind und sorge dafür,
dass wir die feindliche Gesundheit sehen.
Ich führe den Code aus.
Ich versuche unseren Feind zu erschießen.
Also habe ich es gezeigt, bis die Kugeln Dritter werden.
Lass uns die feindliche Gesundheit sehen.
Es war erledigt.
Da gehst du. Es wurde 90.
Lassen Sie mich zweimal versuchen, ihn zu erschießen, jetzt sollte seine Gesundheit genau hier 70 werden.
Behalte die 80, 70, los geht's.
Der Feind wird beschädigt.
Und wenn ich ihn weiter mit all meinen Kugeln erschieße,
wirst du feststellen, dass 70 0 wird und der Feind verschwindet.
Aber beachte, was gerade passiert.
Zuallererst flogen unsere Kugeln überall weiter.
Warum ist das passiert?
Lass mich rauszoomen.
Sie können sehen, dass die Kugeln nicht mit der Wand interagierten.
Sie wurden nicht zerstört.
Und wir haben genau hier einen Fehler.
Und lass mich das Konsolenfenster öffnen, damit wir sehen können, was das Problem ist. Da gehst du.
Sie können sehen, dass wir Fehler für die vier Kugeln hier haben
, die mit der Wand interagiert haben.
Und doppelklicken wir auf diesen Pfeil und sehen, was passiert ist.
Oh, also kannst du sehen, dass es uns zu der Zeile bringt, dass wir einen Fehler haben
und lass mich dir das noch einmal zeigen. Doppelklicken.
Wir sind auf dieser Linie.
Du siehst genau hier.
Und weil diese Linie nicht richtig ausgeführt wurde, wurde
die Zerstörung nicht richtig lösbar ausgeführt, sie ist weiter geflogen.
Dies ist nur eine Randnotiz.
Wie auch immer, was ist das Problem?
Das Problem ist, dass wir auf die Kollision zugreifen, oder?
Die Kollision sollte der Feind sein, da wir versuchen, auf den NMI-Controller zuzugreifen.
Aber das Problem ist, dass wir gerade an eine Wand gestoßen
sind und auf dieser Wand nicht das feindliche Skript drauf ist. Interessant.
Wie werden wir das also retten?
Nun, zum Glück haben wir ein sehr, sehr mächtiges Werkzeug.
Lass mich das genau hier reden.
Lassen Sie mich all diese bösen Fehler klären.
Wir haben ein extrem leistungsfähiges Tool, über das wir noch nicht gesprochen haben.
Wenn ich in die Editierebenen gehe, haben wir, wie wir gesehen
haben, die Ebenen der Physik-Layer,
wir haben die Sortierebenen.
Wir haben dieses Tag auch genau hier.
Und was wir tun können,
wir können den Feind markieren,
war ein feindliches Etikett.
Und wann immer wir versuchen, nach dem gegnerischen Controller zu suchen, können wir vorher eine Bedingung schaffen, die
überprüft, ob das Etikett der Kollision ein Feind ist,
dann können wir weitermachen und ihn beschädigen.
Wenn es kein Feind ist oder das Objekt, das wir passen, nicht als Feind gekennzeichnet ist,
können wir nicht auf den feindlichen Controller zugreifen.
Also lass mich wieder hier reingehen.
Lass mich dir zeigen, wo wir Dolch erschaffen können.
Wir können einfach auf diesen Plus-Button klicken,
das Tag benennen, was immer wir wollen,
speichern Sie das, gehen Sie zurück zum Feind.
Und Sie können genau hier sehen, dass wir ihn mit einem Tag markieren können, das wir gerade erstellt haben.
Lass mich zurückgehen.
Lösche den Stapel genau hier.
Jep. Okay.
Auch weil der Feind markiert wurde, kann der nicht markiert werden.
Ich weiß nicht, warum ich es getan habe.
Also los gehst du. Wird beim nächsten Laden des Projekts aus dieser Liste entfernt.
Okay, das war also ein großer Fehler,
aber keine Sorge darüber, denn jetzt ist es Zeit für
eine Herausforderung und deine Herausforderung besteht darin, unsere Feinde zu markieren.
also zuerst ein feindliches Tag,
Erstelle also zuerst ein feindliches Tag, genau wie ich es dir gezeigt habe.
Stellen Sie sicher, dass Sie den Feind im feindlichen Tag markieren.
Bevor Sie den gegnerischen Controller erhalten,
prüfen Sie nach einer Bedingung, ob das Kollisionsobjekt,
damit Sie bereits wissen, was das Kollisionsobjekt ist,
das feindliche Tag auf sich hat.
Und ich empfehle Ihnen, Google zu besuchen,
Sie finden einen Weg, wie wir nach dem Tag suchen und das Tag vergleichen können.
Wenn du alleine weitermachen willst, mach es weiter.
Wenn nicht, gebe ich dir einen kleinen Hinweis.
Sie können etwas namens the.com DAG verwenden, es in Unity Dogs
anschauen,
Ihre Informationen verwenden, Ihre eigenen Recherchen durchführen.
Es gibt eine andere Möglichkeit, nach dem Tag zu suchen.
Ich empfehle dir, es zu finden.
Pausieren Sie das Video jetzt und gehen Sie einkaufen.
Hey, willkommen zurück.
Wie bist du damit zurecht gekommen?
Dies ist also die Einheit der Dokumentationen, component.com, DAG-Deklaration.
Es gibt einen Bool zurück,
ob es wahr ist oder nicht oder kein öffentlicher Bool.
Auch das Vergleichs-Tag ist ein Bool und wir werden
es in unserer if-Anweisung verwenden, da eine Bedingung in der if-Anweisung, wie wir wissen,
eine Bedingung in der if-Anweisung wahr oder falsch ist.
So können wir auch sehen, wie es verwendet wird und es im Trigger Enter verwendet wird,
wie praktisch für uns ist.
Also benutzen wir das andere,
sie nannten es anders,
wir haben es als Kollision.
Es ist das Gleiche, darüber machen Sie sich keine Sorgen.
Mal sehen, wie wir hier drin damit umgehen können.
Bevor wir also nach einer Kollision suchen,
habe ich hier einen Tab hinzugefügt.
Ich werde sehen, ob die Kollision, die wir gerade getroffen haben, ein Feind ist.
Und bevor wir das tun,
müssen wir diesen Typ schaffen, der der Feind ist. Drücken Sie Enter.
Also stelle ich sicher, dass wir es richtig schreiben.
Also Feind, und ich werde unseren Feind als Feind markieren.
Also jetzt hier drin,
wenn es ein Feind ist,
dann werden wir die Kollision und weitere raffinierte Tricks machen
Dieses Video ist voller raffinierter Tricks.
Wenn Sie nur eine Zeile unter der if-Bedingung haben,
müssen Sie diese Klammern nicht direkt hier hinzufügen.
Wenn Sie also nur eine Zeile haben,
müssen Sie die Klammern nicht hinzufügen, wenn ich eine weitere Zeile hinzufüge.
Zum Beispiel ist der Zerstörer nicht Teil der if-Bedingung.
Selbst wenn ich es nehme und es genau hierher lege,
wird es immer noch nicht Teil der Bedingung sein.
Und wenn Sie davon etwas verwirrt sind, machen Sie sich keine Sorgen.
Sie können Ihre eigenen Klammern hinzufügen.
Dies ist nur ein kleiner Test.
Sie können hier sogar einen Kommentar hinzufügen, um zu sagen, dass dies passiert.
Also werde ich das jetzt speichern.
Und nur wenn die Kollision ein gegnerischer Tag darauf ist.
Nun, wir rufen den feindlichen Controller an und geben ihn ihm.
Testen wir das mal.
Ich laufe das Spiel und fange an, die Wände zu schießen.
Und da gehst du, du kannst sehen, dass wir keine Fehler haben.
Wenn ich den Feind erschieße ,
sehe ich mir den Schaden an, den der Feind erlitten hat.
Da gehst du. Man sieht, dass es bei 40 ist.
Ich werde ihn noch dreimal erschießen,
also wird er 30, 20, 10.
Und schließlich werde ich ihn zum letzten Mal erschießen und er wird fehlerfrei zerstört.
Ich hoffe, es gefällt Ihnen,
ich hoffe, Sie begehen alle Änderungen, die wir vornehmen.
Es ist sehr wichtig.
Manchmal mache ich das außerhalb des Bereichs des Videos.
Und damit hoffe ich, dass es Ihnen gefällt.
Wenn Ihnen dieser Kurs gefällt,
hinterlassen Sie mir bitte eine Bewertung.
Es hilft mir sehr.
Es lässt alle wissen, dass dies ein guter Kurs ist.
Stellen Sie also sicher, dass Sie mir eine Bewertung hinterlassen.
Vielen Dank fürs Zuschauen.
Wir sehen uns im nächsten Video, in dem wir die Tiefe unserer Feinde ein bisschen brutaler machen werden
.
Also sehe ich dich dann.