Willkommen zurück meine Spieleentwickler
zu einem weiteren sehr langen Video.
Aber in diesem ist es das wert.
Wie jedes Mal, wenn wir getroffen werden, brechen wir ab.
Wir können sehen, dass wir diesen Artikel haben.
Wir holen es nicht sofort auf,
aber nach einer gewissen Zeit, nicht nur das,
sondern jetzt, wenn wir den Feind und er stirbt,
fällt er irgendwann auch und Gegenstand.
Und wir haben offensichtlich nicht die Art und Weise repariert
, wie die Ebenen miteinander interagieren.
Aber ich denke, weil dieses Video so lang war,
hatten wir nicht viel Zeit.
Also ohne weiteres oder tun Lass uns
keine Zeit mehr verschwenden und lass uns loslegen.
Oh, Fall.
Jetzt haben wir den Gesundheitspickup funktioniert,
aber nicht sehr lustig, wenn
Sie die ganze Gesundheit um sich herum haben.
könntest du machen.
Sie könnten einfach ein paar Gesundheitsabholungen in Ihrer Welt festlegen
und
sie dann abholen, sobald Sie bestimmte Räume oder was auch immer gefunden haben
.
Aber ich denke, es ist viel besser, wenn man eine Art Mechaniker haben kann
, der die Gegenstände fallen
lässt und es Ihnen ermöglicht, sie abzuholen.
Wenn wir zum Beispiel das Zerbrechliche hier haben,
diese Urnen, wenn wir sie zerquetschen oder brechen,
dann haben wir eine Art
Gesundheitspickup oder wenn wir einen bestimmten Feind töten,
dann haben wir auch die Gesundheitspickup bekommen fiel ab.
Also lasst uns zuerst das machen,
ich gehe in die Prefabs, wo
wir haben, wo ist es?
Wo sind die Waffen,
Kugeln, Blut, Kugeln, Feind.
Anscheinend haben wir also nichts.
Oh, weißt du was?
Lassen Sie uns einen neuen Ordner für die Pickups erstellen.
Und dann werden wir die Gesundheitsabholung da drin fallen lassen.
Großartig. Jetzt haben wir das.
Das nächste, was wir tun wollen, ist
dass wir in die Skripte gehen werden.
Wir werden die Pickups finden
und wir werden ein neues C-Sharp-Skript erstellen
, das Item Drop genannt wird.
Warum machen wir das?
Zuallererst wollte ich das einfach für eine Sekunde schließen.
Was ich also tun wollte, ist, dass ich diesen Code sofort
hier in die Gesundheitspackup aufnehmen wollte oder ich meine, tut mir leid,
in das Zerbrechliche.
Wo sind sie? Oh, wir haben es gerade geschlossen
also wollte ich es sofort zum Zerbrechlichen hinzufügen.
Sobald wir kaputt gehen,
bekommen wir einen bestimmten Gegenstand.
Aber dann dachte ich,
was wäre, wenn ich wollte, dass einige Feinde Gegenstände fallen lassen
nicht viel effizient wären
, weil wir mehrere Dinge wollen.
Vielleicht wollen wir, um Gegenstände fallen zu lassen
, andere Verdienste,
vielleicht nicht nur das zerbrechliche,
vielleicht weiß ich nichts, was Gegenstände fallen lässt.
Ich dachte, es wäre besser, einfach ein Skript zu erstellen
, das der Item-Dropper ist, und es zu jedem Objekt hinzuzufügen
, das wir einen Gegenstand fallen lassen möchten
sobald er stirbt oder tötet oder was auch immer.
Okay, also lasst uns weitermachen und das machen.
Das erste Ding.
Zuerst werden wir
ein serialisiertes Feld erstellen, das sicherstellt,
dass wir die Möglichkeit haben zu
überprüfen, ob er Gegenstände fallen lässt, ob er
oder sie oder was auch immer Gegenstände fallen lässt.
Die zweite Variable, die ich erstellen möchte
, ist ein serialisiertes Feld,
das vom Typ Spielobjekt ist.
Und wir werden es zu einem Array machen und es wird die Elemente zu fallen sein
.
Jetzt fragen Sie sich vielleicht, dass wir nur einen Gegenstand fallen lassen müssen
, nämlich die Gesundheit.
Aber später erstellen wir eine Münze
und vielleicht möchten Sie sogar eine Art Leveling-Up-Systeme erstellen
oder etwas fallen lassen
, das genau wie wir es in Hades getan haben.
Also Artikel zum Ablegen,
wir haben es als Array.
Als Nächstes, was wir als serialisiertes Feld haben,
wird es vom Typ float
und es wird als „Items drop“ oder „Item Drop“ bezeichnet
.
Zufall.
Und wir setzen es auf 0,5.
Es ist also eine Chance von 5050.
Und warum wollen wir das haben?
Nun, wir wollen nicht, dass alle
unsere Zerbrechlichen oder alle
unsere Feinde diese Gegenstände fallen lassen.
Wir möchten also eine Chance von 5050 haben, einen Gegenstand zu bekommen.
Großartig.
Jetzt gehe ich
fort und entferne den Start und das Update.
Wir werden sie schaffen, wenn wir sie brauchen.
Und ich werde ein öffentliches ungültiges Drop-Item erstellen.
Und das wird einfach weitergehen und
eine zufällige Ganzzahl erstellen.
Und zuerst werden wir nach
ein paar Bedingungen suchen.
Der erste wird also zufällig sein.
Der Punktwert ist geringer als die Möglichkeit des Einzelteils zu sinken.
Und was ist ein zufälliger Punktwert, der den Mauszeiger darüber zeigt und
see gibt einen zufälligen Float zwischen 0, eins zurück.
Wenn wir zum Beispiel einen Nullpunkt bekommen,
denn es ist weniger als 0,5, wollen wir instanziieren.
Dies ist eine großartige Möglichkeit, um zu
vermeiden, dass das Ganze weniger als eins ist,
mehr als 0,5 oder wo immer uns dies
nur einen Zufallswert zwischen 01 gibt.
Wenn es größer ist, instanziieren wir.
Wenn nicht, dann wollen wir es.
Dann werden wir fortfahren
und eine zufällige Ganzzahl erstellen.
Also zufällige Artikelnummer und sie wird gleich dem zufälligen
Punktbereich und Bereich sein.
Und hier drin haben wir einen Bereich
zwischen 0 und den zu fallenden Elementen.
Punktlänge So ziemlich einfach, was wir hier drin machen.
Wir wissen das alles bereits
und dann werden wir fortfahren und die zu
fallenden Gegenstände instanziieren.
Und wir werden es als zufällige Artikelnummer haben.
Wir werden es auf die Transformationspunkt-Position und die Transformationsdrehung einstellen
.
Da sind wir los.
Also werde ich das speichern.
Ich werde gehen, oh,
und bevor wir das tun,
werde ich hier auch eine Bedingung schaffen
, die ich aus irgendeinem Grund völlig vergessen habe.
Ich werde sicherstellen, dass wir , wenn Gegenstände fallen
lassen, das alles tun werden.
Und fügen wir einfach ein paar
geschweifte Klammern hinzu, damit es so besser ist.
Ich mag es nicht, mehrere Zeilen unter einem einzigen Drop-Items zu haben
.
Okay, großartig.
Speichern Sie das damit nicht wieder in unserem Spiel.
Und lass uns in den zerbrechlichen Topf gehen.
Und das ist die ein bisschen geschlossen.
Und dann fügen wir hier einen Item Dropper hinzu.
Und wie Sie sehen können,
gibt es ein Problem.
Sie können sehen, dass wir die deserialisierten Felder nicht haben
und
Sie sehen, dass hier etwas erwartet wird,
das heißt, wir haben eines der nicht geschlossen,
okay, also los geht's.
Jetzt speichern wir das.
Jetzt sollten wir hier drin das Große sehen.
Also lasse ich Gegenstände, Gegenstände auf Tröpfchen fallen
, gib ihm einfach die Gesundheitsabholung.
Schließen wir das oder Lockdown
gehen tatsächlich in die Prefabs.
Wo ist es, wo ist es Abholungen und die Gesundheitsabholung.
Jetzt haben wir nur noch die Gesundheitsabholung.
Und nur zu Testzwecken setze ich die Elemente so ein,
dass die Chance auf 1 fallen.
Also lassen wir immer einen Artikel fallen, speichern Sie das.
Und jetzt ist das Letzte, worauf wir
achten wollen, dass
in wo sollte es in den Break Blasen sein?
Wenn wir hingehen, wo ist es?
Wo ist Burry?
2ls zerbrechlich.
Und hier drin werden wir prüfen,
nachdem wir sichergestellt haben, dass wir,
wo ist es das Objekt instanziieren.
Wir möchten auch weitermachen und prüfen, ob die
Komponente und den Artikel abrufen.
Und wir werden prüfen und hoffen, dass wir
hier eine Massenkleinigkeit haben, die es tun wird,
weil es ein serialisiertes Feld
Lassen Sie uns einfach eine Rendite erstellen.
Public bool ist also Item,
Item Dropper.
Und wir werden einfach hierher zurückkehren,
Wahr oder was auch immer es ist, der Drop-Item.
Dies wird also wahr zurückgeben, wenn ein Objekt fallen lässt, damit wir
zurückgehen können und das Wort war es,
okay, Der zerbrechliche Punkt ist Artikeltropfer.
Für diesen Item Dropper lösen wir,
sobald der Spieler hineinstürzt,
sobald der Spieler hineinstürzt, die Pause aus,
wir instanziieren die Teile und
wir prüfen, ob er ein Item-Dropper ist,
dann werden wir wieder darauf zugreifen
der Dropper „Komponentenelement abrufen“, Element ablegen.
Los geht's, heb dir das auf.
Und weißt du was, ich dachte, dass diese wenn Aussage hier vielleicht
nicht so notwendig ist.
Also was lassen wir es einfach entfernen.
Und jetzt erinnere ich mich, warum ich es vergessen habe,
weil es dort nicht nötig war.
Also wieder hier drin,
außer dass alles gut funktionieren sollte.
Das einzige, was mich immer noch stört , ist
, dass wenn wir versuchen, die Komponente zu bekommen,
aber sie nicht da ist,
also haben wir sie nicht zu einer Art zerbrechlichem Topf hinzugefügt.
Vielleicht wird das ein Problem verursachen, wenn dies der Fall ist. Der beste Weg,
dies zu beheben, besteht darin, eine zusätzliche If-Bedingung zu
erstellen,
eine zusätzliche Schutzschicht
wenn der Dropper Komponentenartikel abrufen,
und es ist anders als null,
bedeutet das, dass wir diesen Artikel genau hier haben.
Dann können wir fortfahren und nach dem Artikel Dropper suchen.
Dies gibt uns also eine zusätzliche Schutzschicht
, wenn wir den Komponentenelement-Dropper nicht haben,
wenn er gleich null ist,
dann werden wir prüfen, ob wir keine Artikel fallen lassen können,
und dann werden wir tatsächlich eine Artikel.
Also speichere dir das jetzt noch einmal zurück, mal sehen.
Nun ist das so, ehrlich gesagt,
ich mag das nicht sehr, weil wir
wissen sollten, wie wir dieses Spiel kreieren, Bu,
aber das ist ein Worst-Case-Szenario.
Also führe das Spiel aus.
Und jetzt, wenn wir versuchen, eine Rolle zu brechen,
lass mich einfach eine Zerstörung bekommen.
Und wenn wir dann versuchen, den Teil zu brechen
, den Sie sehen, gehen wir los.
Wir haben es zerstört.
Und Sie können sehen, dass sich unsere Gesundheit gerade
von 500 auf 510 bewegt.
Aber es gibt ein Problem.
Hast du es gesehen?
Hast du gesehen, dass der Artikel fallen gelassen wurde?
Nein, das hast du nicht, aber die Gesundheit hat zugenommen.
Was ist also das Problem?
Nun, das Problem hier ist, dass es extrem
schnell ist und wir nicht wollen, dass dies sofort geschieht.
Wir möchten tatsächlich den Artikel sehen, den wir fallen gelassen haben
, bevor wir ihn sofort abholen.
Also werde ich es dir als Herausforderung ausstellen.
Und Ihre Herausforderung besteht darin, die Zeit zu verzögern
bis wir einen Artikel abholen können.
Erstellen Sie also zuerst ein neues Skript.
Heb die Ebene erneut auf.
Warum ist das? Dies ist
ein erstaunliches Video, wie Sie Ihr Spiel strukturieren.
Da wir den Layer aufnehmen,
können wir
die Zeit verzögern, bevor wir einen Artikel abholen.
Und wir möchten diese Verzögerung nicht nur für das Gesundheitsskript hinzufügen
und müssen es dann jedes Mal und auf alle Münzen, Power-Ups und so weiter kopieren
jedes Mal und auf alle Münzen,
.
Was wir also tun werden, ist einfach ein neues Skript für die Abholung der Ebene zu erstellen
und zu jedem einzelnen Gegenstand hinzuzufügen
, den wir aufnehmen möchten
Dies ist viel einfacher und gesünder, wenn es um Spieleentwicklung und Spieldesign geht
-Struktur und so weiter.
Deshalb erstellen wir ein neues Skript.
Dann erstellen Sie einen Float
für die Zeit, bevor wir abholen können
Sie müssen eine boolesche Variable erstellen, die prüft,
ob wir den Artikel tatsächlich abholen können oder nicht.
Erstellen Sie ein Kernteam, das nach einiger Zeit,
nach einer gewissen Zeit, die offensichtlich die hier neu erstellte Float-Variable ist,
offensichtlich die hier neu erstellte Float-Variable
es uns ermöglicht, den Gegenstand abzuholen.
Und schließlich, wo sollten wir sein?
Sollen wir diese Beschichtung nennen?
Wo sollen wir die Schulroutine nennen?
Also offensichtlich gut,
dass ich nicht gut programmieren kann, weil ich schrecklich in der Grammatik und allem anderen bin
,
weißt du, was ist der Sinn des letzten Satzes?
Pausiere das Video jetzt und gehe zur Herausforderung.
Okay, willkommen zurück.
Eine Sache, die ich tun wollte, ist
ich in die Gesundheitsabholung gehen möchte.
Nein, nicht der Gesundheitsabnehmer, der zerbrechliche Teil.
Und ich werde die Änderungen auf alle anderen Teile anwenden
, aber stellen Sie sicher,
dass Sie beim Hinzufügen eines Pots sicherstellen,
dass Sie
überprüfen, ob ein Artikel fallen lässt oder nicht
und Sie müssen sich ändern Die Gegenstände lassen offensichtlich die Chance fallen.
Und Elektron, natürlich werden wir das ändern.
Sie also immer daran, wenn Sie neue Bots hinzufügen.
Und dann müssen wir in den Raum gehen,
wo ist es der Raum, die Feinde.
Wir haben ein paar Feinde.
Lassen Sie uns einfach diesen überprüfen und ihm einen Artikel-Dropper hinzufügen.
Da sind wir los.
Also lässt er einen Gegenstand fallen.
Was ist der Gegenstand, den er fallen lässt?
Es wird sein Deshalb sperren wir es immer ab.
Dann fügen wir den Artikel hinzu, der es auf 11 gesetzt hat.
Sollten wir einen Artikel fallen lassen?
Gehen wir hier in den NMI-Controller.
Wo stirbt er?
Beschädige den Feind, wenn die Gesundheit kleiner als 0 ist,
instanziiere die Stroh-Spielobjekte.
Also der Deaf Splatter.
Wir werden auch hier einchecken, ob die Komponente, was jetzt?
Während das Zerbrechliche, kopieren wir diesen.
Und dann haben wir einfach hier eingeklebt.
Das ist also redundanter Code.
Aber ich lasse es wegen all der anderen effizienten Dinge, die wir geschaffen haben, rutschen
.
Also prüfen wir, ob wir einen Artikel-Dropper haben,
dann prüfen wir, ob er ein Pipette ist,
und dann legen wir den Gegenstand fallen.
Versuchen wir also, dies an dem Skelettfeind zu testen
, der die Änderungen anwendet.
Jetzt sollten alle Feinde das Skript haben
, um das Spiel auszuführen.
Und ich weiß, dass dies überhaupt nicht Teil der Herausforderung war,
aber ich möchte es nur testen, damit wir die Kugeln
endlich stirbt, und wir können einen Gegenstand aufheben
, der sieht, ob es funktioniert.
Ich verstehe es.
Ich hole den Artikel ab. Exzellent.
Jetzt ist die nächste Sache die Verzögerung,
was die eigentliche Herausforderung ist.
Also lasst uns ins gehen, ich weiß,
dass dies eine Randnotiz war,
aber vielleicht haben Sie vielleicht nicht
genau gewusst, was Sie in diesem Fall tun sollen
. Darüber machen Sie sich keine Sorgen.
Gehen wir in die Drehbücher ein.
Die Pickups, und klicken Sie mit der rechten Maustaste hier,
erstellen ein neues C Sharp-Skript,
das der PEC sein wird.
Heb auf, das große,
oops, Heb die Ebene auf, drücke Enter.
Warten Sie, bis dies kompiliert ist, und doppelklicken Sie hier rein
Doppelklicken Sie hier rein.
Und mal sehen, was wir tun werden.
Zunächst werden wir das serialisierte Feld für den Float erstellen
, das
ist die Zeit vor der Abholung.
Und stellen wir es einfach auf etwa 0,5 Sekunden ein.
Dann werden wir einen privaten Bool erstellen
abgeholt werden kann.
Speichern Sie das jetzt und fangen Sie an.
Wir werden sicherstellen, dass dies als falsch aufgenommen werden kann
.
Und dann werden wir das Coubertin Und hier kreieren ,
der der Augenzähler sein wird.
Und es wird Pick-up genannt, cool down.
Ja, klar, heb ab, cool down.
Und dann werden wir hier drin nachgeben, zurückkehren, neu.
Warte vier Sekunden.
Und ich bin mir ziemlich sicher zu diesem Zeitpunkt, wissen Sie,
Co-Routinen so gut, dass Sie mich jedes Mal langweilen
, wenn Sie sagen, dass die Rendite Sie für Gewichtssekunden zurückgibt.
Du sagst wahrscheinlich Michael,
wir wissen bereits, wie das geht.
Bitte hör auf.
Nee.
Wir werden es lernen.
Er hat Gantt abgeholt wird, ist gleich wieder wahr.
Spar dir das auf.
Und jetzt gehen wir in den Item Dropper.
Und es tut mir leid, ich meine, die Gesundheitsabholung.
Und hier drin werden wir
prüfen , ob es abgeholt wurde.
Und wir werden es auch überprüfen.
Und wenn die Get-Komponente,
die aufgenommene, die Ebene,
das wie soll sie heißen?
Wo ist es?
Kann abgeholt werden? Lass uns weitermachen und das zurückgeben.
So öffentlich boolean, kann es abgeholt werden.
Und wir werden einfach zurückkehren.
Kann variabel abgeholt werden.
Okay, kein sehr kreativer Name für diesen, aber es funktioniert.
Und hier ist ein Problem, dass die
Typvektordefinition aufgegriffen werden kann.
Okay?
Kann also abgeholt werden.
Klar, sagen wir mal, hat eine Methode genannt.
Also glaube ich, dass es nur wegen des Namens liegt.
Sie können die Variable also nicht so benennen, wie Sie
die gewünschte Methode benennen.
Wir nennen es also einfach Methode
weil wir die Phantasie einer kleinen Fruchtfliege haben
und dann Methode abgeholt werden können.
Und das sollte den Trick machen.
Nun war das Letzte und der letzte Teil
dieser Herausforderung, wo nennen wir Colton?
Ich hoffe, Sie haben darüber nachgedacht und ich hoffe, dass
es sofort angerufen werden sollte und beginnen sollte.
Also am Anfang beginnen wir mit der Co-Routine.
Das kann sein, Nein, ich meine,
abholen, abkühlen,
abkühlen, abkühlen. Da sind wir los.
Also warum und fange an?
Weil wir das Element instanziieren.
Sobald wir den Gegenstand instanziieren,
hat er die Tonabnehmer-D-Schicht,
wir starten sofort den Colton.
Also zurück in unserem Spiel.
Mal sehen wir hier drin die Ebene.
Heb die Ebene auf.
Wie viele, wie lange wartet es?
Und ich werde die Änderungen auf alle anwenden.
Jetzt, wenn wir das Spiel laufen,
sollten wir sehen, dass wir gehen, sobald wir
die Break Bubbles getroffen haben.
Wir haben die Bremsschrauben getroffen.
Wir holen den Artikel nicht sofort ab.
Wir sehen, dass es fallen gelassen wird.
Da sind wir los.
Jep. Du siehst gerade, dass es immer noch da ist.
Wir haben es nicht abgeholt, aber jetzt können wir es,
lasst uns etwas anderes versuchen.
Lassen Sie uns die Verzögerung auf etwa drei Sekunden hinzufügen
und sehen, ob es funktioniert.
Im wirklichen Leben.
Wir werden getroffen.
Wir werden das zerstören und versuchen, es aufzuheben.
Okay, das hat also ziemlich schnell funktioniert
und ich frage mich, was das Problem hier ist.
Oh, okay, willkommen zurück.
Der größte Fehler, der jemals gemacht wurde, dass
ich diesen Gesundheitspickup auf 10 geändert habe,
aber das eigentliche Prefab hat sich nicht geändert.
Wenden wir also die Änderungen an.
Ich habe mich gefragt, dass alles reibungslos funktioniert,
aber aus irgendeinem Grund funktionierte das nicht.
Also dort gehen wir mit dem Steroid und jetzt haben wir 10,
10 Sekunden bevor wir es tatsächlich abholen können,
aber wir werden es auf etwa 0,5 einstellen. Spar dir das auf.
Ich hoffe es gefällt dir.
Ich hoffe, Ihnen haben all die verschiedenen Mechaniken und kleinen Anpassungssachen gefallen
all die verschiedenen Mechaniken
und das
Hinzufügen und Entfernen und Sicherstellen
, dass wir verschiedene Dinge, verschiedene Gegenstände anwenden können.
Ich weiß also, dass das ein langes Video war.
Danke für Ihre Aufmerksamkeit.
Vielen Dank, dass Sie alle Ihre Dateien jedes Mal inszeniert
haben und alle Fortschritte
gemacht haben, die Sie erzielt haben.
Ich danke Ihnen auch für die widerstandsfähige,
erstaunliche tolle Rezension, die Sie mir hinterlassen haben
und wir sehen uns im nächsten Video.