Transkripte
1. Willkommen! : Willkommen zum Kurs Scratch Saga ,
einer Reise in die
Spieleentwicklung. Ich bin Brandon und werde
dich durch diesen praxisnahen Kurs führen,
in dem wir die Welt
der
Spieleentwicklung mit Scratch erkunden werden Welt
der
Spieleentwicklung mit Scratch Egal, ob Sie neu im
Programmieren sind oder
neugierig darauf sind neugierig darauf Ihre eigenen Spiele zu entwickeln, Sie sind
an der richtigen Stelle Gemeinsam werden wir
drei voll funktionsfähige Spiele entwickeln, von denen
jedes darauf ausgelegt ist, dir
die grundlegenden Fähigkeiten des
Spieledesigns beizubringen und
dir gleichzeitig zu ermöglichen , deiner Kreativität freien Lauf zu Jedes Spiel wird
auf dem letzten aufbauen und nach und
nach
komplexere Konzepte und
Techniken einführen, nach
komplexere Konzepte und
Techniken einführen um dir zu helfen,
ein selbstbewusster, kreativer
Spieleentwickler zu ein selbstbewusster, kreativer
Spieleentwickler Scratch ist eine völlig
kostenlose,
anfängerfreundliche Programmierplattform, die
vom MIT entwickelt wurde, um das Erlernen des Programmierens
sowohl zugänglich als auch unterhaltsam zu
machen. Es ist vollständig visuell,
was bedeutet, dass Sie
keine
komplexen Codezeilen eingeben müssen. Stattdessen verwendet Scratch Blöcke,
die du ziehen und ablegen kannst Jeder Block
steht für eine Aktion oder ein Verhalten, das
dein Spiel verwenden kann. Stellen Sie sich das wie das Bauen
mit digitalen Legosteinen vor. Nur anstatt Türme zu bauen, erschaffst du vollständig
spielbare Spiele Dieser Kurs ist so konzipiert
, dass er fesselnd, progressiv und praxisnah Sie werden die Freiheit haben, zu
experimentieren, Probleme zu lösen
und Ihrer Kreativität freien Lauf zu lassen, und Ihrer Kreativität freien Lauf während Sie bei
jedem Schritt Anleitung erhalten. Mit Scratch Saga
gehst du über die Grundlagen
des Programmierens hinaus und tauchst in die Prinzipien
der Spieleentwicklung ein. Dabei
lernst du nicht nur, wie man Spiele macht,
sondern auch, wie du sie für Spieler unterhaltsam und
interaktiv gestalten kannst. In Ordnung, also wenn du
bereit bist, lass uns anfangen.
2. Erste Schritte mit Scratch: Um mit Scratch zu beginnen, müssen wir zunächst
die offizielle
Scratch-Website aufrufen, die sich unter
scratch dot mit dot EDU befindet Auf dieser Website können
wir mehr
über Scratch lesen und uns verschiedene Projekte ansehen , die andere Scratcher
oder Scratcher gemacht haben Noch wichtiger ist jedoch, dass wir unser eigenes
Scratch-Konto erstellen
können Der Grund, warum wir ein Konto erstellen
müssen ist,
dass Scratch
eine webbasierte Plattform ist Mit einem Konto können wir alle unsere Projekte an
einem leicht zugänglichen Ort zusammenfassen. Ordnung, also um ein Konto zu
erstellen, sollten
wir oben auf der Seite ein
paar Optionen sehen, wie zum Beispiel diese Schaltfläche „Beitreten“ oder diesen
Link zum Teilnehmen hier oben. Wenn wir auf eine dieser Optionen klicken, wird ein Formular angezeigt, in dem wir einen Benutzernamen und ein
Passwort für unsere Konten
eingeben können . Ich habe eigentlich schon ein
Konto, aber nur zum Spaß werde
ich ein neues erstellen, und wir möchten sicherstellen, dass wir
nicht unseren richtigen Namen verwenden. Ich möchte mein Passwort nicht
zeigen, also deaktiviere ich hier die Option
Passwort anzeigen Und für das Passwort wollen
wir etwas verwenden, das für uns leicht zu merken
ist, aber für
andere schwer zu erraten Ordnung, sobald wir all das
eingegeben
haben , können wir auf Weiter klicken Jetzt können wir wählen
, in welchem Land wir leben, und erneut auf Weiter klicken. Wir können jetzt unser
Geburtsdatum eingeben und auf Weiter klicken. Für die Geschlechterfrage können
wir ein
Geschlecht wählen, wenn wir möchten, aber das ist nicht erforderlich, also können wir einfach auf Weiter klicken. Schließlich müssen wir unsere E-Mail-Adresse
eingeben. Eine E-Mail-Adresse ist erforderlich, um unser Konto zu
bestätigen und falls wir unser Passwort
vergessen haben. Scratch wird unsere E-Mail-Adresse jedoch nicht
öffentlich auf unserem
Konto sichtbar
machen . In Ordnung. Und damit können wir
auf Create your account klicken, und jetzt haben wir unsere
eigenen Scratch-Konten. Eine weitere wichtige
Sache, die Sie wissen sollten,
ist jedoch, dass wir, wenn wir
unsere Projekte teilen oder Kommentare zu
anderen Scratchers-Projekten abgeben
möchten , zunächst unser Konto
bestätigen müssen, indem
wir auf den Link in der E-Mail klicken ,
die Scratch uns gesendet
hat Moment ist dies jedoch nicht wirklich
notwendig, also lass uns weitermachen und
auf Erste Schritte klicken Und jetzt sind wir auf der ersten
Seite unseres Scratch-Kontos. Und hier können wir lernen, wie
man bestimmte Dinge in Scratch macht. Und wieder können wir uns
einige andere Scratch-Projekte ansehen, die ich wärmstens empfehlen
kann, sobald Sie die Gelegenheit dazu haben. Aber vorerst wollen wir unser eigenes Projekt
erstellen. Dazu müssen Sie nur hierher kommen und auf Erstellen
klicken. Und jetzt haben wir offiziell unser erstes
Scratch-Projekt
erstellt. Bis auf die
kleine Kratzkatze hier
sieht
unser Projekt jedoch ziemlich leer aus. Schauen wir uns also an, wie
wir das beheben können.
3. Der Scratch-Editor: Wenn wir ein neues
Scratch-Projekt starten oder ein vorhandenes öffnen
, gelangen wir zu dieser Seite, die als Editor bezeichnet wird. Am oberen Rand des Editors haben
wir diese lila Leiste, die als Editor-Header bezeichnet
wird. Das erste, was wir in
der Kopfzeile haben, sind Einstellungen. Wenn wir darauf klicken, können wir
die Sprache der Seite auf
etwas anderes ändern , wenn wir möchten. Wir können
den Farbmodus
der Seite auch entweder auf Original (Standard)
oder auf hohen Kontrast ändern der Seite auch entweder auf Original , was sich hauptsächlich auf
die Farben
der Symbole und Blöcke
hier links auswirkt . Sie können gerne den Modus mit hohem
Kontrast verwenden, wenn Sie möchten, aber ich werde
wieder zum Original wechseln. Als Nächstes können
wir über das Dateimenü ein neues
Projekt erstellen und alle Änderungen
speichern, die wir an unserem aktuellen Projekt
vorgenommen haben. Wie wir jedoch gleich sehen werden, speichert Scratch unser
Projekt regelmäßig automatisch für uns, sodass wir es normalerweise nicht manuell tun
müssen. Wir können unser
Projekt auch als Kopie speichern. Dies ist nützlich, wenn wir verschiedene Versionen
unseres Projekts haben
möchten oder wenn wir große Änderungen
vornehmen möchten
und befürchten, dass wir etwas durcheinander bringen
könnten. Was wir tun können, ist zuerst eine Kopie
des Projekts zu erstellen und dann die Änderungen vorzunehmen. Und wenn wir etwas durcheinander bringen, können
wir einfach zu einer früheren Kopie
zurückkehren. Und schließlich können wir sowohl ein Projekt von
unserem Computer
laden als auch ein
Projekt auf unserem Computer speichern. Wir werden etwas später im Kurs mehr über
diese beiden Optionen
erfahren . Als Nächstes haben wir ein Bearbeitungsmenü, das nur zwei Optionen hat Wiederherstellen und Einschalten des Turbomodus. Wenn wir mit Restore ein Asset
aus unserem Projekt
entfernen, z. B. ein Sprite oder einen Hintergrund, die wir später noch
viel mehr erfahren werden, können
wir auf Wiederherstellen klicken, um das Asset wieder
zu unserem Projekt
hinzuzufügen Der Turbomodus eignet sich für wirklich komplexe Projekte, die superschnell laufen
müssen Turbomodus
funktioniert jedoch nicht gut bei bestimmten Arten von
Projekten wie Spielen, die viele flüssige
Bewegungen und Animationen haben, sodass wir ihn normalerweise nicht verwenden
müssen. Als Nächstes können
wir mithilfe dieses Felds hier, dem derzeit Untitled steht, in
dem derzeit Untitled steht, unserem Projekt einen Namen geben Alles, was wir tun müssen, ist Untitled durch
etwas anderes wie Scratch
Basics und Precenter zu
ersetzen etwas anderes wie Scratch
Basics und Und jetzt
heißt das Projekt Scratch Basics. Wir können auch sehen, dass es
sich im Titel
des Browser-Tabs geändert hat . Wenn wir hier auf die Schaltfläche
C-Projektseite klicken
, gelangen wir
zur Projektseite für unser aktuelles Projekt. Und hier können wir unser Projekt ausführen und Dinge wie
Anweisungen
zur Verwendung des Projekts hinzufügen . Wenn wir uns
einige Ideen aus dem Projekt
eines anderen ausgeliehen
haben, können wir sie auch einige Ideen aus dem Projekt
eines anderen ausgeliehen
haben, hier bestätigen Wir können
hier auch die Schaltfläche „Teilen“ verwenden , damit andere
Scratcher es sich ansehen können Aber lassen Sie uns vorerst zum Editor
zurückkehren,
was wir tun können, indem wir hier auf
die Schaltfläche C im Inneren Als Nächstes haben wir einen Tutorial-Link
, den Sie sich einige
andere Scratch-Tutorials ansehen können, über den Sie sich einige
andere Scratch-Tutorials ansehen können,
und hier auf der rechten Seite haben
wir ein Ordnersymbol. Wenn wir darauf klicken, gelangen
wir zu unserer M Stuff-Seite. Und hier können wir
alle Projekte sehen, die wir in unseren Konten haben. Im Moment haben wir nur
das Scratch Basics-Projekt, aber das werden wir bald beheben. Und um zum Editor zurückzukehren, können
wir hier auf die Schaltfläche C
und die Seite klicken. Schließlich haben wir
hier ein Drop-down-Menü mit unserem Benutzernamen, in dem wir beispielsweise unser Scratch-Profil
bearbeiten, unsere Seite
„Meine Sachen“ aufrufen, unsere Kontoeinstellungen
ändern und uns von unseren
Scratch-Konten abmelden können. Unter der Überschrift
haben wir all diese Dinge, denen wir uns
im Laufe des Kurses sehr
vertraut machen werden . Zunächst
hängt das, was wir
in diesen beiden Bereichen sehen , davon ab, welche
der drei Tabs wir hier auf der linken Seite
ausgewählt haben. Wenn die Registerkarte „Code“ ausgewählt ist, können
wir die Blockpalette sehen
, mit der wir aus
verschiedenen Kategorien von Blöcken wählen können. Blöcke, über die wir in der nächsten
Lektion viel mehr
erfahren werden, sind das, was wir verwenden, um den Code für
unser Projekt zu erstellen und
dafür zu sorgen, dass er tatsächlich Dinge tut. Und der Ort, an dem wir den Code
aufbauen, ist dieser große, derzeit leere Bereich, der Codebereich
genannt wird. Wenn wir
zum Tab Kostüme wechseln, sehen
wir jetzt die Kostüme
des aktuellen Sprites, das wir hier ausgewählt haben, in der Sprite-Farbe unten
rechts Im Moment ist Scratch Cat das
einzige Sprite, das wir in unserem Projekt
haben Und Scratch Cat
hat zwei Kostüme, mit denen wir sein Aussehen schnell
ändern können Und wir haben sogar verschiedene Tools , mit denen wir
das aktuelle Kostüm bearbeiten können. Wir werden bald sehen, wie wir unserem Projekt weitere Sprites
hinzufügen und unsere eigenen
Sprites und Kostüme erstellen können unserem Projekt weitere Sprites
hinzufügen und unsere eigenen
Sprites und Kostüme erstellen Wenn wir als Nächstes zur
Registerkarte Sounds gehen, können
wir alle Sounds sehen die
das ausgewählte
Sprite Scratchcat hat den Miau-Sound
und wir können ihn abspielen, indem wir hier auf
die Play-Schaltfläche klicken Wir haben auch Schaltflächen zum
Ändern der Sounds und wir werden später lernen, wie wir Code verwenden können, um Sounds und
Musik zu unseren Spielen
hinzuzufügen Als nächstes haben
wir oben rechts die Bühne. Hier
können wir
unser Projekt tatsächlich ausführen und es in Aktion
sehen. Um das Projekt auszuführen, klicken
wir hier auf die Schaltfläche mit der
Bildschirmflagge. Da wir aber noch
keinen Code hinzugefügt haben, passiert nichts. Ab der nächsten Lektion bringen
wir Scratchcat dazu, sich auf der Bühne zu
bewegen Aber im Moment können wir ihn, wenn wir wollen, tatsächlich anklicken und ziehen um
ihn manuell zu bewegen Wir haben
hier auch ein paar Schaltflächen, um die Größe
der Bühne zu ändern , und wir können
diese verwenden , um die
Bühne im Vollbildmodus anzuzeigen. Unter der Bühne befindet sich
das Sprite-Fenster, in dem wir alle Sprites
in unserem Projekt
sehen können alle Sprites
in unserem Projekt
sehen Sprites sind Dinge wie
Charaktere, Waffen
und Schaltflächen, die
die Grafik in unseren
Apps und Spielen ausmachen die Grafik in unseren Wir haben hier auch einige
Optionen, um bestimmte Aspekte
der ausgewählten Sprites zu
ändern Zum Beispiel können wir es
umbenennen, wir können
seine Position auf der Bühne ändern seine Position auf der Bühne wobei 00 der
Mittelpunkt der Bühne ist Wir können ihre
Sichtbarkeit ein- und ausschalten. Wir können seine Größe ändern
und wir können ändern, in welche
Richtung es zeigt Die Standardrichtung
jedes Sprites ist 90 Grad. Wenn die
Richtung eines Sprites bei 90 liegt, zeigt es genauso, wie sein
aktuelles Kostüm zeigt Okay, hier
rechts neben dem Sprite-Fenster haben
wir das Bühnenfenster haben
wir das Bühnenfenster Das Bühnenfenster dient zum Hinzufügen
und Erstellen von Hintergründen, die die
Hintergründe in unserem Projekt darstellen Derzeit haben wir nur
einen leeren Hintergrund, und wenn wir hier darauf klicken, können
wir sehen, dass
wir die Hintergründe genau
wie bei Sprites bearbeiten können Wir können ihnen Code hinzufügen und wir können ihnen sogar
Sounds hinzufügen Als Nächstes befinden sich am unteren Rand
sowohl des Sprite-Fensters
als auch des Bühnenfensters Schaltflächen zum
Hochladen, Bearbeiten und Auswählen aus einer Vielzahl von Sprites Schließlich haben wir unten links
im Scratch-Editor
unseren Rucksack unseren Unser Rucksack ist derzeit leer, aber was wir damit machen können, ist, wir dem Rucksack Assets wie
Sprites und Backdrops
sowie Codeblöcke
hinzufügen können ,
und das alles wird für all unsere
Projekte verfügbar sein Das ist besonders nützlich, wenn wir uns die Projekte
anderer Scratcher ansehen Wenn wir Code
oder Ressourcen sehen, die wir uns ausleihen und zu unseren eigenen Projekten
hinzufügen
möchten, können
wir sie in
unseren Rucksack ziehen . Wenn wir dann unser eigenes Projekt
öffnen, können
wir sie aus unserem
Rucksack in unser Projekt ziehen Okay, jetzt, wo wir wissen, was wir im Scratch-Editor tun können, ist
es an der Zeit, damit zu
beginnen
4. Die Bausteine von Scratch: Etwas, das ich in
der vorherigen Lektion nicht erwähnt habe, ist, dass jedes Sprite und jeder Hintergrund
seinen eigenen Codebereich
und seinen eigenen Code hat seinen eigenen Codebereich
und seinen eigenen Code Wenn wir also
zum Beispiel
Scratch Cat dazu bringen wollen, etwas zu tun ,
müssen wir sicherstellen, dass wir ihn
im Sprite-Bereich ausgewählt haben Und jetzt wollen wir sehen,
was wir ihn
dazu bringen können , indem wir uns die Blockpalette
genauer ansehen Die Codeblöcke sind
in verschiedene Kategorien unterteilt, die
farblich gekennzeichnet sind, sodass wir die Blöcke
für jede Kategorie
in der Liste hier
leicht finden können. Und jede Kategorie hat Code ein Sprite
auf eine bestimmte Weise beeinflusst In der Kategorie
Bewegung können
wir beispielsweise ein
Sprite auf unterschiedliche Weise bewegen und drehen,
und wir können tatsächlich sehen, was ein bestimmter Block tut,
indem wir darauf klicken Wenn wir zum Beispiel die Bühne im Auge
behalten, bewegt sich Scratch Cat
jedes Mal, wenn wir auf den Block „Zehn Schritte
bewegen“ klicken, um zehn Schritte in die
aktuelle Richtung Und wann immer wir
einen Block mit einem Text haben , der so
gefüllt ist, können
wir
tatsächlich einen neuen Wert eingeben. Wenn wir
Scratch Cat also doppelt so weit verschieben wollen, können
wir die Zehn
hier durch eine 20 ersetzen und
auf den Block klicken. Wenn Scratch Cat
jedoch
den Rand der Stufe erreicht , kann er nicht weiter
gehen. Jetzt müssen wir ihn
neu positionieren, indem wir entweder auf ihn klicken und ihn in der Phase
ziehen oder
indem wir den Block „Gehe zu XY“ verwenden Wie ich in
der vorherigen Lektion erwähnt habe, steht 0,00
im
Mittelpunkt der Bühne also im Block Gehe zu XY Wenn wir also im Block Gehe zu XY sowohl X als auch Y
auf Null setzen und darauf klicken,
wird Scratch Cat
zurück in die Mitte bewegt,
und
das Sprite wird dann tatsächlich anhand
seines Mittelpunkts positioniert Sprite wird dann tatsächlich anhand
seines Mittelpunkts Wenn wir einen positiven
Wert für X verwenden, können
wir ihn nach rechts von
der Mitte bewegen , und ein negativer Wert bewegt ihn nach links von der Mitte In ähnlicher Weise bewegt ihn ein positiver
Y-Wert über die Mitte und ein negativer Wert bewegt ihn unter die Mitte. Wir können ihn auch
so drehen , dass er in eine
andere Richtung schaut. Wenn er zum Beispiel nach rechts
schaut und wir wollen, dass er gerade nach oben schaut, müssten
wir
ihn um 90
Grad gegen den Uhrzeigersinn drehen Dazu können wir
hier den Wert des Blocks „Gegen
den Uhrzeigersinn drehen“ auf 90 Grad
setzen Blocks „Gegen
den Uhrzeigersinn drehen und
dann darauf klicken Und wenn wir jetzt auf
den Verschiebe-Block klicken, bewegt
er sich in
die neue Richtung Nehmen wir nun an, wir
möchten, dass sich Scratch Cat in einem quadratischen
Bereich auf der Bühne
bewegt. Dafür könnten wir weiter
vor und zurück gehen, auf den Abbieger klicken und
Blöcke immer wieder verschieben. Das kann
jedoch ziemlich nervig werden. Besser wäre es, wenn
wir
diese beiden Blöcke irgendwie
miteinander verbinden könnten , sodass ein einziger Klick ihn sowohl
drehen als auch bewegen würde, und hier kommt der
Codebereich ins Spiel. Um Blöcke zum Codebereich hinzuzufügen, müssen
wir sie nur anklicken und sie aus der Liste
hineinziehen. Wir haben auch diese
Schaltflächen unten
rechts, um den Codebereich zu vergrößern und zu
verkleinern. Wir können dies
auch mit der Maus tun, indem wir
die Strg- oder
Befehlstaste auf dem
Mac gedrückt halten die Strg- oder
Befehlstaste auf dem und mit der
Maus auf und ab scrollen Und wenn wir uns innerhalb des Codebereichs
bewegen müssen, können
wir entweder die
Bildlaufleisten verwenden oder wir können einfach in
einem leeren Bereich klicken und die Maustaste gedrückt halten und
die Maus bewegen Okay, wenn wir uns unsere beiden
Codeblöcke hier genauer ansehen, können
wir sehen, dass jeder
eine Kerbe oben und
eine Beule unten hat eine Kerbe oben und
eine Beule unten Wenn wir einen Block nehmen und ihn näher
an den anderen Block heranrücken, erhalten
wir diese graue Anzeige die uns
anzeigt, dass, wenn wir
jetzt die Maus loslassen, die beiden Blöcke wie
Bausteine oder
Legos zusammenrasten Die Blöcke sind jetzt in einem
sogenannten Skript
miteinander verbunden in einem
sogenannten Skript
miteinander Und wenn wir auf einen
der Blöcke im Skript klicken, führt
es die Aktion
im ersten Block aus, dann im nächsten Block und so weiter. Um das besser erkennen zu können, können wir den
Bewegungsblock auf 100 Schritte
erhöhen. Jetzt bewegt sich
Scratch Cat jedes Mal, wenn wir auf
einen der Blöcke klicken, um 100 Schritte dreht sich
dann um 90 Grad gegen den
Uhrzeigersinn Und all das passiert während einer einzigen Aktualisierung der Phase,
sodass es so aussieht, als ob er sich gleichzeitig bewegt
und rotiert Okay, und wir können weiter auf den Drehbüchern
aufbauen. Vielleicht wollen wir zum Beispiel, Kostüm von
Scratchcat nach jeder Runde
ändert Das Ändern des Kostüms eines Sprites wirkt sich auf sein Aussehen oder sein Aussehen Dafür müssen wir uns also die Block-Kategorie Los ansehen die Block-Kategorie Los Und hier können wir Dinge tun, wie
zum Beispiel einen Geist dazu bringen, etwas zu sagen
oder zu denken Wir können seine
Größe und Farbe ändern, und wir können sein Kostüm ändern, indem wir
entweder zu
einem bestimmten Kostüm wechseln oder indem wir zum
nächsten verfügbaren Kostüm des Sprites wechseln Wenn wir einen Blick auf
die Registerkarte Kostüme werfen, hat
Scratch Cat nur zwei Kostüme, und sein erstes Kostüm, Kostüm eins
genannt, ist das derzeit aktive Kostüm Wenn wir also
zum nächsten Kostüm wechseln, wird
Kostüm zwei aktiv. Aber nach Kostüm zwei haben
wir kein nächstes
Kostüm, zu dem wir wechseln könnten. Das ist aber kein Problem, denn wenn ein Sprite sein letztes Kostüm trägt und wir versuchen, zum nächsten
zu wechseln, wechselt
Scratch
es
automatisch zurück zum
allerersten Kostüm Gehen wir also zurück zum Code und bringen wir einen
nächsten Kostümblock hinein
und platzieren ihn am unteren Rand
des Zugblocks Und jetzt, jedes Mal, wenn wir auf einen der
Blöcke in den Drehbüchern klicken, bewegt sich
Scratch Cat, dreht sich um, dann ändert sich dieses Kostüm, alles in einer einzigen
Aktualisierung der Phase. Okay, was ist, wenn
wir es
so einrichten wollen , dass
Scratchcat bei jeder
Ausführung des Skripts alle Aktionen
eine bestimmte Anzahl von Malen ausführt eine bestimmte Anzahl Hier kommt die
Kontrollkategorie der Blöcke ins Spiel. Die Kontrollblöcke ermöglichen es uns den Ablauf
unseres Projekts
zu kontrollieren, indem wir
beispielsweise ein Skript für eine bestimmte
Anzahl von Sekunden anhalten, Aktionen
eine bestimmte Anzahl
von Malen
wiederholen oder sogar für immer Aktionen nur unter
bestimmten Bedingungen
ausführen und Klone von
Sprites erstellen Wir werden im Laufe des Kurses viel mehr
über all diese Blöcke
lernen des Kurses viel mehr
über all diese Blöcke Aber wenn wir
möchten, dass Scratchcat
diese Aktionen eine
bestimmte Anzahl von Malen wiederholt, müssen
wir vorerst diese Aktionen eine
bestimmte Anzahl von Malen wiederholt, einen Wiederholungsblock
einbauen Und wenn wir den Mauszeiger über
den oberen Rand des Verschiebungsblocks bewegen, können
wir ihn um
alle Blöcke wickeln Und jetzt führt
Scratch Cat jedes Mal, wenn wir
auf das Skript klicken ,
alle drei Aktionen und wiederholt sie
dann insgesamt zehnmal, aber er hat es so schnell gemacht, dass
wir es kaum sehen konnten Was wir also tun können, ist, zwischen
jeder Wiederholung
eine kurze Pause einzufügen zwischen
jeder Wiederholung
eine kurze Pause einzufügen Dafür
benötigen wir einen nassen Block. Wenn wir einen in
den Wiederholungsblock ziehen, können
wir ihn
vor oder nach einem
der Blöcke hier einfügen . wir ihn über
dem Verschiebe-Block, sodass es
vor der ersten Wiederholung eine Verzögerung Bei einer Standardgewichtung von
1 Sekunde zwischen jeder Wiederholung dauert
die Ausführung des gesamten Skripts 10 Sekunden, was wahrscheinlich
etwas zu lang ist Aber glücklicherweise können wir
auch Dezimalwerte verwenden. Wenn wir es beispielsweise auf 0,1
ändern, können
wir zwischen
jeder Wiederholung eine Pause von
einer Zehntelsekunde hinzufügen zwischen
jeder Wiederholung eine Pause von
einer Zehntelsekunde Lass es uns jetzt
versuchen. Viel besser. Und natürlich
können wir auch
die Anzahl der Wiederholungen
so ändern, die Anzahl der Wiederholungen
so vielleicht 20 Scratchcat inzwischen ziemlich schwindelig ist,
also geben wir ihm ein
paar andere Dinge zu
tun, bei denen
er nicht so viel drehen muss ist,
also geben wir ihm ein
paar andere Dinge zu tun, bei denen
er nicht so Eine lustige Sache, die wir tun können, ist,
ihn dazu zu bringen, unserem Mauszeiger auf der Bühne zu folgen
. Dafür müssen wir zur Kategorie Bewegung zurückkehren
. Ein Bewegungsblock, den wir haben
,
ist dieser andere Go-to-Block . Wenn wir ihn jetzt anklicken, sich
Scratchcat standardmäßig an eine zufällige
Position auf der Bühne Wenn wir hier jedoch auf eine
zufällige Position klicken, haben
wir eine weitere
Option: Mauszeiger Wenn wir diese wählen und jetzt
auf den Block klicken, versucht
Scratchcat zwar,
sich zu unserem Mauszeiger zu bewegen, aber er bleibt am
linken Rand der Bühne hängen Damit das funktioniert, wenn wir unsere Maus
in der Phase
bewegen, müssen
wir
ein weiteres Skript erstellen Ein Sprite kann tatsächlich mehrere Skripte
haben. Lassen Sie uns also ein
neues beginnen, indem wir einen
Block mit dem Mauszeiger „Gehe zum Mauszeiger“ in einen leeren Bereich ziehen Block mit dem Mauszeiger „Gehe zum Mauszeiger“ in einen leeren Bereich Jetzt auf den
Block klicken zu müssen, wird einfach nicht
funktionieren, weil wir in der Lage sein müssen , unsere Maus
auf der Bühne
zu bewegen Das bedeutet, dass der Block
im Grunde für immer laufen muss, oder zumindest bis
wir ihm sagen, dass er aufhören soll. Dafür haben wir, wie wir bereits
in der Kategorie Steuerung gesehen haben, einen Block für immer. Bringen wir also einen
in den Codebereich und wickeln wir ihn um den Block „
Gehe zum Mauszeiger“. Wenn wir jetzt auf das Skript klicken, folgt
Scratch Cat dem Skript kontinuierlich, während wir unsere Maus
in der Phase bewegen Scratch Cat dem Skript kontinuierlich . Ziemlich cool, oder? Aber jetzt fragst du dich vielleicht, wie wir das Projekt stoppen können
, damit Scratch Cat unserer Maus nicht mehr
folgt? Nun, solange wir
ein Skript haben , das für immer
läuft, bleibt
die grüne Flaggentaste aktiviert. Aber direkt daneben haben
wir eine Stopptaste. Und wenn wir darauf klicken, werden alle Skripte, die
gerade ausgeführt werden, gestoppt. Okay, lassen Sie uns jetzt mehr
über diese Schaltfläche mit Bildschirmflagge sprechen. Um eine
richtige App oder ein richtiges Spiel zu
haben, wird es
nicht funktionieren,
einzelne Skripte
im Codebereich anklicken zu müssen, damit unsere Sprites Dinge tun Stattdessen benötigen wir eine
Möglichkeit, alle Skripte
entweder gleichzeitig oder bei
bestimmten Ereignissen auszuführen , und hier kommt die grüne
Flaggenschaltfläche ins Spiel Wir und andere Nutzer
unserer Apps und Spiele
müssen in der Lage sein, auf
die Schaltfläche zu klicken , damit unser
Programm ausgeführt wird. Wenn wir
jetzt darauf klicken, passiert jedoch
nichts, da Scratch noch
nicht weiß, welche Aktionen
die Schaltfläche ausführen soll. Wenn Sie auf die Schaltfläche klicken, wird
ein Ereignis in Scratch ausgelöst Um Scratch mitzuteilen, was zu tun ist, wenn ein bestimmtes
Ereignis eintritt, haben
wir die
Kategorie Ereignisse der Kategorie Blöcke. Wir
können nach einigen Ereignissen suchen, wenn die grüne Flagge geklickt wird wenn eine Taste auf der
Tastatur gedrückt wird, wenn auf ein Sprite geklickt wird Wie wir
später im Kurs sehen werden, können
wir sogar
Nachrichten in
unserem gesamten Projekt übertragen und die
Sprites darauf reagieren lassen Aber das Ereignis, nach dem wir gerade
suchen, ist
natürlich, wenn auf die
grüne Flagge geklickt wird Und wenn wir uns den Block genauer
ansehen, im Gegensatz zu den anderen Blöcken, die
wir bisher verwendet haben, hat
dieser
im Gegensatz zu den anderen Blöcken, die
wir bisher verwendet haben, keine
Kerbe an der Spitze Er hat nur einen Tab am unteren Rand. Blöcke wie diese werden
Hutblöcke genannt und können nur am Anfang eines Skripts
verwendet werden. Wenn wir es jetzt machen
wollen, also wenn auf die grüne
Flagge geklickt wird, wird
das Skript hier mit der
Forever-Schleife gestartet Wir können den Block, auf den die
grüne Flagge geklickt wurde, in den
Block ziehen und ihn an
den Anfang des Skripts bringen Wenn Sie jetzt auf die grüne Flagge klicken, beginnt Scratchcat, unserer Maus zu
folgen In Ordnung, lassen Sie uns auf die Stopp-Schaltfläche klicken
. Und nehmen wir an, wir möchten
auch, dass Scratchcat etwas tut
, wenn
wir eine bestimmte Taste drücken Dafür benötigen wir einen Block mit der
Win-Taste. Und wie bei dem Block, auf den die grüne
Flagge geklickt wurde, kann auch
dieser Block nur
am Anfang eines Skripts stehen Ziehen wir es also in einen leeren Bereich, um ein neues Skript zu
starten das Wiederholungsskript auch
gerne hier in
Ihrem Projekt behalten , wenn Sie weiter damit
herumspielen möchten , aber um etwas Speicherplatz freizugeben, werde
ich meins loswerden. Um einen Block oder ein ganzes
Skript aus dem Codebereich zu entfernen, müssen wir
es nur
anklicken und zurück in die
Blockpalette ziehen und loslassen. Wenn die Win-Taste gedrückt gehalten wird, können
wir aus vielen Tasten auf der Tastatur wählen. Aber vorerst
bleiben wir einfach bei der Leertaste
und machen es so, dass
Scratchcat
beim Drücken der Leertaste so
etwas wie Hallo sagt Dafür müssen wir zur Kategorie Looks
zurückkehren. Und hier haben wir einen
S-Vier-Block und einen normalen Sa-Block. Beginnen wir mit dem
normalen Block, indem wir
ihn an der Unterseite des mit der
Win-Leertaste gedrückten Blocks anhängen ihn an der Unterseite des mit der
Win-Leertaste gedrückten Blocks Wenn wir
Scratchcat nun an eine
andere Stelle bewegen, sodass wir ihn sehen können, und
die Leertaste drücken, erscheint neben ihm
eine kleine Sprechblase Text
enthält, den
wir im Sa-Block haben Mit dem
normalen S-Block verschwindet
die Sprechblase jedoch nie Wenn wir möchten, dass sie nach einer
bestimmten Zeit
verschwindet, können
wir stattdessen
einen Block mit vier Speichern verwenden. Lassen Sie uns also zuerst den Sa-Block hier
loswerden, was wir tun können, indem
wir ihn vom
Skript trennen und
in die Blockpalette ziehen Und lassen Sie uns
einen Block mit vier Speichern an den Block anhängen , der mit der
Winspace-Taste gedrückt wurde Wir können ihn dazu bringen, zu sagen,
was wir wollen wie du und
so lange wir wollen, vielleicht 1 Sekunde Wenn wir jetzt die Leertaste drücken, sagt
er Yo, dann verschwindet nach 1 Sekunde die Sprechblase. Wir können dies auch während der
Ausführung des Projekts tun. Wenn wir auf die grüne Flagge klicken, folgt
Scratch Cat unserer Maus. Wenn wir die Leertaste
drücken, sagt
er
1 Sekunde lang Yo , während er
weiterhin der Maus folgt. Das bedeutet, dass während der
Ausführung des Projekts, wenn wir die Leertaste drücken, diese beiden Skripte
gleichzeitig ausgeführt werden. Das ist wichtig zu wissen
, weil wir irgendwann
viele Sprites mit
vielen Skripten in
unseren Spielen haben viele Sprites mit
vielen Skripten in werden, die alle
gleichzeitig laufen Und nur so zum Spaß können wir den Benutzer
jedes Mal, wenn
wir die Leertaste drücken ,
etwas wie seinen Namen eingeben lassen und den Benutzer dann von Scratchcat
begrüßen lassen Dafür müssen wir uns die Kategorie Sensorik ansehen
. Wir können die Sensorblöcke verwenden, um bestimmte Dinge zu erkennen, z.
B. ob ein Sprite
etwas berührt oder ob es eine bestimmte Farbe
berührt, wir können dem Benutzer
eine Frage stellen und erkennen,
wann er eine Antwort
eingibt, und wir können erkennen,
ob eine bestimmte
Taste und wir können erkennen,
ob eine bestimmte
Taste gedrückt oder eine Maustaste geklickt wurde Dieser Block, bei dem die Taste gedrückt
wird, unterscheidet sich ein wenig von dem Win-Tasten-Block
,
den wir im Skript verwenden , und wir werden ihn uns gleich
ansehen. Aber vorerst wollen wir
den Block „Fragen und Warten“ verwenden. Mit diesem Block können wir das Sprite eine
bestimmte Frage stellen lassen und
dann auf die Antwort warten Und wir wollen, dass das passiert, nachdem die Leertaste gedrückt wurde, aber bevor Scratch Cat spricht Lassen Sie uns also einen genau
zwischen die beiden Blöcke setzen. Wenn wir das Projekt jetzt starten
und die Leertaste drücken, fragt
Scratchcat,
wie ist dein Name und ein Eingabefeld erscheint hier unten
auf der Bühne Wir können jetzt unseren
Namen eingeben und die Eingabetaste drücken, aber im Moment verwenden wir die Antwort nicht
wirklich, also beenden wir das Projekt Um die Antwort zu erhalten, müssen
wir hier den
Antwortblock verwenden. Und um solche
abgerundeten Blöcke zu verwenden, müssen
wir sie in
eine abgerundete Öffnung oder
Eingabe eines anderen Blocks einfügen . Wenn wir uns
den Block S Four ansehen, hat
er zwei abgerundete Eingaben. 14 welcher Text soll gesagt werden, und 14, wie viele Sekunden
soll der Text gesagt werden. Wenn wir möchten, dass Scratchcat
den Namen des Benutzers sagt, müssen
wir einen
Antwortblock als Texteingabe verwenden Dazu können wir einen Antwortblock
auf die Öffnung
ziehen, bis er weiß
wird, und dann Und 1 Sekunde ist ein bisschen zu schnell, lassen Sie uns das auf 2 Sekunden ändern. Wenn wir jetzt das Spiel starten, die Leertaste
drücken, unseren Namen
eingeben
und die Eingabetaste drücken, sagt
Scratchcat unseren
Namen für 2 Sekunden Es ist allerdings komisch, dass er einfach unseren
Namen sagt. Es wäre besser,
wenn er etwas
wie Hallo oder Yo sagen würde als unseren Namen. Dazu müssen wir den Begrüßungstext und
die Antwort
in
den Texteingaben zusammenfügen. Dafür benötigen wir einen Block
aus der Kategorie Operatoren. Die Blöcke des Operators ermöglichen es uns, Dinge wie
mathematische Operationen durchzuführen, Zufallszahlen
auszuwählen, Dinge zu
vergleichen
und, was noch wichtiger ist, für unsere aktuellen Zwecke, Dinge miteinander zu
verbinden. Der Join-Block hier ist
genau das, was wir brauchen. Bringen wir einen
in den Codebereich und legen wir ihn vorerst in einen
leeren Bereich. Für die erste Eingabe
des Join-Blocks können
wir eine
Begrüßung wie Yo eingeben, und ich füge auch ein Komma und
ein Leerzeichen hinzu, um den Text etwas zu
trennen Wir können den
Antwortblock jetzt von
hier wegziehen und ihn als zweite
Eingabe für den Join-Block verwenden Was ist jedoch, wenn wir nach der Antwort
auch
ein Ausrufezeichen oder
etwas anderes hinzufügen wollen ein Ausrufezeichen oder
etwas anderes Dazu können wir
zwei Join-Blöcke zusammen verwenden. Lassen Sie uns also zunächst
den Antwortblock für den Moment aus dem
Join-Block verschieben , und jetzt nehmen wir
einen weiteren Join-Block und verwenden ihn als zweiten
Eingang für diesen Join-Block. Jetzt können wir den
Antwortblock als erste Eingabe für
den neuen Join-Block verwenden und in den zweiten ein
Ausrufezeichen
eingeben Das alles
wird also dazu führen, dass zuerst die Antwort mit
dem Ausrufezeichen verknüpft dann der Jom-Raum
mit dem Anfang verbunden wird Okay, jetzt nehmen wir das
Ganze und verwenden es als Texteingabe
für den Block Save Four Lassen Sie uns es zum Schluss versuchen. Führen Sie das Projekt aus,
drücken Sie die Leertaste, geben Sie unseren Namen ein
und drücken Sie die Mitteltaste. Nett. Für noch mehr Spaß können
wir Scratchcat
auch ein Geräusch machen lassen Wenn wir noch einmal in
den Sound-Tab schauen, hat
Scratchcat nur einen
Sound, der ein Miau ist ihn zu verwenden,
müssen wir zum Code-Tab und in
die Sound-Kategorie zurückkehren Code-Tab und in
die Hier haben wir sowohl einen Play-Sound-Block bis er fertig ist, als auch
einen Start-Soundblock Manchmal möchten wir, dass
ein Sprite
einen Sound abspielt und nichts
anderes tut, bis der Sound fertig ist Aber im Moment
wollen wir einfach anfangen,
einen Sound abzuspielen und alles
andere wie gewohnt laufen lassen Lassen Sie uns also einen
Start-Soundblock hineinziehen und ihn unter
den sicheren Vier-Block platzieren. Wenn wir das jetzt ausprobieren, grüßt uns
Scratch Cat wieder, aber er miaut erst nach den zwei Sekunden
Wartezeit, die wir hier festgelegt haben Platzieren wir also stattdessen den Start-Soundblock
über dem sicheren Vier-Block Und lass es uns versuchen. Viel besser. Ich werde noch etwas schreiben, bevor
wir diese Lektion beenden. Gehen wir zurück zur Kategorie
Sensorik. Wie wir bereits gesehen haben, haben
wir hier diese sechseckigen
Blöcke, mit denen überprüft werden kann, ob eine
Taste gedrückt oder eine Maustaste gedrückt ist Sechseckige Blöcke wie diese
werden boolesche Blöcke genannt. Ein boolescher Wert ist immer entweder wahr oder falsch. beispielsweise die
Leertaste gedrückt wird, hat der Block immer dann, wenn die
Leertaste gedrückt wird, den Wert true Andernfalls
hat er den Wert False, und wir können diesen Wert verwenden, um zu
entscheiden, ob eine bestimmte Aktion
ausgeführt werden soll oder nicht. Um den
Wert eines booleschen Blocks zu überprüfen, müssen
wir einen
Bedingungsblock verwenden Bedingungsblöcke wirken sich auf den Ablauf oder die Steuerung unseres Projekts aus und befinden sich
daher in
der Kategorie Kontrolle Die Bedingungsblöcke haben alle leere sechseckige Öffnungen zur
Verwendung mit den booleschen Wir haben ein I, dann Block, I dann S-Block,
Warten bis Block und
eine Wiederholung bis Block Mit dem ITN-Block können
wir
nur dann eine
oder mehrere Aktionen ausführen , wenn eine bestimmte
Bedingung erfüllt ist Mit if then else können
wir einige Aktionen ausführen, wenn eine Bedingung wahr ist, und
andere Aktionen, wenn sie falsch ist Mit warten, bis wir
ein Script pausieren können , bis eine bestimmte
Bedingung erfüllt ist, und mit repeat, bis wir Aktionen
wiederholen können , bis eine
bestimmte Bedingung erfüllt ist. Wenn wir also zum Beispiel Scratch Cat
dazu bringen
wollen,
nur etwas zu tun , während eine bestimmte
Taste gedrückt wird, können
wir zuerst einen ITN-Block einfügen Dann können wir zur Erkennung zurückkehren, einen Block
nehmen, auf den eine Taste gedrückt wurde, und ihn als Bedingung
für den I-in-Block verwenden Und weil wir hier bereits die Leertaste
für das Skript
verwenden, ändern
wir diese
durch etwas anderes, wie vielleicht
die Aufwärtspfeiltaste. Und solange wir
die Aufwärtspfeiltaste gedrückt haben, können
wir Scratchcat so
etwas wie das
Umdrehen im Kreis machen so
etwas wie das
Umdrehen im Gehen wir also zu Bewegung und
schnappen uns einen der Turn-Blöcke und lassen Sie uns ihn in den Wenn-Dann-Block
einrasten Damit das aber funktioniert, müssen
wir ständig überprüfen, ob die Aufwärtspfeiltaste gedrückt
wird. Wir können uns also all das
schnappen und es in
den Forever-Block hier einfügen,
entweder über oder unter dem Block „
Gehe zum Mauszeiger“. Wenn wir jetzt auf die grüne Flagge klicken, Scratch Cat weiterhin folgt
Scratch Cat weiterhin wie gewohnt unserer Maus
, und wenn wir
die Aufwärtspfeiltaste gedrückt halten, dreht
er sich ebenfalls kontinuierlich um 15 Grad. Wir können es auch so einrichten, dass er die Aktion „Gehe zum
Mauszeiger“
nur ausführt , wenn wir
die Aufwärtspfeiltaste nicht drücken. Dazu müssen wir
den Block I thin hier durch
einen Block I thin outs ersetzen . Kehren wir zunächst zur
Kontrollkategorie zurück und bringen einen
Block mit dem Typ I Thin-Outs vorerst in einen
leeren Bereich. Jetzt können wir den Block, auf den die Taste
gedrückt wurde, aus
dem Block I Thin Outs herausziehen und ihn
als Bedingung für
den Block I Thin-Outs verwenden . Wenn der Aufwärtspfeil gedrückt
wird, wollen
wir, dass sich
Scratch Cat wieder dreht. Lassen Sie uns den Begriff Block vom
I-Dünn-Block in
den I-Teil des
I-Thin-Out-Blocks verschieben I-Dünn-Block in . Und wenn jetzt der
Aufwärtspfeil nicht gedrückt wird, folgt Scratch
Cat unserer Maus. Also müssen wir den Block „
Gehe zum Mauszeiger“
hier in den Outs-Teil
des Blocks I thin outs verschieben . Wenn
wir jedoch einen Block verschieben, alle Blöcke,
die am unteren Rand des Blocks angebracht sind bewegen sich
alle Blöcke,
die am unteren Rand des Blocks angebracht sind, mit ihm. Aber wir brauchen
den Block I Thin eigentlich nicht mehr, also können wir ihn abnehmen
und loswerden Jetzt können wir den
Go-to-Block hier einrasten, dann können wir uns
das alles schnappen und es innerhalb
des Forever-Blocks einrasten Wenn wir das Projekt jetzt ausführen, folgt
Scratch Cat
unserer Maus wie gewohnt, aber wenn wir
die Aufwärtspfeiltaste gedrückt halten, folgt
er nicht mehr der
Maus und beginnt sich zu drehen. Nehmen wir abschließend an, dass
wir,
anstatt eine Taste zu drücken,
damit sich Scratch Cat dreht, eine Maustaste
gedrückt halten möchten. Dazu können wir den Block entfernen,
den die Taste gedrückt dann können wir zur Erkennung übergehen und ihn durch
einen Block mit der Maus nach unten ersetzen. Wenn wir es jetzt ausführen und auf die Bühne klicken
und es gedrückt halten, funktioniert
es
einige Sekunden lang, aber dann hört Scratch
Cat auf, sich zu drehen. Das liegt daran, dass wir
hier in der Phase tatsächlich auf das Sprite
klicken. Scratch denkt
also, wir
versuchen,
das Sprite neu zu positionieren , und unterbricht dabei
das Projekt Das passiert eigentlich nur, während wir im Scratch-Editor arbeiten Wenn wir also das Projekt beenden und in den Vollbildmodus
wechseln, indem wir auf die Schaltfläche hier oben klicken, befinden
wir uns nicht mehr
im Scratch-Editor und können ein
Sprite nicht anklicken und auf der Bühne herumziehen Wenn wir das Projekt jetzt ausführen, können
wir die
Maustaste gedrückt halten und Scratch Cat bis
in alle Ewigkeit drehen
lassen
5. Klone und Variablen: Bevor wir mit der
Entwicklung unserer Spiele beginnen, gibt es noch zwei weitere sehr
wichtige Scratch-Funktionen , die wir über
Klone und Variablen lernen müssen Erstens ermöglichen uns Klone, mehrere Kopien
eines einzelnen Sprites zu
erstellen und
diese Kopien dann
separat zu bewegen und unterschiedliche diese Kopien dann
separat zu bewegen und Das ist besonders wichtig in Spielen, in denen vielleicht ein Dutzend ähnlicher Gegner
herumlaufen und überall Kugeln
herumfliegen, und es wäre nicht
sinnvoll, für jeden einen eigenen
Sprite erstellen
zu müssen einen eigenen
Sprite erstellen
zu Okay,
schauen wir uns an, wie wir Klone verwenden können, indem wir einige
Klone unseres Trustee-Scratchcats
erstellen Um Klone verwenden zu können, müssen
wir zunächst in die Kategorie müssen
wir Unten haben wir drei Blöcke für den
Umgang mit Klonen Wenn ich als Klon anfange,
erstelle ich einen Klon von und
lösche diesen Klon Um einen Klon eines Sprites zu erstellen, verwenden
wir den Befehl Create
Clone of Block Derzeit heißt es,
einen Klon von mir selbst erstellen, und wenn wir andere
Sprites im Projekt hätten, würden
wir
sie auch in der Liste sehen Da wir jedoch
nur Scratch Cat haben, können
wir ihn nur dazu bringen, einen Klon von sich selbst zu
erstellen Wenn wir Scratch Cat nun
irgendwo in der Phase verschieben, damit wir ihn besser
sehen können , und auf den Block Crate clone
of myself klicken, sieht
es nicht so aus, als ob
etwas passiert ist, aber wenn wir ihn erneut bewegen, können
wir sehen, dass wir jetzt zwei Scratch Cats
haben Dieser ist das Original
und dieser ist ein Klon. Und jedes Mal, wenn wir auf
den CrakKloneBlock klicken, wird ein neuer
Scratch-Cat-Klon erstellt Wenn wir nun möchten, dass ein Klon nach seiner Erstellung irgendeine Aktion
ausführt, müssen
wir einen Block hinzufügen, wenn
ich als Klon anfange Lassen Sie uns auch einen Block zum Erstellen eines
Klons von mir selbst
in den Codebereich bringen ,
damit er leichter zugänglich ist. Das Skript „Wenn ich
als Klon starte“ wird automatisch jedes
Mal ausgelöst , wenn wir einen neuen
Scratch-Cat-Klon erstellen. Wenn wir also zum Beispiel wollen, jeder Klon um
eine bestimmte
Anzahl von Schritten nach rechts bewegt , könnten
wir zur Bewegung übergehen, eine Änderung X für Block
nehmen und sie unter dem
Punkt platzieren, wenn ich als Klonblock
anfange. Der Standardeingabewert ist zehn. Wenn wir also auf den Block „Clone
erstellen“ klicken, wird ein Klon direkt
hinter der ursprünglichen Scratch-Katze erstellt , und der Klon
bewegt sich sofort um zehn Schritte nach rechts. Wenn wir erneut auf den Block klicken, scheint
nichts passiert zu sein, aber da wir immer noch
Klone der
ursprünglichen Scratch-Katze erstellen , die sich immer noch an dieser Position befindet, haben
wir jetzt zwei Klone, die sich zehn Schritte
rechts vom Original befinden Lassen Sie uns die beiden Klone vorerst
aus dem Weg räumen. Wenn wir
möchten, dass sich jeder Klon zehn Schritte nach rechts
vom vorherigen Klon
bewegt,
anstatt nur
die ursprüngliche Scratch Cat zu klonen, müssen
wir von jedem
Klon einen Klon erstellen Um das zu tun, können wir zur Steuerung
gehen. Und füge am Ende des Skripts
Wenn ich als Klon starte den
Block Create Clone von mir selbst hinzu. Was jetzt passieren wird
, ist , dass jedes Mal, wenn ein
Klon erstellt wird, wenn ich als
Klon starte, ein Skript ausgeführt wird, wodurch der Klon
sich um
zehn Schritte nach rechts bewegt und dann
einen Klon von sich selbst erstellt. Das Skript wird dann
erneut für den neuen Klon ausgeführt
, der
weitere zehn Schritte vornimmt und einen Klon
von sich selbst erstellt und so weiter. Bevor wir
es jedoch versuchen, haben
wir tatsächlich ein Problem. Weil
das Skript nichts enthält , was ihm sagt, wann
es aufhören soll, es
läuft einfach weiter und
erstellt ständig neue Klone. Wir können es also so einrichten
, dass der
Block Create Clone im Skript nur ausgeführt
wird, wenn eine bestimmte
Bedingung erfüllt ist Wir können zum Beispiel überprüfen, ob die aktuelle Exposition der Klone unter einer bestimmten
Position auf der Bühne
liegt, und wenn ja,
erstellen wir einen neuen Andernfalls
erstellen wir keinen neuen Klon und daher wird das Skript „Wenn ich
als Klon starte “
nicht erneut ausgeführt Okay, um das zu tun, lassen Sie uns einen
I-Dhin-Block einfügen und ihn nur um den Block zum
Erstellen eines Klons von mir selbst
wickeln. Für die Bedingung wollen wir
überprüfen, ob die Exposition
des aktuellen Klons geringer ist als eine bestimmte Exposition auf
der Bühne, etwa 150. Dafür müssen wir also zur Kategorie Operatoren
gehen und einen Block kleiner als
als die Bedingung für
den Block I Thin verwenden als die Bedingung für
den Block I Thin Um die X- oder Y-Position
des aktuellen Klons zu ermitteln, können
wir zur Bewegung übergehen, und hier unten haben wir die Blöcke Position
und Y-Position. Wir wollen natürlich die Position, also nehmen wir einen und verwenden ihn als erste Eingabe für den Block
„Weniger als“. Lass uns überprüfen, ob es
weniger als 150 ist. Wenn das Skript jetzt ausgeführt wird, wird
es nur dann
einen neuen Klon erstellen, wenn die Exposition des aktuellen
Klons weniger als 150 beträgt Und um das auszuprobieren, können
wir hier auf den anderen Block
zum
Erstellen eines Klones klicken . Nett. Es
erzeugt und verschiebt kontinuierlich die Klone, bis es
eine Exposition von 150 erreicht Wenn wir das etwas
verlangsamen wollen, können
wir zu Control gehen und uns einen Gewichtsblock
schnappen,
und wir können ihn
so ziemlich überall
in den Skripten platzieren so ziemlich überall
in den Eine Gewichtung von etwa 0,1
Sekunden sollte gut sein. Lass es uns versuchen.
Aber wir haben ein Problem. Es hat die neuen Klone erstellt, aber wir konnten sie nicht
wirklich sehen, weil
es nicht zuerst
die vorherigen Klone entfernt Wir werden gleich sehen, wie wir Code verwenden können
, um Klone zu löschen. Aber im Moment
ist es am einfachsten, auf die grüne Flagge zu klicken. Und weil wir hier immer noch
das grüne Flaggen-Skript
aus der vorherigen Lektion haben , folgt
Scratch Cat jetzt unserem Cursor Klicken wir
also auf die Schaltfläche Stopp und bewegen ihn
irgendwo nach unten. Wenn wir nun auf den Block
Create Clone klicken, können
wir sehen, dass das
Skript wie erwartet funktioniert. Okay. Gehen wir jetzt zurück
zum Drehbuch mit der grünen Flagge und ziehen wir den Block I thin outs aus dem
Block für immer heraus. Dann verschieben wir einfach den Block „Gehe zum Mauszeiger“ zurück
in den Forever-Block, und wir können den Block „
I thin outs“ jetzt loswerden. Lassen Sie uns auch
alle Blöcke in dem Skript „Wenn
ich als Klon starte“ entfernen . Lassen Sie uns abschließend
den Block Create Clone
hier in den Forever-Block verschieben . Was glaubst du, wird passieren , wenn wir jetzt auf die grüne Flagge klicken? Wow, verrückt. Scratch Cat
folgt unserem Cursor und wir erstellen ständig Klone von ihm
auf der ganzen Bühne Okay, das hat Spaß gemacht, aber lassen Sie uns das Projekt
vorerst beenden Nehmen wir an, nach der
Erstellung jedes Klons möchten
wir, dass er
schnell ausgeblendet wird, wodurch ein cooler
Mausspureffekt Um ein Sprite ein- oder auszublenden, haben wir, wenn wir zur Kategorie „Aussehen“ wechseln, wenn wir zur Kategorie „Aussehen“ wechseln,
einen Effekt für
Block ändern und einen
Effekt für zwei Blöcke festlegen Im Moment
verwenden beide den Farbeffekt, mit dem wir
die Farbe eines Sprites
ändern können Aber ein weiterer Effekt, den wir
haben, ist der Ghost-Effekt. Der Ghost-Effekt reicht
von 0% bis 100%. Der Standardwert ist 0%, wodurch das
Sprite vollständig undurchsichtig wird Aber alles über 0% macht das Sprite immer
transparenter , bis
es 100% erreicht,
was bedeutet, dass es vollständig
transparent und auf der Bühne nicht mehr
sichtbar ist transparent und auf der Bühne nicht mehr
sichtbar Wenn wir also
den Ghost-Effekt wählen, Scratch Cat
wieder
irgendwo nach unten
bewegen und auf den Block „
Geistereffekt ändern“ klicken, wird
er zu 25% transparent Wenn wir erneut darauf klicken, wird
er zu 50% transparent, seit 75% und schließlich zu 100%, sodass er nicht mehr sichtbar ist. Um ihn zurückzubringen, müssen wir den Ghost-Effekt
verringern,
indem wir hier einen negativen Wert verwenden. Eine schnellere Möglichkeit, ihn wieder zum
Normalzustand
zu bringen , besteht darin, hier auf den Block „
Grafikeffekte löschen“ zu klicken. Dadurch werden alle
Grafikeffekte auf die Standardwerte zurückgesetzt. Ordnung, wenn
wir also den
Ghost-Effekt jedes Klons
ändern möchten , müssen
wir uns einen Block zum
Ändern des Ghost-Effekts schnappen und ihn in das Skript „Wenn
ich als Klon starte“ einfügen. Wir wollen jedoch, dass die Klone allmählich immer transparenter
werden, also müssen wir
den Block eine bestimmte
Anzahl von Malen wiederholen den Block eine bestimmte
Anzahl von Malen Das heißt, wir müssen zur
Steuerung gehen und uns einen Wiederholungsblock schnappen und ihn um den
Change-Ghost-Effekt-Block wickeln Da das
in Prozent funktioniert, müssen wir, wenn wir sagen wollen, den Ghost-Effekt jedes Mal
um 10%
ändern, damit der Klon
vollständig transparent wird, wenn wir sagen wollen, den Ghost-Effekt jedes Mal
um 10%
ändern, damit der Klon
vollständig transparent wird,
zehnmal wiederholen und
den Ghost-Effekt
um 10% ändern , weil 10%
mal zehn gleich Okay, lass es uns versuchen. Fantastisch. Wir haben allerdings
ein Problem. Scratch
erlaubt uns eigentlich nur,
insgesamt 300 Klone gleichzeitig auf
der Bühne zu haben insgesamt 300 Klone gleichzeitig auf
der Bühne zu Irgendwann
werden wir also
einen Punkt erreichen, an dem es aufhört, Klone
zu erstellen Und der Grund dafür ist, dass wir die Klone
zwar nicht sehen können, sie aber trotzdem auf der
Bühne existieren Sie sind einfach nicht sichtbar. Wenn wir sehen möchten, wie viele Klone wir zu einem bestimmten Zeitpunkt auf
der Bühne haben, können
wir die
Anzahl in einer Variablen verfolgen Variablen können per
Definition
veränderbare Werte speichern . Um sie zu
erstellen und darauf zuzugreifen, verwenden
wir die
Variablenkategorie Blöcke Und hier können wir
einzelne Variablen erstellen und wir können eine Liste von Variablen
erstellen. Wir können hier auch eine Schaltfläche zum Erstellen
eines Blocks sehen, die eigentlich aus der Kategorie Mbloxs stammt und der wir
benutzerdefinierte Blöcke erstellen können Wir werden
etwas später im Kurs sehen, erstellt wie das geht, und lernen, wie man
eine Variablenliste Aber im Moment
brauchen wir nur eine einzige Variable. Und um eine zu erstellen, klicken wir auf
die Schaltfläche „Variable erstellen“. Und hier können wir
der Variablen einen Namen geben
und wählen, ob wir sie für alle Sprites oder nur
für dieses Sprite erstellen möchten Wenn wir uns für alle Sprites entscheiden, wird
die Variable zu
einer globalen Variablen, was im Grunde bedeutet,
dass ihr Wert für alle
Sprites im Projekt zugänglich
sein wird alle
Sprites im Projekt zugänglich
sein Wenn wir uns dagegen nur für dieses Sprite
entscheiden, wird
es zu einer lokalen
oder privaten Variablen, und nur das aktuelle Sprite
kann seinen Wert festlegen oder
ändern Wenn wir anfangen, Spiele zu entwickeln, wird
wahrscheinlich
jeder Charakter Eigenschaften haben , die wir
von den anderen Charakteren trennen möchten Zum Beispiel könnte jeder
Feindtyp eine
andere Geschwindigkeit haben. In diesem Fall würden wir lokale Variablen verwenden
wollen,
aber es könnte auch
andere Attribute geben, aber es könnte auch
andere Attribute geben die alle Charaktere gemeinsam haben
sollten, wie zum Beispiel die Schwerkraft, sodass die Charaktere,
wenn sie springen, Schwerkraft sie mit derselben Geschwindigkeit wieder
nach unten zieht In diesem Fall würden wir die Schwerkraft
zu einer
globalen Variablen machen wollen Schwerkraft
zu einer
globalen Variablen machen Jetzt denken Sie vielleicht, dass wir, da wir nur
ein einziges Sprite haben, eine lokale Variable verwenden sollten um
die Anzahl der Klone zu verfolgen Das Problem dabei
ist jedoch, dass Klone bei Scratch tatsächlich als separate
Sprites
behandelt werden Und weil
wir jeden
Klon benötigen , um den Wert
der Variablen ändern zu können, müssen
wir ihn zu
einer globalen Variablen machen Lassen Sie uns das also
für alle Sprites beibehalten. Wenn ich jetzt eine Variable benenne, verwende
ich gerne alle
Kleinbuchstaben für lokale Variablen und alle Großbuchstaben
für globale Dies ist nicht erforderlich, aber es
macht es einfach zu erkennen, ob eine Variable lokal oder
global ist , indem man sie einfach in unseren Skripten
betrachtet Es ist auch eine gute Idee
, einer Variablen
einen Namen zu geben , der
genau angibt, wofür sie gedacht ist, da dies auch Lesen und Verstehen
unserer Skripte erleichtert Okay, da wir
also die Anzahl der
Klone in der Variablen speichern Klone in der Variablen und weil sie global sein
wird, können
wir es so etwas wie
Clone total in all caps nennen Okay, wenn wir auf
die Schaltfläche Okay klicken, haben
wir jetzt eine
Variable für die Gesamtanzahl der Klone in der Liste. Außerdem erstellt Scratch tatsächlich in jedem
Projekt
eine Standardvariable namens M-Variable. Es wird keine Probleme bereiten,
wenn wir die Variable behalten, aber wenn wir sie entfernen
möchten, können
wir dies tun, indem wir mit der rechten Maustaste
darauf klicken und Löschen wählen. Gleich neben der Variablen
Clone Total haben
wir ein Kontrollkästchen, das standardmäßig aktiviert ist. Das bedeutet lediglich,
dass der Name der
Variablen zusammen mit ihrem
Wert in der Phase angezeigt wird, und wir können
sie anklicken und verschieben, wenn wir wollen. Wenn wir mit der rechten Maustaste darauf klicken, können
wir auch das Erscheinungsbild ändern. Bei großen
Ablesungen wird beispielsweise
der Name ausgeblendet und der
Wertteil vergrößert Slider fügt unten einen Schieberegler
hinzu
, auf den wir klicken und
ihn ziehen können , um den Wert der
Variablen zu ändern Wenn wir erneut mit der rechten Maustaste klicken, haben
wir jetzt die Option
Schiebereglerbereich ändern, mit der wir die Mindest
- und Höchstwerte
ändern können
, die wir
mit dem Schieberegler festlegen können. Allerdings müssen wir das jetzt nicht
tun, also klicken wir auf Abbrechen und setzen
die Anzeige wieder auf die Standardeinstellung zurück, indem wir erneut mit
der rechten Maustaste darauf klicken und
normale Anzeigen wählen. Wenn wir die Variable schließlich ausblenden
möchten, können
wir entweder erneut mit der rechten Maustaste klicken
und Ausblenden wählen oder wir können einfach das Kästchen neben der Variablen in
der Blockpalette deaktivieren Variablen in
der Blockpalette Aber wir wollen tatsächlich den Wert der Variablen
sehen, also lassen Sie uns das Kästchen erneut Okay, jetzt wollen wir sehen, wie wir unsere neue
Variable
tatsächlich zum Laufen bringen können . Wir wollen also jedes
Mal, wenn wir einen neuen Klon erstellen, Wert der
Variablen um eins erhöhen. Dazu verwenden wir eine Änderung der Gesamtsumme des
Klones um einen Block. Also schnappen wir uns eins
und platzieren es ganz oben in der Liste, wenn
ich als Klonskript anfange. Wir
wollen es definitiv nicht in
den Wiederholungsblock einfügen , weil es
dann die Variable
zehnmal für jeden Klon ändert. Okay, und dieser Block wird
jedes Mal,
wenn ein Klon erstellt wird,
dem Wert der Variablen
Clone Total eine Eins hinzufügen dem Wert der Variablen
Clone Total . Wenn wir das jetzt ausprobieren, können
wir sehen, dass
der Wert von Clone Total kontinuierlich
um eins steigt. Das heißt, bis er 300 erreicht, dann hört er auf zu steigen. Das heißt,
sobald wir 300 Klone erreichen, läuft
das
Skript, wenn ich als Klon anfange, nie wieder Zum Glück können wir das aber ziemlich einfach
beheben. Wenn der
Wiederholungsblock eines Klons abgeschlossen und der Klon
vollständig transparent ist, müssen wir den Klon nur noch
löschen. Wenn wir das
Projekt jedoch beenden und erneut ausführen, beginnt die Gesamtvariable für
den Klonvorgang zunächst bei 300 und steigt von dort an. Das liegt daran,
dass Scratch den Wert einer Variablen nicht
jedes Mal, wenn wir ein Projekt ausführen, automatisch zurücksetzt. Stattdessen müssen wir es selbst
tun,
und wir können dies tun, indem wir die Gesamtsumme des
Klones auf einen Block von Null setzen. Wir wollen das tun, wann immer
wir auf die grüne Flagge klicken, und zwar vor der Endlosschleife, die
ständig neue Klone erzeugt Nehmen wir also die
Gesamtsumme der Klone auf Null und platzieren sie direkt
über dem Forever-Block Jedes Mal, wenn wir
das Projekt jetzt ausführen, wird
der Wert von clone total auf Null zurückgesetzt. Ordnung, um einen Klon zu löschen, müssen
wir zu Control gehen und hier haben wir
diesen Klonblock gelöscht. Schnappen wir
uns einen und setzen ihn am Ende
des Wiederholungsblocks ein, wenn ich
als Klon-Skript starte. Sobald der Wiederholungsblock fertig ist
und der Klon unsichtbar wird, der Block „Diesen Klon löschen ausgeführt und der Klon
wird gelöscht. Okay. Und wenn
wir einen Klon löschen, wollen
wir auch
den Gesamtwert des Klones um
eins verringern den Gesamtwert des Klones um , damit der Wert korrekt
bleibt. Dazu müssen wir zu den Variablen
zurückkehren
und eine weitere
Änderung vornehmen, um den Gesamtblock zu klonen. Wir können es jedoch nicht an das Ende des Blocks „
Diesen Klon löschen“
verschieben, da ein Klon nach dem
Löschen
nichts anderes tun kann . Platzieren wir es also zwischen
dem Block „Diesen Klonen löschen“
und dem Block „Wiederholen“. Dieses Mal wollen wir die Gesamtzahl
der Klone um eins verringern, also verwenden wir
eine negative Zahl als Eingabe. Wenn wir das Projekt jetzt ausführen, können
wir sehen, dass die Gesamtzahl der Klone
nie über neun steigt. Der Wert, bei dem es endet, hängt davon ab wie schnell oder langsam wir die
einzelnen Klone ausblenden lassen. Wenn wir beispielsweise
die Anzahl der Wiederholungen auf 20 und den
Ghost-Effekt um fünf ändern, haben
wir jetzt
maximal 19 Klone gleichzeitig auf der
Bühne Ordnung, und noch
eine Sache bevor wir diese Lektion beenden Sie haben vielleicht bemerkt, dass wir, nachdem wir etwas
an unserem Projekt geändert
haben, diesen
Link „Jetzt speichern“ oben
rechts in der Kopfzeile angezeigt bekommen . Wir können darauf klicken, um das Projekt
manuell zu speichern. Aber während wir
an dem Projekt arbeiten, speichert
Scratch das Projekt zu verschiedenen Zeiten automatisch für
uns. Wenn wir also nicht vorhaben
,
den Browser zu schließen , nachdem wir
einige Änderungen vorgenommen haben, die
wir behalten möchten, müssen
wir uns normalerweise keine Gedanken
darüber machen, unsere
Projekte manuell zu speichern. Ordnung. Und mit all dem, glaube
ich, haben wir eine
ziemlich gute Vorstellung davon, was wir jetzt
mit Scratch machen können Machen wir uns also an die Arbeit, um einige großartige Spiele zu
entwickeln.
6. Einige Muttermale schlagen Einführung: Das erste Spiel, das wir erstellen werden, ist ein Waka-Maulwurf-Klon namens SmCamles Wie bei Waka Mole wird der Zweck
des Spiels darin bestehen, so viele Maulwürfe wie möglich zu schlagen, bevor der Timer abläuft. In SMCamles
wird
der Schwierigkeitsgrad jedoch steigen, wenn der Spieler Es scheint ein einfaches Spiel zu sein, aber die Techniken,
die wir
bei der Erstellung lernen werden,
werden unglaublich
nützlich sein , wenn wir später im Kurs mit der
Entwicklung komplexerer
Spiele beginnen später im Kurs mit der
Entwicklung komplexerer
Spiele diesen Techniken gehören das
Erstellen eigener Sprites, Senden und Empfangen von
Nachrichten zwischen Sprites, Erstellen benutzerdefinierter Blöcke
und das Verwenden von Soundeffekten In Ordnung, lassen Sie uns anfangen.
7. Den Hammer-Sprite zeichnen: Wir können endlich unser Scratch Basics-Projekt und mit der Erstellung
eines neuen Projekts beginnen Dazu können wir im Menü
Datei die Option Neu auswählen. Und lassen Sie uns weitermachen und
das Projekt umbenennen , um ein paar Maulwürfe Okay. Und für dieses Projekt werden
wir Scratchcat nicht benötigen,
also können wir ihn entfernen, indem wir im Sprite-Fenster auf das Papierkorbsymbol
neben ihm klicken Auf Wiedersehen, Scratchcat.
Um ihn zu ersetzen, haben
wir ein paar Optionen Wie wir sehen können, wenn wir den Mauszeiger über die
Schaltfläche „Sprite auswählen“ hier unten Wir können ein Sprite
von unserem Computer hochladen. Wir können
uns von Scratch mit einem zufälligen Sprite überraschen lassen. Wir können unsere eigenen
Sprites erstellen und
aus einer Vielzahl von Sprites wählen
, die Scratch für uns bereitstellt Wenn wir auf diese Option klicken oder einfach auf
die Schaltfläche selbst klicken, gelangen wir zu dieser
Seite, auf der wir
alle verfügbaren Sprites sehen können , die wir in unseren Projekten verwenden können Wir können auch festlegen, dass
nur Sprites aus
einer bestimmten Kategorie angezeigt werden, und wir können nach einem
bestimmten Sprite suchen Es gibt
hier tatsächlich einige
wirklich gute Sprites und wir werden im Laufe des Kurses
einige verwenden Aber für ein Schlag-a-Maulwurf-Spiel brauchen wir wirklich
einen Hammer und wenn wir versuchen, nach Hammer zu
suchen, ist alles leer Das bedeutet also, dass wir lernen
müssen ,
unsere eigenen Sprites zu erstellen Klicken wir dazu hier auf
die Schaltfläche Zurück, um zum Scratch-Editor
zurückzukehren Und jetzt fahren wir wieder mit der Maus über die
Schaltfläche „Sprite auswählen Und dieses Mal wählen
wir Farbe. Wenn Sie auf Farbe klicken, wird in der
Sprite-Farbe ein neues Sprite
für uns
erstellt , das Sprite One heißt Da dies unser Hammer-Sprite
sein wird,
lassen Sie uns weitermachen und
den Namen in Hammer ändern Okay. Und wenn wir
hier im Kostüm-Tab nachschauen, können
wir sehen, dass der Sprite ein Standardkostüm
hat, das im Moment völlig leer
ist Also lass uns das reparieren. Um
ein Kostüm für ein Sprite zu zeichnen, haben
wir eine Reihe von Werkzeugen
, mit denen wir arbeiten können Wir haben das
Auswahlwerkzeug zum Auswählen, Verschieben und Ändern der Größe von Dingen Wir haben das Reshape-Tool
zum Umformen von Dingen. Wir haben das Pinselwerkzeug zum
Zeichnen von Pinselstrichen, das Radierwerkzeug zum
Radieren von Teilen von Kostümen, das Füllwerkzeug zum Ausfüllen von
Dingen mit Farbe, das Textwerkzeug zum Schreiben von Text, das Linienwerkzeug zum Zeichnen von Linien
und
die Kreis- und
Rechteckwerkzeuge zum Zeichnen
von Kreisen und Rechtecken Rechteckwerkzeuge zum Zeichnen Für einen Hammer benötigen wir
ein schönes großes Rechteck
, mit dem wir die Muttermale schlagen Wählen wir also das
Rechteckwerkzeug. Jetzt haben wir hier oben
zwei Optionen, um die
Farbe des Rechtecks einzustellen. Füllung bezieht sich auf die Farbe, die das Innere
der Form ausfüllt, und Kontur bezieht sich auf die Farbe
eines Umrisses, den wir um die Form
legen können, und wir können
die Breite des
Umrisses in diesem Feld angeben . Sehen wir uns zunächst an,
wie wir
die Füllfarbe ändern können , indem wir auf
den Pfeil neben der Füllung klicken. Und hier haben wir drei
Schieberegler,
mit denen wir arbeiten können , damit die Farbe
genau so aussieht, wie wir sie haben möchten Erstens haben wir Farbe, was sich auf die
tatsächliche Farbe wie Rot,
Orange, Gelb, Grün,
Blau usw. bezieht Orange, Gelb, Grün,
Blau usw. Als nächstes haben wir die Sättigung, was sich auf die
Reinheit der Farbe bezieht Sie diesen Wert nach links schieben, wird
der Farbe immer mehr Weiß
hinzugefügt, und wenn
Sie ihn ganz nach rechts legen , wird das gesamte
Weiß aus der Farbe entfernt. Schließlich haben wir die Helligkeit,
die, wenn wir sie verringern, der
Farbe Schwarz
hinzufügt, um sie dunkler zu Ich werde mein
Rechteck rein rot machen. Dazu
setze ich die Farbe auf Null und verwende 100 sowohl für die
Sättigung als auch für die Helligkeit. Okay, wenn wir jetzt auf den
Pfeil neben dem Umriss klicken, haben
wir dieselben Schieberegler zum
Einstellen der Konturfarbe Wir
benötigen jedoch eigentlich keinen Umriss
für das Rechteck,
also können wir ihn komplett ausschalten, indem wir hier auf den roten
Ford-Slash-Button klicken Das entspricht genau dem Setzen der
Umrissbreite auf Null Wir haben tatsächlich auch dieselbe Schaltfläche für die
Füllfarbe für den Fall, dass wir eine Form mit
nur einem Umriss oder
ohne Farbe
erstellen möchten,
sodass sie unsichtbar ist. Um nun ein Rechteck zu zeichnen, kommen wir zur
Leinwand. Bevor wir beginnen, vergrößern
wir die
Leinwand ein
wenig, damit wir diese kleinen
Schachbrettquadrate etwas besser sehen können , was uns bei der richtigen
Größenbestimmung der Formen hilft Zum Vergrößern können wir entweder auf
diese Schaltfläche mit der
Lupe und dem
Pluszeichen klicken diese Schaltfläche mit der
Lupe und dem
Pluszeichen oder wir können die Strg- oder Befehlstaste gedrückt halten und
das Mausrad
nach oben scrollen Das sollte gut sein. Und um
mit dem Zeichnen des Rechtecks zu beginnen, klicken und ziehen
wir Um das Zeichnen zu beenden, lassen
wir die Maus los. Jetzt können wir das Rechteck auch
auf der Bühne sehen. Wir haben auch diese
kleinen Kreise an den Ecken und
Seiten des Rechtecks. Wenn wir auf
diese klicken und sie ziehen, können wir ihre Größe ändern. Wenn Sie die Kreise nicht sehen, zum Auswahlwerkzeug
wechseln
und das sollten Sie zum Auswahlwerkzeug
wechseln
und das Rechteck auswählen, sie angezeigt bekommen Mit dem Auswahlwerkzeug können
wir das
Rechteck auch verschieben. Wir können auf einen leeren Bereich auf
der Leinwand klicken, um die Auswahl aufzuheben, und wir können
erneut darauf klicken, um ihn erneut auszuwählen Wir haben auch diese
beiden kleinen Pfeile in der unteren Mitte Maus darüber fahren,
wird
unser Cursor zu einer Hand Wenn wir klicken und ziehen, können
wir das Rechteck drehen Wir
wollen das Rechteck jedoch nicht wirklich drehen, also machen wir das rückgängig Um eine vorherige Aktion rückgängig zu machen, können
wir entweder
hier oben auf die Schaltfläche zum Rückgängigmachen klicken oder
Strg oder Befehl Z drücken. Dadurch könnte aus irgendeinem Grund auch die Umbenennung
des Sprites rückgängig gemacht Lassen Sie uns den
Namen also wieder in Hammer ändern. Und wenn das Rechteck ausgewählt ist, können
wir auch hierher kommen und die Farbe
ändern, wenn wir wollen. Aber ich bleibe
bei Rot. Jetzt werde ich die
Größe meines Rechtecks ändern, sodass es etwa 16 Blöcke
hoch und 11 Blöcke breit Jeder Block hat eine Breite und Höhe von vier Pixeln
. Wenn wir uns hier
oben die Kostüme ansehen, aktuelle Kostüm
meines Sprites, das momentan
nur aus dem Rechteck besteht ,
43 mal 63 Pixel groß Wenn ich es so mache, dass das
Rechteck
genau 11 mal
16 Quadrate abdeckt , wird es genau
44 mal 64 Pixel groß Aber auf jeden Fall muss die Größe
definitiv nicht
perfekt sein und Sie können gerne etwas Größeres oder
Kleineres
verwenden, wenn Sie möchten. Jetzt müssen wir
dem Hammer einen Griff geben. Dafür können wir das Line Tool
verwenden. Das Linienwerkzeug funktioniert nur mit der Konturfarbe und
ignoriert die Füllfarbe vollständig Gehen wir also hier rein und stellen die Umrissfarbe
nach Belieben ein Um alle Farben zu sehen, müssen
wir zunächst die Helligkeit erhöhen. Ich nehme das
Gelbe für meins. Und bei einer
Umrissbreite von eins wird
die Linie ziemlich dick sein. Also lass es uns
auf etwa 16 reduzieren. Jetzt fangen wir an, die Linie
irgendwo in der Nähe der vertikalen
Mitte des Rechtecks
zu
erstellen , aber etwa zwei oder drei Blöcke aber etwa zwei oder drei Blöcke links vom Rechteck. wir jetzt klicken und ziehen, können
wir eine Linie erstellen. Aber im Moment
bewegt sie sich in alle
möglichen Richtungen. Wenn wir eine
perfekt gerade Linie zeichnen wollen, können
wir die Umschalttaste gedrückt halten. Ich lasse meine
etwa 15 Blocks über die
rechte Seite des Rechtecks hinausragen . Aber auch hier
muss nichts davon perfekt sein. Der Hammer hat jetzt einen Griff, aber seit wir ihn
nach dem Rechteck gezeichnet haben, erscheint
er oben. Er sollte sich stattdessen hinter
dem Rechteck befinden, sodass es aussieht, als würde er durch
das Rechteck hindurchgehen und auf der anderen Seite
herausragen. Um die
Zeichenreihenfolge der Formen zu ändern, müssen
wir zuerst das Auswahlwerkzeug nehmen und eine der Formen
auswählen. Jetzt haben wir hier oben
diese vier Knöpfe. Vorwärts bringt es
über eine einzelne Form, rückwärts wird es
unter eine einzelne Form gebracht, vorne wird es über alle anderen Formen gebracht und zurück wird es unter
alle anderen Formen Da ich das Rechteck ausgewählt habe und es über der Linie platzieren möchte
, kann
ich entweder auf die
Vorwärts- oder
die Vordertaste klicken Vorwärts- oder
die Vordertaste Das sieht jetzt definitiv
eher nach einem Hammer aus. Okay, es gibt noch eine
Sache, die wir tun müssen,
um das Hammer-Sprites-Kostüm vorerst fertig zu stellen Lassen Sie uns zunächst
beide Hammer-Objekte auswählen. Dazu können
wir mit
dem Auswahlwerkzeug entweder mit dem Klicken und
Ziehen in einen leeren Bereich beginnen ,
wodurch ein Auswahlfeld entsteht. Alle Objekte, die sich innerhalb des Feldes befinden oder
das Feld
berühren, wenn wir die Maustaste
loslassen,
werden ausgewählt Oder wenn wir alles abwählen, können
wir eines
der Objekte auswählen,
dann die Umschalttaste gedrückt halten und auf das andere Objekt klicken,
um es ebenfalls auszuwählen Wenn wir nun anfangen, die Objekte zu
bewegen, sehen
wir in der Mitte
der Leinwand ein kleines Fadenkreuz der Mitte
der Leinwand Dies stellt die
Mitte des Kostüms dar. Immer wenn der Sprite
das Kostüm benutzt wir das Sprite
drehen,
passiert das ungefähr an diesem Punkt Das ist auch der Punkt, der um
unseren Mauszeiger herum zentriert
wird, wenn wir
das Sprite dazu bringen, dem Cursor zu folgen Wir können es später immer noch anpassen,
aber ich finde, dass es ziemlich gut funktioniert,
die Mitte in
der Nähe des Mittelpunkts auf
der langen Seite des
Griffs zu platzieren der Nähe des Mittelpunkts auf funktioniert,
die Mitte in
der Nähe des Mittelpunkts auf
der langen Seite des
Griffs Okay. Und wenn das erledigt ist, können wir anfangen, die Hammer-Sprites zu
programmieren, und das werden wir in
der nächsten Lektion tun
8. Den Hammer-Sprite programmieren: Um mit
der Codierung des Hammersprites zu beginnen, gehen
wir zur Registerkarte Code. Sobald wir
auf die grüne Flagge klicken, soll der Hammer zunächst
sofort
dem Mauszeiger folgen Wie wir im
Scratch Basics-Projekt gesehen
haben, können wir das tun, indem wir zuerst zu
Veranstaltungen gehen und dort einen Block einfügen, auf den die
grüne Flagge geklickt wurde Und weil wir wollen, dass der Hammer kontinuierlich der Maus
folgt, müssen
wir zur Steuerung gehen und
einen Block für immer einfügen, indem wir ihn am unteren Rand
des Blocks mit der grünen Flagge platzieren Damit der Hammer der Maus tatsächlich
folgt,
bewegen wir uns, nehmen einen Block mit der Option „Gehe
zu einer zufälligen
Position“,
platzieren ihn in dem Block für immer
und ändern ihn so, dass er als Mauszeiger
dargestellt Wenn wir das Spiel jetzt starten, folgt
der Hammer unserem Cursor. Fantastisch. Und wie wir sehen können, ist
der Punkt, den der Cursor berührt, derselbe wie der Mittelpunkt, den wir für das Hammerkostüm
festgelegt haben. Wenn wir das Spiel beenden
und den Hammer
ein wenig nach unten ziehen, sodass wir ihn sehen können, wenn wir den Hammer mithilfe
des Richtungsfeldes
im Sprite-Fenster drehen , dreht
er sich auch um
die Mittelpunkte Und eigentlich wollen wir, dass der Hammer etwas nach
oben
geneigt ist, denn wenn
der Spieler mit der Maus klickt, drehen
wir den Hammer
schnell um 90 Grad
nach unten und
dann Gehen wir also mit einer
Startrichtung von 130 vor. Wenn wir das Spiel jetzt ausführen, bleibt
der Hammer bei
einer Richtung von 130. Ordnung, damit sich der Hammer dreht, wenn wir mit der Maus klicken, müssen
wir zuerst überprüfen, ob mit
der Maus geklickt wird Um das zu tun, müssen wir zur
Sensorik gehen und
einen Mousedown-Block einfügen Wie wir im Projekt
Scratch Basics gelernt haben, handelt es sich dabei um einen booleschen Block
, der
entweder den Wert true oder false hat Es ist wahr, wenn eine Maustaste
gedrückt ist , und falsch, wenn
keine Tasten gedrückt sind Um also
den Blockwert tatsächlich zu verwenden, müssen
wir auch zur Steuerung gehen
und einen Wenn-und-Block einfügen und den
Block mit der Maus nach unten
als Bedingung verwenden. Damit wird alles, was
wir in den
If-Then-Block schreiben, nur ausgeführt,
wenn die Maustaste gedrückt ist. Wir wollen, dass zwei Dinge passieren
, wenn eine Maustaste gedrückt ist. Erstens wollen wir, dass sich der Hammer von seiner
Startrichtung von
130 auf 90 Grad
dreht 130 auf 90 Grad ,
sodass der rechteckige Teil perfekt senkrecht
steht. Dann wollen wir, dass er
sich wieder auf 130 dreht. Und wir werden für diese Rotationen eine schnelle
Animation verwenden. Fangen wir mit
dem abwärts gerichteten Teil an. Lassen Sie uns dafür zuerst
einen Wiederholungsblock einfügen und ihn in den
Wenn-Dann-Block Wir wollen, dass
die Animation ziemlich schnell abläuft. Lass uns dafür sorgen, dass es sich nur zweimal
wiederholt. Als nächstes wollen wir den
Hammer gegen den Uhrzeigersinn drehen. Gehen wir zur Bewegung über,
nehmen einen Block, der gegen den
Uhrzeigersinn gedreht wird,
und legen ihn in
den Wiederholungsblock und legen ihn in Okay. Und um die Richtung
des Hammers um 130-90 zu ändern, müssen
wir ihn um
insgesamt 40 Grad drehen Da wir
den Block zweimal wiederholen, sollten
wir den Hammer jedes Mal um die
Hälfte von 40 drehen. Also 20. Also, um den Hammer wieder
auf eine Richtung von 130 zu bringen, müssen
wir
das alles noch einmal machen, aber in umgekehrter Reihenfolge. Gehen wir also wieder zur Steuerung und fügen
einen weiteren Wiederholungsblock ein
und platzieren ihn
direkt unter dem anderen
, und platzieren ihn
direkt unter dem anderen aber immer noch innerhalb
des Wenn-Dann-Blocks. Und
vergessen wir nicht, auch
für diesen eine Zwei
als Anzahl der Wiederholungen zu verwenden auch
für diesen eine Zwei
als Anzahl der Wiederholungen zu Diesmal müssen wir den Hammer im Uhrzeigersinn drehen
. Gehen wir zur Bewegung über,
nehmen einen Block, der im Uhrzeigersinn gedreht wird, und legen ihn in den
leeren Wiederholungsblock Lassen Sie uns ihn erneut jedes Mal um
20 Grad drehen. Um das
gesamte Skript zum Laufen zu bringen, müssen
wir kontinuierlich die Überprüfung mit
der Maus nach unten durchführen. Das heißt, wir müssen
zur Steuerung gehen, einen Block für immer
schnappen und ihn um den
gesamten Wenn-Dann-Block
wickeln. Wenn wir auf das Skript klicken, können
wir jetzt in
die Bühne klicken , um unsere
Animation und Aktion zu sehen. Ziemlich cool. Wir haben allerdings ein
paar Probleme. Erstens, wenn wir eine Maustaste
gedrückt halten, wird
der Hammer kontinuierlich aktualisiert, ohne jemals anzuhalten. Das liegt daran, dass die gedrückte Maustaste nicht nur aktiviert wird, wenn
wir mit der Maus klicken, sondern sie bleibt auch so lange aktiv,
bis wir die Maustaste loslassen. Ein weiteres Problem besteht darin,
dass Scratch denkt, dass
Scratch denkt, in der Phase auf ein
Sprite klicken und es gedrückt halten dass wir
versuchen, das
Sprite zu bewegen,
wenn wir in der Phase auf ein
Sprite Wir haben auch gelernt, dass dies nur
passiert, während wir uns
im Scratch-Editor
befinden. Wir können
das verhindern , indem wir zum Vollbildmodus
wechseln Beim Testen des Spiels
kann
es jedoch ziemlich umständlich werden, ständig zwischen
Vollbild und
Scratch-Editor
hin und her wechseln Vollbild und
Scratch-Editor zu Wir können es also so einrichten, dass das Drücken einer bestimmten Taste wie
der Leertaste auch den Hammer
animiert Das ist normalerweise sowieso eine
gute Idee, weil manche Spieler
es vorziehen,
die Tastatur statt
der Maus zu benutzen die Tastatur statt
der , um
bestimmte Aktionen auszuführen Okay, also lasst uns
das Spiel beenden und um
den ITN-Block hierher
zu bekommen, der auch läuft, wenn eine Taste gedrückt
wird, mussten
wir nicht nur überprüfen,
ob eine Maustaste gedrückt ist,
sondern auch, ob eine bestimmte
Taste gedrückt ist Gehen wir also zunächst zur
Erkennung über und nehmen wir einen Block, bei dem eine Taste gedrückt wurde, und platzieren ihn für den Moment an einer
leeren Da dies
die einzige Taste sein wird , die
wir im Spiel verwenden werden, können
wir so ziemlich
jede Taste wählen, die wir wollen. Aber das Leerzeichen ist leicht zu merken, also werde ich mich darauf verlassen. Jetzt müssen wir die Werte
sowohl des Blocks mit der Maus nach unten als auch des Blocks
, bei dem die Taste gedrückt wurde,
überprüfen . Wenn wir dazu in
die Kategorie Operatoren gehen, haben
wir zwei Möglichkeiten, zwischen
dem Und-Block
und dem Or-Block zu wählen . Lassen Sie uns zunächst
den und den Block ausprobieren. Wir können einen in einen
leeren Raum hier drüben bringen. Dann können wir den Block mit der
gedrückten Maustaste als eine
der Bedingungseingaben und den mit der Taste gedrückten Block
als anderen Block verwenden. Lassen Sie uns nun den gesamten
Block und als Bedingung
für den Wenn-Dann-Block verwenden . Und versuchen wir es,
indem wir auf das Skript klicken. Wenn wir jetzt in die
Bühne klicken, passiert nichts. Und wenn wir die
Leertaste drücken, passiert immer noch nichts. Wenn wir jedoch eine Maustaste
gedrückt halten und gleichzeitig
die Leertaste
drücken , animiert sich der
Hammer Der Grund dafür ist, dass nblock-Wert wahr beide Bedingungen erfüllt sein
müssen,
damit der Wenn also nur eine der
Bedingungen falsch ist, der gesamte nblock falsch Um den Hammer zu animieren, geht es uns nur darum, dass entweder die Maus gedrückt ist oder die
Leertaste gedrückt wird, und genau dafür ist
der Or-Block Beim OR-Block muss
nur eine seiner
Bedingungen
wahr sein , damit der
gesamte Block wahr ist Fügen wir einen Or-Block ein und bewegen wir die Blöcke mit der
Maus nach unten und bei
gedrückter Taste vom
Block in den Or-Block. Jetzt können wir
den Block loswerden und
ihn durch den Or-Block ersetzen. Wenn wir das Skript jetzt ausführen, können
wir in
die Bühne klicken, um den Hammer zu animieren , oder wir können
die Leertaste drücken, um ihn zu animieren Jetzt müssen wir nur noch
das Problem lösen, dass der Hammer ständig animiert wird, während wir die Maus
oder die Leertaste
gedrückt halten es so halten
, wird es dem Spieler viel zu
einfach Um das Problem zu beheben, können
wir nach der
Animation des Hammers das gesamte
Script so lange anhalten lassen, bis der Spieler keine Maus- oder Leertaste mehr drückt Maus- oder Leertaste Um ein Script anzuhalten, bis eine
bestimmte Bedingung erfüllt ist, haben wir, wenn wir zur Steuerung wechseln, die Wartezeit bis zum Block Lassen Sie uns einen hinzufügen und ihn in den Block I thin,
aber unter
den
Wiederholungsblöcken platzieren, sodass er ausgeführt
wird, nachdem beide
Wiederholungsblöcke beendet sind. Wir wollen, dass der Block
das Skript macht.
Warten Sie, bis weder die Maus
gedrückt ist noch die
Leertaste gedrückt wird. Dies ist im Grunde
das Gegenteil
der Bedingung, die wir für den ITN-Block
verwenden Um das Gegenteil
einer Bedingung zu erhalten, haben wir, wenn wir zur Kategorie des
Operators wechseln, einen Knotenblock Der Knotenblock ist
wahr, wenn seine Bedingung falsch
ist, und falsch, wenn
seine Bedingung wahr ist Lassen Sie uns also weitermachen
und einen Knotenblock
in die Wartezeit legen , bis die Bedingungseingaben
blockiert Und jetzt wollen
wir innerhalb des Knotenblocks genau den gleichen
OR-Block verwenden , den wir für
die Bedingung I then blocks verwenden Anstatt
das Ganze erneut zu erstellen, wenn wir mit der rechten Maustaste auf den Block oder klicken, haben
wir
eine Option Wenn wir diese Option wählen, wird ein Duplikat
des gesamten Blocks
erstellt,
und jetzt können wir das Duplikat
in den Knotenblock einfügen Was
hier also passieren wird, ist, wenn entweder die Maus gedrückt ist oder die Leertaste gedrückt wird, der Block oder ist wahr, aber dann ist der
Block not falsch Und solange die Bedingung des
Wart-Unit-Blocks falsch ist, läuft
der Block kontinuierlich, quasi wie
eine Dauerschleife , und friert
praktisch
das gesamte Skript ein. Sobald aber weder
die Maustaste gedrückt noch die
Leertaste gedrückt wird, wird
der Block oder
falsch und der
Block not wird wahr,
wodurch das Warten
bis der Block beendet ist wird, wird
der Block oder falsch und der
Block not wird wahr, . Dann kann der
Forever-Block erneut beginnen prüfen, ob die Maus gedrückt oder die
Leertaste gedrückt ist. Nachdem diese lange Erklärung
geklärt ist, klicken wir auf das Skript, um zu
sehen, ob es tatsächlich funktioniert. Jetzt funktioniert das Klicken in die Bühne oder das Drücken der
Leertaste wie gewohnt. Wenn wir jedoch
entweder die Maustaste
oder die Leertaste gedrückt halten , animiert
der Hammer
einmal und stoppt dann Wir müssen jetzt zuerst die Taste oder Taste
loslassen und sie erneut drücken, wann immer
wir den Hammer schwingen wollen Perfekt. Jetzt hätten wir das
auch mit einem Block mit zwei Knopfblöcken
als Bedingungen Sie sich keine Gedanken darüber, ob Sie dem
folgen , denn ich werde es danach
löschen Aber nur um
dir zu zeigen, was ich meine, ich kann zuerst
einen ANN-Block einbauen und ihn
an einer leeren Stelle platzieren Jetzt verwende ich
für jede Bedingung einen Knopfblock. Als Nächstes dupliziere ich den
Mousedown-Block und lege ihn in
den ersten Knotenblock Dann dupliziere ich
den Tastendruck-Block und füge ihn in den
anderen Knotenblock Ich kann diesen
Knotenblock jetzt aus dem
Warte-Unit-Block entfernen und
ihn durch den Block ersetzen Wenn ich das Skript ausführe, funktioniert
es genauso Das liegt daran, dass, wenn
entweder eine Maustaste gedrückt ist oder die
Leertaste gedrückt wird, einer der
Knotenblöcke falsch sein wird, wodurch der
gesamte Block falsch wird Wenn jedoch weder
eine Maustaste
gedrückt noch die
Leertaste gedrückt wird, beide Knotenblöcke wahr, sodass auch der Block wahr Aber wie dem auch sei, ich wollte dir nur eine andere
Art
zeigen, Dinge zu tun Ich werde jetzt
den AN-Block loswerden und wieder
den Knotenblock verwenden Jetzt, wo wir mit diesem Skript
fertig sind, wollen
wir, dass es auch
läuft, wenn wir
auf die grüne Flagge klicken Es ist jedoch nicht möglich, zwei
Blöcke für immer miteinander
zu verbinden ,
da der unterste nie
die Chance hat, zu laufen. Außerdem funktioniert es, wenn wir versuchen,
den Ich-dann-Block von
hier wegzubewegen und ihn in
diesen Block für immer zu legen. Aber wenn wir den Hammer
schwingen, folgt
er kurzzeitig nicht mehr dem Cursor, bis die
Animation beendet ist. Eine bessere Lösung wäre die
Verwendung von zwei Skripten mit grüner Flagge. Gehen wir dazu zu Veranstaltungen, einen weiteren Block mit
grüner Flagge und hängen ihn an
diesen Block für immer an. Jetzt werden beide Skripte
ausgeführt, wenn wir auf
die grüne Flagge klicken. Also lass es uns versuchen. Okay? Der Hammer
folgt der Maus, und wenn wir ihn schwingen, animiert
er, während er immer noch der Maus
folgt Hervorragend. Okay, ich denke der Hammer braucht vorerst
eine Pause. Als Nächstes werden wir daran arbeiten, das Spiel
besser aussehen
zu lassen, indem wir einen
schönen Hintergrund dafür zeichnen.
9. Den Hintergrund zeichnen: Die Hintergründe von
Scratch-Projekten werden Hintergründe genannt, und wir können Hintergründe erstellen
oder hinzufügen indem wir das Bühnenfenster hier
neben dem Sprite-Fenster Wie bei Sprites
können wir einen Hintergrund hochladen, einen zufälligen Hintergrund
auswählen, unseren
eigenen erstellen oder einen aus
der Scratch-Bibliothek auswählen Wenn wir auf diese Option klicken, können
wir sehen, dass
Scratch
uns zahlreiche vorgefertigte
Hintergründe zur Auswahl bietet uns zahlreiche vorgefertigte
Hintergründe zur Unser Hintergrund wird jedoch
auch den Bereich umfassen, in dem die Muttermale
erscheinen werden, und wir müssen Lage sein
,
die Größe des Bereichs zu kontrollieren Das bedeutet, dass wir unseren eigenen Hintergrund
erstellen müssen. Gehen wir also zurück zum Scratch-Editor, indem wir hier oben auf
die B-Schaltfläche klicken. Und weil wir bereits
einen leeren Hintergrund haben , können
wir ihn auswählen. Und wenn wir jetzt
zur Registerkarte Hintergründe gehen, haben
wir
hier ein leeres Kostüm namens Backdrop One Nur zum Spaß können wir
den Namen in etwas
anderes wie Hintergrund ändern den Namen in etwas
anderes wie Hintergrund Okay, um mit der
Erstellung des Hintergrunds zu beginnen, zeichnen
wir einen blauen Himmel Dazu können wir uns
das Rechteckwerkzeug und eine schöne
himmelblaue Füllfarbe wählen Wir benötigen keinen
Umriss für das Rechteck, also stellen wir sicher, dass
er ausgeschaltet ist Okay, und wenn wir
Formen für einen Hintergrund zeichnen, nur die Teile innerhalb des weißen rechteckigen Bereichs
der Leinwand auf der Bühne
sichtbar Um also sicherzustellen, dass der Himmel die gesamte Bühne
bedeckt, können
wir damit beginnen, ihn
außerhalb des weißen Rechtecks zu zeichnen und
dann dafür zu sorgen, dass er
das gesamte Rechteck bedeckt. Als Nächstes zeichnen wir einige
schöne sanfte Hügel für den Bereich, in dem die
lästigen Maulwürfe erscheinen werden Klicken wir dazu zunächst
in einen leeren Bereich auf
der Leinwand, um
das Himmelsrechteck abzuwählen , damit
wir seine Farbe nicht ändern Dann wählen wir eine
grasgrüne Füllfarbe für das nächste Wir wollen, dass die Hügel
etwas mehr als die
untere Hälfte der Etappe abdecken etwas mehr als die
untere Hälfte der Etappe Fangen wir also außerhalb und
etwas oberhalb der Mitte
des Bühnenbereichs an und erstellen ein Rechteck,
das die gesamte untere Hälfte bedeckt. Das sieht
allerdings etwas
zu flach aus, um Hügel zu sein , also lassen Sie uns das korrigieren. Dazu haben wir
das umgeformte Werkzeug. Wenn das Werkzeug „Umformen“ aktiv ist, erhalten
wir Zugriff auf die Knoten einer Form Dabei handelt es
sich um kleine Kreise an den Ecken des Rechtecks Wir können auf die
Knoten klicken und sie ziehen, um das Objekt neu zu formen. Da wir jedoch nur die
Eckknoten
haben, haben wir nicht viel
Kontrolle über die Form, weshalb wir weitere Knoten hinzufügen
möchten Dazu können wir beispielsweise auf
den oberen Rand
klicken, um dort
einen neuen Knoten hinzuzufügen, und lassen Sie uns auf eine andere Stelle
in der Nähe klicken , um einen weiteren hinzuzufügen. Jetzt können wir mit den Griffen
, die von den Knoten ausgehen, sowohl
die
Positionen der Knoten
als auch die Krümmung anpassen der Knoten
als auch die Krümmung . Auf diese Weise können wir
einige schöne Hügelformen erstellen. Damit es noch besser aussieht, können
wir hier noch ein paar
Hügel hinzufügen. Lassen Sie uns zunächst alles
abwählen. Dann greifen wir
zum Rechteckwerkzeug , da diese Hügel weiter hinten liegen
werden Wir können eine hellere
grüne Füllfarbe Jetzt zeichnen wir hier ein
Rechteck,
das den gesamten Bereich abdeckt , und beginnen diesmal von der
rechten Seite. Wir möchten natürlich, dass dieses Rechteck hinter
der dunkleren Form erscheint. Lass uns hierher kommen und
auf die Rückwärts-Schaltfläche klicken. Jetzt können wir
das Umformungswerkzeug verwenden, Rechteck ein oder zwei Knoten
hinzufügen und es neu Sieht gut aus. Für den letzten Schliff können
wir dem Himmel noch ein paar
Wolken hinzufügen. Dazu können wir das Kreiswerkzeug
nehmen, die Füllfarbe auf Weiß
ändern, indem wir die Sättigung auf Null und die
Helligkeit auf 100
setzen , und für jede Wolke einige überlappende
Kreise
zeichnen Wir möchten, dass die Hügel vor
den Wolken
erscheinen , sodass wir das Auswahlwerkzeug
nehmen, eine der Hügelformen
auswählen,
dann die Umschalttaste gedrückt halten und auch die
andere Hügelform auswählen können. Jetzt können wir
sie in den Vordergrund stellen, Jetzt können wir
sie in den indem wir hier oben auf
die vordere Schaltfläche klicken Ordnung, jetzt
müssen wir nur noch die Muttermale zeichnen, was wir in
der nächsten Lektion tun werden
10. Kostüme für den Muttermal zeichnen: Bevor wir mit dem
Zeichnen des Maulwurfs beginnen können, müssen
wir zunächst
ein neues Sprite dafür erstellen wir also den Mauszeiger über die Schaltfläche „Sprite auswählen “ am
unteren Rand des Sprite-Fensters
und wählen wir „Farbe und Und lassen Sie uns weitermachen und den Namen in
Mole ändern. Okay, jetzt, für
die Maulwurfsgeister werden
wir drei Kostüme haben Das erste wird nur das Loch
sein,
das eine
einfache schwarze Ellipse sein wird Das zweite Kostüm wird
ebenfalls das Loch haben, aber es wird auch die
Oberseite des Maulwurfskopfes zeigen, als würde er gerade erst anfangen, aus dem
Loch herauszuspringen Und zum Schluss werden
wir ein Kostüm mit dem Loch und dem gesamten Kopf des
Maulwurfs Um den Maulwurf zu animieren, wechseln
wir schnell sein Kostüm vom ersten zum zweiten zum dritten, so aussieht, als würde er auftauchen
.
Dann kehren wir die
Kostüme um, damit er
wieder in das Loch geht, in
dem der Spieler ihn wieder in das Loch geht, in
dem der nicht mehr schlagen kann Für das erste Kostüm, bei dem es sich nur um das Loch handelt, können
wir den
Namen in unten ändern, da er für den Fall gilt,
dass der Maulwurf
vollständig unten im Loch ist Lassen Sie uns nun die
Leinwand ein
wenig vergrößern , damit wir das Schachbrett deutlich
erkennen können Als Nächstes nehmen wir
das Kreiswerkzeug, machen die Füllfarbe schwarz und stellen sicher, dass der
Umriss ausgeschaltet ist Dann zeichnen wir
eine Ellipse, die
ungefähr 16 Quadrate breit
und vier Quadrate hoch ist ungefähr 16 Quadrate breit
und vier Quadrate hoch Jetzt wollen wir das
Auswahlwerkzeug nehmen und
die Ellipse bewegen , bis ihr Mittelpunkt in der Mitte der
Leinwand einrastet Wie wir später sehen werden, wird
dies die
Dinge einfacher machen, wenn wir anfangen, dem
Spiel Effekte hinzuzufügen Ein Bug, den Scratch
derzeit hat, ist, dass es manchmal Teile des Kostüms
eines Sprites auf der Bühne abschneidet Kostüms
eines Sprites auf der Bühne Das ist momentan schwer zu erkennen, aber wenn wir die
Sprite-Größe auf etwa 120 erhöhen, können
wir jetzt deutlich
erkennen, dass ein Teil der oberen und
unteren Hälfte der Ellipse
abgeschnitten Teil der oberen und
unteren Hälfte der Ellipse
abgeschnitten Zum Glück
ist das aber recht einfach zu beheben. Um das zu tun, müssen
wir zurück
im Kostümeditor nur
ein Rechteck zeichnen, das
größer als die Ellipse ist und es vollständig bedeckt, dann die Füllfarbe des
Rechtecks ausschalten Wenn wir das Farbmenü schließen, können
wir jetzt sehen, dass bei der Ellipse keine Teile mehr abgeschnitten Und jetzt, wo ich darüber nachdenke, wenn wir den Hammer hier nach unten bewegen, sehen die Kanten des Rechtecks
auch etwas gezackt Wir können das mit
derselben Methode beheben, indem wir
ein unsichtbares Rechteck zeichnen , das das Rechteck des
Hammers vollständig bedeckt. Viel besser. Okay. Jetzt wählen wir wieder
den Maulwurfssprite aus, wie bei der Ellipse, wir können auch das unsichtbare Rechteck
auf
der Leinwand zentrieren , wenn Wir können es momentan nicht sehen, aber wenn wir das
Auswahlwerkzeug nehmen und an der Stelle klicken
und ziehen, wo sich das
unsichtbare Rechteck befinden sollte, können
wir es auswählen und seinen Begrenzungsrahmen
sehen Jetzt können wir es verschieben, bis sein Mittelpunkt in der
Mitte der Leinwand einrastet In Ordnung, und das war's
für das erste Kostüm. Für das nächste wollen wir
auch sowohl
mit der Ellipse als auch mit
dem unsichtbaren Rechteck beginnen sowohl
mit der Ellipse als auch mit
dem unsichtbaren Rechteck Wenn wir mit der rechten Maustaste auf das
unten stehende Kostümsymbol klicken, können
wir Duplikate auswählen und es wird eine exakte
Kopie des Dies wird
tatsächlich das dritte Kostüm sein,
bei dem der gesamte Kopf der
Maulwürfe zu sehen sein wird Denn wenn wir das zweite Kostüm
kreieren, das nur die
Oberseite des Muttermalwurfs zeigt, wird
es einfacher sein, mit dem gesamten Kopf zu beginnen und nur
die untere Hälfte zu
löschen Wir werden dem echten
zweiten Kostüm einen Namen geben. Also nennen wir das eins bis zwei. Okay, und um mit dem
Zeichnen des Maulwurfkopfes zu beginnen, können
wir das
Rechteckwerkzeug nehmen und eine braune Füllung wählen Jetzt können wir ein Rechteck zeichnen
, das nicht ganz so
breit wie die Ellipse ist, und
es bis zum
unteren Rand der Ellipse herunterfallen lassen es bis zum
unteren Rand der Ellipse herunterfallen Dann können
wir mit dem Werkzeug zum
Umformen einen neuen Knoten am oberen und unteren Rand
des Rechtecks hinzufügen und es so umformen , dass es etwas runder ist Für die Knoten
an den Ecken haben
wir keine Griffe zum
Anpassen der Krümmung,
aber wir können das beheben, indem wir einen
der Knoten auswählen und auf diese
gebogene Schaltfläche hier oben klicken Ich finde, das sieht
ziemlich gut aus für einen Maulwurfskopf. Als Nächstes müssen wir
dem Maulwurf ein Gesicht geben, und wir beginnen mit den Augen Dazu können wir
das Kreiswerkzeug nehmen, Weiß als Füllfarbe
wählen und hier eine Ellipse einzeichnen Lassen Sie uns nun die Auswahl aufheben, Schwarz als
Füllfarbe
wählen und für eine Pupille
eine weitere kleinere Ellipse innerhalb
der weißen Ellipse zeichnen für eine Pupille
eine weitere kleinere Ellipse innerhalb
der weißen Und wir können das Auswahlwerkzeug verwenden um alle notwendigen Anpassungen vorzunehmen Für das andere Auge duplizieren
wir diese beiden
Ellipsen und verschieben sie. Dazu können wir beide Ellipsen
auswählen. Wenn wir dann die Alt- oder
Optionstaste gedrückt halten , bevor wir sie
anklicken und ziehen, werden Duplikate
der Formen erstellt Wenn wir jetzt
die Umschalttaste gedrückt halten, können
wir sie an den anderen Ellipsen ausrichten Schließlich können wir
hier oben auf
die Schaltfläche „Horizontal umdrehen“ klicken oben auf
die Schaltfläche „Horizontal , um das
Auge horizontal umzudrehen, sodass es nach vorne
und nicht zur Seite schaut Okay, jetzt geben wir ihm eine Nase. Alles, was wir dafür brauchen, ist
eine weitere schwarze Ellipse. Als nächstes können
wir, um ihm ein paar Zähne zu geben, zuerst ein weißes
Rechteck unter der Nase zeichnen Dann können wir das Werkzeug
zum Umformen verwenden , um ihm
eine trapezförmige Form zu geben Okay, um das Kostüm fertig zu
zeichnen, sollten
wir dem Maulwurf ein paar Ohren geben Dazu nehmen wir zuerst das
Kreiswerkzeug und wollen dieselbe Füllfarbe
wie
der Kopf des Maulwurfs wählen dieselbe Füllfarbe
wie
der Kopf des Maulwurfs Um dies im Bedienfeld zur Auswahl
der Füllfarbe einfach zu tun , können
wir hier unten auf diese Pipette-Schaltfläche klicken Dadurch entsteht ein Kreis
um unseren Cursor und alles, was sich innerhalb des Kreises befindet,
wird vergrößert Wenn wir jetzt mit der Maus über die gewünschte Farbe
fahren und klicken, wird die Füllfarbe
auf die gewählte Farbe gesetzt Jetzt zeichnen wir hier
oben eine Ellipse für das Ohr. Dann zeichnen wir eine kleinere
schwarze Ellipse darüber. Ordnung. Nehmen wir nun das Auswahlwerkzeug und wählen
beide Eater-Ellipsen aus
und platzieren sie hinter dem Kopf, indem wir hier oben auf die
Zurück-Schaltfläche klicken Dann können
wir, wie bei den Augen, die
Ellipsen duplizieren, indem wir die Alt-Taste oder die
Wahltaste gedrückt halten , bevor
wir sie anklicken und ziehen Lassen Sie uns die Duplikate
hierher verschieben und dabei Umschalt-Taste
gedrückt
halten, damit sie am anderen
Ohr ausgerichtet Endlich können wir
sie horizontal umdrehen. Okay, um das Kostüm fertig
zu stellen, wähle
ich alle Kopfformen aus und achte
darauf, dass ich nicht
das unsichtbare Rechteck oder
die Ellipse für das Ganze auswähle , und ich werde alles
etwas besser auf dem Ganzen zentrieren In Ordnung, jetzt müssen wir nur noch
ein Kostüm kreieren. Für dieses Exemplar duplizieren wir
zuerst das Kostüm mit den oberen zwei und
benennen es in eins um. Und wir müssen die Kostüme
in der Liste hier tatsächlich neu anordnen Das liegt daran, dass
wir, wenn wir den Maulwurf animieren, von
Kostüm eins zu Kostüm zwei zu
Kostüm
drei und dann wieder zurück gehen zwei zu
Kostüm
drei Das obere Kostüm
muss also zwischen unten und oben liegen. Dazu müssen wir nur auf das Symbol klicken und es nach
oben
ziehen, bis es sich
zwischen den anderen
beiden befindet Symbol klicken und es nach
oben
ziehen, bis es , und dann loslassen. Okay? Für dieses Kostüm brauchen wir nur das Ganze,
das unsichtbare Rechteck und den oberen Teil
des Maulwurfskopfes Also müssen wir zuerst
die Teile der
Kopfformen, die wir wollen,
von den anderen Teilen trennen die Teile der
Kopfformen, die wir wollen,
von den anderen Teilen Um dies einfach zu tun, haben
wir das Radier-Tool Damit können wir
eine Größe für den Radierer festlegen. Dann müssen wir nur noch auf die Formen klicken und sie mit der Maus darüber ziehen, die
wir durchschneiden möchten Diese Objekte sind jetzt
vollständig getrennt. Nehmen wir nun
das Auswahlwerkzeug
und wählen alle unteren Teile aus
. Wir können sie löschen, indem wir
entweder hier oben auf
die Löschtaste klicken oder die
Löschtaste auf der Tastatur drücken. Ich werde auch diese kleinen
Teile der Augen hier löschen. Ordnung, jetzt
können wir alle verbleibenden Kopfteile auswählen und sie nach unten bewegen. Und wenn wir die Umschalttaste gedrückt halten, können
wir sie so einstellen, dass sie sich
nur vertikal bewegen. Und im Moment
befinden sich die Ohren hinter dem Loch, also lassen Sie uns das beheben, indem wir hier oben auf
die vordere Taste klicken. Schließlich können wir alles
abwählen dann mit dem Werkzeug zum Umformen unteren Teil
des Muttermalkopfes
korrigieren Ich denke, das sollte für die
Maulwurfssprites-Kostüme reichen. Wir können jetzt zwischen den
Kostümen hin
und her wechseln , um zu sehen, wie
die Animation aussehen wird Nicht schlecht. Und wir können den
Maulwurf und die Bühne bewegen Nun, ich weiß, dass es verlockend
sein könnte jetzt
überall auf der Bühne Maulwurfs-Sprites hinzuzufügen, aber wir werden damit tatsächlich bis etwas später
warten Der Grund dafür ist
, dass wir das Mold-Sprite viele Male duplizieren werden , um
die anderen Maulwürfe
zu erstellen Auch wenn Sprites
Duplikate voneinander sind, betrachtet
Scratch sie
dennoch als separate Das bedeutet, dass wir jedes Mal Änderungen an einem
der Mole-Sprites
vornehmen,
etwa indem
wir Code hinzufügen, dieselben Änderungen
an jedem anderen Maulwurf-Sprite etwa indem
wir Code hinzufügen, dieselben Änderungen
an vornehmen
müssen , wenn wir Änderungen an einem
der Mole-Sprites
vornehmen,
etwa indem
wir Code hinzufügen, dieselben Änderungen
an jedem anderen Maulwurf-Sprite vornehmen
müssen. Bei etwa einem Dutzend
Mole-Sprites auf der Bühne würde das ziemlich umständlich werden. Aus diesem Grund werden
wir die anderen
Mold-Sprites erst etwas später
erstellen Außerdem, wenn du früher mitgemacht
hättest, du vielleicht die Größe von
Sprite für Maulwürfe auf 120 geändert, so wie ich es getan habe Größe von
Sprite für Maulwürfe auf 120 geändert, so wie ich es getan Wir könnten sie wieder
auf 100 ändern, wenn wir wollen,
aber ich denke, sie
sieht bei 1:20 tatsächlich besser aus, also lasse ich meine
so, lasse ich meine
so Ordnung. Damit sind wir
nun bereit, Code zum Maulwurf-Sprite hinzuzufügen und seine Animation zum Laufen zu
bringen, und das werden wir in
der nächsten Lektion tun
11. Den Muttermal Sprite animieren: Um mit der Codierung des Maulwurf-Sprites zu beginnen, wir sicher, dass wir
das Sprite im Sprite-Fenster ausgewählt haben das Sprite im Sprite-Fenster Dann gehen wir zur Registerkarte Code. Erstes
sorgen
wir dafür, dass der Maulwurf aus dem Loch
auftaucht, wenn auf
die
grüne Flagge geklickt wird Dann, nach einer kurzen Verzögerung, geht
er wieder in
das Loch und wir lassen ihn das immer und immer wieder zu zufälligen
Zeiten machen Gehen wir also zuerst zu den Events und setzen einen Block ein, auf den die grüne
Flagge geklickt wurde Wenn wir auf die grüne Flagge klicken, wollen
wir sofort das Kostüm mit
den meisten Kostümen gegen das Daunenkostüm austauschen
, sodass er immer im Loch
anfängt Gehen wir also zu Looks und fügen grünen Flagge
einen Switch-Kostümblock hinzu Und lass uns
auf das Daunenkostüm umsteigen. Wenn wir jetzt auf die grüne Flagge klicken, beginnt
der Maulwurf
im Daunenkostüm Als Nächstes animieren wir den Maulwurf
und möchten, dass die Animation Gehen wir also zu Control und fügen am Ende der Skripts
einen Block für immer hinzu Damit der Maulwurf zu zufälligen Zeiten
auftaucht, können
wir eine
Zufallszahl zwischen,
sagen wir, eins bis 50 generieren , und wenn die Zahl eins ist, lassen
wir ihn auftauchen Lassen Sie uns also zuerst einen I- und dann
-Block zum Forever-Block hinzufügen. Wir wollen überprüfen, ob die Zahl , die wir generieren, gleich eins
ist. also für die Bedingung Gehen
wir also für die Bedingung zu Operatoren und fügen zuerst
einen Gleichheitsblock ein
und ändern wir die
50 hier in eine Eins Jetzt können wir uns einen zufälligen
Block aussuchen und ihn als erste
Eingabe für den Equals-Block verwenden Lassen Sie uns vorerst
eine Zahl von 1 bis 50 wählen. 50 mag wie
eine hohe Zahl erscheinen, aber wenn man bedenkt, wie schnell
Scratch die Stufe aktualisiert, ist
sie eigentlich nicht so hoch
und wir werden wahrscheinlich eine noch höhere Zahl
verwenden müssen eine noch höhere Zahl
verwenden sobald wir alle
Muttermale auf der Okay, also was auch immer wir
in den Block Ich dann schreiben passiert
nur, wenn die zufällig gewählte
Zahl gleich eins ist. Und wenn
das passiert, lassen wir als Erstes den Maulwurf aus dem Loch
auftauchen Um das zu tun, wechseln wir sein Kostüm zuerst auf
eins, dann auf oben zwei Und weil wir zwei Switches
durchführen werden, können
wir einen Wiederholungsblock
mit einer Zählung von zwei verwenden. Gehen wir also zu Control. Fügen Sie
dem IN-Block einen Wiederholungsblock hinzu und lassen Sie
ihn zweimal wiederholen. Um nun zum nächsten Kostüm zu
wechseln, können
wir zu Looks gehen und
einen nächsten Kostümblock
in den Wiederholungsblock einfügen . Danach müssen
wir es
erneut tun, aber in umgekehrter Reihenfolge, damit der Maulwurf
wieder nach unten geht müssen
wir es
erneut tun, aber in umgekehrter Reihenfolge, damit der Maulwurf
wieder nach Lassen Sie uns zuerst
den Wiederholungsblock
hier duplizieren und diesen
unter den anderen platzieren Dadurch könnte das Skript
automatisch gestartet
werden , sodass der Maulwurf jetzt völlig
verrückt wird Klicken wir auf Stopp, um ihm eine Pause zu
gönnen. Für den zweiten Wiederholungsblock wollen
wir
zum vorherigen Kostüm wechseln, nicht zum nächsten. Lassen Sie uns also den nächsten
Kostümblock
loswerden. Jetzt haben wir leider keinen vorherigen Kostümblock. Anstatt also
zum vorherigen Kostüm zu wechseln, müssen
wir
eins von der aktuellen
Kostümnummer abziehen eins von der aktuellen
Kostümnummer Dazu fügen wir zunächst
einen Switch-Kostümblock ein und
legen ihn in einen Switch-Kostümblock ein und den
leeren Wiederholungsblock Wenn wir nun zu Operatoren gehen und einen
Subtraktionsblock einfügen, können
wir ihn direkt hier im Switch-Kostümblock platzieren Gehen wir jetzt zurück zu Looks und holen
uns hier einen
Kostümnummernblock. Und benutze ihn als ersten Eingang
des Subtraktionsblocks. Der Block mit der Kostümnummer
steht für die Nummer des aktuellen Kostüms des
Sprites Um also die vorherige
Kostümnummer zu erhalten, müssen
wir sie nur um eins
subtrahieren Okay, wenn wir das Spiel jetzt starten, springt die Form zwar zu zufälligen Zeiten auf und
ab, aber die Animationen laufen so
schnell ab, dass wir sie
kaum sehen können Um das zu beheben, müssen wir den Animationen einige Verzögerungen
hinzufügen. Also lasst uns zuerst das Spiel beenden. Dann gehen wir zu Control
und holen uns einen Gewichtsblock und legen ihn direkt hinter
den nächsten Kostümblock. Eine Verzögerung von 1 Sekunde ist
definitiv zu lang. Lassen Sie uns also mit
etwa 0,1 Sekunden weitermachen. Wir wollen auch
die gleiche
Zeit warten , nachdem wir
zu einem vorherigen Kostüm gewechselt haben, also lassen Sie uns
den Warteblock duplizieren und ihn direkt unter dem
Switch-Kostümblock
platzieren. Jetzt können wir die Auf- und Ab-Animationen der Muttermale deutlicher erkennen Anstatt ihn jedoch sofort
nach dem Auftauchen wieder nach unten
gehen zu lassen, sollten
wir wahrscheinlich auch
eine Verzögerung zwischen den
beiden Animationen hinzufügen , zumindest zu Beginn des Spiels, um es für
den Spieler etwas
einfacher zu machen Also schnappen wir uns einen weiteren weiten Block und platzieren ihn genau zwischen
den beiden Wiederholungsblöcken Später, wenn wir es so einrichten, dass der Schwierigkeitsgrad des
Spiels steigen kann, werden
wir für diese Verzögerung andere
Werte verwenden, aber vorerst können wir sie auf 1 Sekunde
belassen. Lassen Sie uns auch weitermachen und nach
dem zweiten Wiederholungsblock einen Warteblock von 1 Sekunde
hinzufügen , um zu verhindern, der Maulwurf sofort wieder
auftaucht,
sobald er untergeht Wenn wir das Spiel ausführen, animiert sich
der Maulwurf Okay, jetzt, wo der Maulwurf aus seinem Loch auftauchen
kann, ist
der nächste logische Schritt, ihn so zu gestalten, dass wir ihn mit dem Hammer schlagen
können
12. Umgang mit Schichten: Bevor wir mit der
Codierung des Maulwurfssprites fortfahren, gibt es ein kleines Problem
, mit dem wir uns befassen müssen Wenn wir das Spiel erneut ausführen, Sie vielleicht feststellen,
dass der Maulwurf oben
auf dem Hammer erscheint Der Grund dafür
ist, dass Scratch die Sprites in der
Reihenfolge
zeichnet, in der wir die Sprites
bewegt haben ,
und dass die Stufe mit
dem zuletzt verschobenen Sprite letztes
gezeichnet wird, sodass
es Weil ich das Maulwurf-Sprite in
jüngerer Zeit verschiebe als
das Hammer-Sprite, wird
der Maulwurf auf den Hammer gezogen Wenn wir das Spiel beenden, unter anderem beheben, indem wir auf das Hammersprite klicken und es in die Bühne ziehen Das Hammer-Sprite ist jetzt das
zuletzt bewegte Sprite. Wenn wir das Spiel also erneut ausführen, erscheint
der Hammer jetzt
über dem Sobald wir
den Maulwurfssprite jedoch wieder bewegen, wird
er erneut
auf den Hammer gezogen Wir wollen, dass der
Hammer immer über
den Maulwürfen erscheint , sodass er für den Spieler
deutlich sichtbar ist Und weil wir irgendwann viele
Maulwurfs-Sprites im Spiel
haben werden, wird es ziemlich nervig werden, wenn wir uns entscheiden, ein Maulwurfs-Sprite zu
bewegen, auch jedes
Mal,
wenn wir uns entscheiden, ein Maulwurfs-Sprite zu
bewegen, auch das Hammer-Sprite bewegen zu viele
Maulwurfs-Sprites im Spiel
haben werden, wird es ziemlich nervig werden, jedes
Mal,
wenn wir uns entscheiden, ein Maulwurfs-Sprite zu
bewegen, auch das Hammer-Sprite bewegen zu müssen. Ein besserer Weg,
dieses Problem zu lösen, besteht also darin, mit Ebenen Ebenen und Scratch
bestimmen im Wesentlichen die Reihenfolge
, in der Sprites auf der Bühne
gezeichnet werden Sprites in den höheren
Ebenen werden
nach oder über Sprites
auf den unteren Ebenen gezeichnet nach oder über Sprites
auf den Um mit Ebenen zu arbeiten
, haben wir in der Kategorie Los zwei Blöcke Einen, um ein Sprite in
die vorderste oder hinterste Ebene zu verschieben, und einen, um
ein Sprite um eine bestimmte
Anzahl von Ebenen vorwärts oder rückwärts In einem komplizierteren
Spiel wie einem Rollenspiel müssen wir uns vielleicht mit ziemlich
vielen Ebenen auseinandersetzen Aber mit einem einfachen Spiel
wie Whack a Mole können
wir damit durchkommen, uns nur mit der
vorderen und Wenn wir zum Beispiel möchten, dass das Hammer-Sprite immer über den Mole-Sprites
erscheint, müssen wir nur zum Hammer-Sprite-Code gehen,
einen Block mit
der vorderen Ebene einfügen
und ihn an den Anfang eines
der mit grüner Flagge markierten Skripts hinzufügen Wenn wir nun das Spiel starten, wird
der Hammer
auf den Maulwurf gezogen. Selbst wenn wir das Spiel beenden
und den Maulwurfssprite bewegen, grüne Flagge klicken erscheint
der Hammer
wieder oben,
sobald wir auf
die Und das ist alles. Wir müssen uns keine Sorgen
mehr machen, dass die Maulwürfe
auf den Hammer gemalt werden, und jetzt können wir uns wieder an die
Programmierung des Maulwurfssprites
13. Maulwürfe schlagen: Wenn es darum geht,
einen Maulwurf mit dem Hammer zu schlagen, wollen
wir
dem Spieler das nur ermöglichen, wenn der Maulwurf entweder
auftaucht oder wieder heruntergeht,
aber nicht, wenn er vollständig im Loch ist aber nicht, wenn er Das heißt, wenn ein Maulwurf
sein Daunenkostüm benutzt, können
wir ihn nicht schlagen, aber wenn eines
seiner Up-Kostüme trägt,
können wir
ihn schlagen können
wir ihn nicht schlagen, aber wenn er eines
seiner Up-Kostüme trägt,
können wir
ihn schlagen. Schauen wir uns also an, wie wir das im
Code machen können. Nun, da wir in
diesem Green Flag-Skript bereits eine Dauerschleife
haben , in der
eine Menge Dinge vor sich gehen, wäre
es besser, ein neues Green Flag-Skript
zu starten. Gehen wir also zu den Veranstaltungen und bringen einen weiteren Block mit, auf den die grüne
Flagge geklickt wurde Okay, und wir werden kontinuierlich nach Kollisionen zwischen dem Maulwurfssprite
und dem
Hammersprite
suchen
wollen Kollisionen zwischen dem Maulwurfssprite
und dem
Hammersprite
suchen und Gehen wir also zu Control und fügen dem neuen Skript einen Forever-Block
hinzu Als Nächstes wollen wir nur dann nach Kollisionen
mit dem Hammer
suchen , wenn der Maulwurf entweder
ein Kostüm oder es
liegt an dem Kostüm Um das zu überprüfen,
fügen wir dem Forever-Block einen IN-Block hinzu Um den Kostümcheck durchzuführen, haben
wir zwei Möglichkeiten. Wir können einen
OR-Block verwenden, um zu überprüfen, ob das Maulwurfskostüm
entweder oben eins oder zwei höher ist,
oder wir können überprüfen, ob es sich bei dem Kostüm nicht um das Daunenkostüm
handelt der zweiten Option werden weniger Blöcke
benötigt, also lassen wir uns für diesen entscheiden Gehen wir also zunächst
zu Operatoren und verwenden
wir einen Not-Block als Bedingung für
den Wenn-Dann-Block. Für den Zustand
des Knopfblocks wollen
wir überprüfen, ob der aktuelle Kostümname mit dem
Daunenkostüm Nehmen wir also einen Gleichheitsblock und fügen ihn in
den Knob-Block Wie wir bereits gesehen haben, können
wir das aktuelle
Kostüm finden, indem wir
zu Looks gehen und einen
Kostümnummernblock verwenden Verwenden wir also einen als ersten
Eingang des Equals-Blocks. Jetzt könnten wir
hier die Kostümnummer verwenden , denn wenn wir
zur Registerkarte Kostüme gehen, sind
die Kostüme mit eins, zwei
und drei
nummeriert und wir verwenden diese Tatsache in der
Maulwurf-Animation, indem wir eins von der
aktuellen Kostümnummer
subtrahieren, um das vorherige Kostüm zu erhalten Für den Zustand hier könnten
wir überprüfen, ob die
Kostümnummer nicht gleich eins ist Wir können jedoch auch die
Summenzahl in den Summennamen ändern dann den Kostümnamen
als zweite Eingabe verwenden. Geben wir also das Wort ein und achten Sie
darauf, dass Sie
die exakte Schreibweise
als Kostümname verwenden . Es liegt ganz bei Ihnen,
welche Version Sie verwenden, aber ich finde, dass
die Verwendung des Kostümnamens das Verständnis
erleichtert. Okay, um das klarzustellen, was auch immer wir in
dieses „Wenn“ eingeben, wird der Block
nur dann passieren, wenn der Maulwurf sein Daunenkostüm
nicht trägt,
was bedeutet, dass er
eines seiner Up-Kostüme tragen muss Wir wollen jedoch nicht, dass der
Maulwurf getroffen wird, nur weil er ein Kostüm trägt und der Hammer ihn zufällig
berührt Stattdessen
wollen wir nur dann nach
Kollisionen suchen , wenn der Spieler tatsächlich den
Hammer schwingt Eine einfache Möglichkeit, dies zu tun
, besteht darin, zu überprüfen, ob
sich der Hammer bei 90° am unteren Ende seines Schwungs
befindet Im Mole-Sprite-Code können
wir
diese Prüfung also entweder durchführen, indem wir dem aktuellen Zustand der
ITN-Blöcke
einen N-Block hinzufügen ,
oder wir können verschachtelte ITN-Blöcke verwenden Ein verschachtelter Wenn-Dann-Block ist ein
wenn-dann-Block, der sich in einem anderen Wenn-Dann-Block und ihre Verwendung kann oft lesbarer
sein als ein einzelner, wenn dünner Block
mit einer ein
wenn-dann-Block, der sich in einem anderen Wenn-Dann-Block befindet,
und ihre Verwendung kann oft lesbarer
sein als ein einzelner, wenn dünner Block
mit einer wirklich langen Bedingung. Gehen wir zu Control und schnappen uns einen weiteren
Wenn-Dann-Block und lassen Sie uns ihn
innerhalb dieses Blocks einrasten , weil dieser dünne Block
innerhalb des äußeren Blocks verschachtelt ist
, den wir seine Eltern nennen können Ich renne nur, wenn der Zustand seiner
Eltern stimmt. Okay, wir wollen also bei dem Kind
nachschauen ob es blockiert ist, wenn die Richtung des
Hammers 90 ist. Gehen wir also zunächst
zu Operatoren und verwenden einen Gleichheitsblock als Bedingung für
den
inneren, wenn dünnen Block Lassen Sie uns weitermachen und
die zweite Eingabe auf 90 ändern. Um die Richtung
eines anderen Sprites zu ermitteln, können
wir zur Erkennung übergehen, und hier haben wir eine
Hintergrundnummer von Etappenblöcken Sie fragen sich vielleicht, was das mit der Richtung eines
Sprites zu tun
hat Aber wenn wir einen
in den Codebereich bringen, ist
Stage nicht die einzige
Option, die wir hier haben. Wir können auch jedes Sprite auswählen , das nicht das aktuell
ausgewählte Sprite Wählen wir also Hammer. Und jetzt entsprechen
die Optionen auf der linken Seite verschiedenen Attributen
des Hammersprites, einschließlich seiner Richtung, was genau das
ist, was wir wollen Jetzt können wir den Block als
erste Eingabe
des Equals-Blocks verwenden erste Eingabe
des Equals-Blocks Wir sind
mit den Kontrollen noch nicht ganz fertig, und das liegt daran, dass der Hammer im
Moment weit drüben
sein könnte, aber solange seine Richtung bei 90
liegt und der Maulwurf oben ist, werden
beide Bedingungen immer noch
zutreffen Jetzt wollen wir auch sichergehen,
dass sich der Maulwurf und der Hammer
tatsächlich berühren Dafür könnten wir wieder
einen weiteren verschachtelten IN-Block verwenden. Da aber
sowohl der
Berührungszustand als auch
der innere Zustand mit dem Hammer zusammenhängen, ist es in Ordnung, sie zu einem
einzigen Zustand zu kombinieren Um das zu tun,
gehen wir zu Operatoren und lassen Sie uns einen Block vorerst
in einen leeren Raum bringen. Lassen Sie uns nun
den Bedingungsblock
aus dem inneren
Wenn-Dann-Block herausziehen aus dem inneren
Wenn-Dann-Block und ihn als
erste Eingabe des Blocks verwenden. Um zu überprüfen, ob der Maulwurfssprite
den Hammer-Sprite berührt, können
wir zur Erkennung übergehen. Hier haben wir einen Block, Hier haben wir einen Block besagt,
dass der Mauszeiger berührt Aber wenn wir einen hineinbringen und ihn
innerhalb des Blocks einrasten, haben wir neben dem
Mauszeiger noch die Optionen Rand, was sich auf einen der
Bühnenränder bezieht, und Hammer, was wir wählen wollen Ordnung, jetzt
nehmen wir den Block und verwenden ihn als Bedingung für
den
inneren, wenn auch dünnen Block. Also, was auch immer wir
in den leeren, wenn auch
dünnen Block legen , passiert nur wenn der Maulwurf es nicht im Kostüm
benutzt Die Richtung des Hammers ist 90, und der Maulwurf
berührt den Ordnung, und um zu testen, ob
das alles richtig funktioniert, können
wir den Maulwurf sagen lassen, als ob
ich getroffen Um das zu tun, können wir nach Los gehen
und wir wollen nur, dass
der Maulwurf sagt, dass ich für kurze
Zeit getroffen wurde Nehmen wir also einen Block S vier
und legen ihn in
den leeren, wenn auch dünnen Block Jetzt können wir
den Text in Ich bin getroffen ändern
und ihn dazu bringen, es etwa
eine halbe Sekunde oder 0,5 Sekunden lang zu
sagen . Okay, wenn wir das Spiel jetzt
starten, haben
wir ein Problem,
zumindest ich schon, weil ich die Richtung
des Hammers
im Sprite Pain zuvor manuell auf 90 geändert habe, seine Richtung beginnt bei 90. Ich könnte das beheben, indem ich die
Richtung einfach manuell wieder auf 130 ändere Aber in einer späteren Lektion werden
wir dem Spiel einen
Timer hinzufügen. Und sobald der
Timer Null erreicht, das Spiel vorbei und die Skripte für alle
Sprites werden nicht mehr ausgeführt Wenn das passiert, während
der Hammer animiert ist, unabhängig von seiner Richtung, in der die Animation gestoppt wurde wird
unabhängig von seiner Richtung, in der die Animation gestoppt wurde
, dieselbe
Richtung sein, in der er
beginnt , wenn der Spieler das Spiel
neu startet, und das wird
alle möglichen Probleme verursachen Um sicherzustellen, dass
das nicht passiert, müssen wir dem Sprite nur sagen, in
welcher Richtung es beginnen soll, wenn
auf die grüne
Flagge geklickt
wird welcher Richtung es beginnen soll, wenn
auf die grüne
Flagge Okay, um das zu tun, beenden
wir das Spiel und stellen sicher, dass wir das
Hammer-Sprite ausgewählt haben Gehen wir nun zur Bewegung über und fügen wir einen Punkt
- und Richtungsblock hinzu Es spielt keine Rolle,
in welchem Drehbuch wir es mit
grüner Flagge platzieren , solange wir
es irgendwo vor einem
der Forever Blocks platzieren und die Richtung, in der
es beginnen soll, ist 130. Selbst wenn wir die Richtung
des Hammers
im Sprite-Fenster ändern , die Richtung wieder auf 130,
sobald wir auf
die grüne Flagge klicken Richtung wieder auf 130,
sobald wir auf
die Und wenn wir jetzt gegen den Maulwurf schwingen , während er
am
Boden ist, passiert nichts Aber wenn wir schwingen, während er wach ist, sagt
er, ich bin getroffen Und wenn wir hier
irgendwo hinschaukeln, sagt
er nichts,
selbst wenn er wach ist. Perfekt. Es gibt jedoch ein paar Möglichkeiten, wie
wir das verbessern können. Erstens können
wir den Maulwurf im Moment mehrmals treffen, solange er wach ist Wir können das noch
besser sehen, wenn wir zum Sprite-Code
des Maulwurfs gehen und ihn so gestalten, dass er sagt, ich werde nur für etwa
eine Zehntelsekunde getroffen Jedes Mal, wenn wir den Hammer
gegen den Maulwurf
schwingen , während er
wach ist, sagt er, ich werde getroffen Das könnte das sein, was wir wollen, aber wenn wir es so lassen, wird
es
für den Spieler ein bisschen zu einfach sein , Punkte
zu sammeln Es wäre also wahrscheinlich
besser, wenn wir dem Spieler
erlauben würden, jedes
Mal, wenn er auftaucht, nur einmal
einen Maulwurf zu treffen einmal
einen Maulwurf Und die zweite Verbesserung, die wir vornehmen
können, ist, dass derzeit jeder Teil des
Hammersprites den Maulwurf
treffen kann ,
auch der Auch das könnte das
sein, was wir wollen, aber sobald wir anfangen, dem Spiel
weitere Maulwürfe hinzuzufügen, wird
es für
den Spieler
viel zu einfach sein ,
mehrere Maulwürfe gleichzeitig zu treffen Ordnung, in
der nächsten Lektion werden wir sehen, wie
wir
diese Verbesserungen beim Maulwurfsmutschen
vornehmen können diese Verbesserungen beim Maulwurfsmutschen
14. Das Smacking verbessern: Die erste Möglichkeit, die
Dinge zu verbessern, besteht darin, sie
so zu gestalten, dass ein Maulwurf jedes Mal, wenn er auftaucht , nur einmal
getroffen wird Dazu müssen wir
verfolgen, ob der Maulwurf getroffen wurde oder nicht Und dafür müssen
wir eine Variable erstellen. Nachdem das
Maulwurf-Sprite ausgewählt ist, gehen
wir in die Kategorie
Variablen über Wir werden die
Standardvariable myvariable nicht benötigen. Wenn wir also mit der rechten Maustaste darauf klicken, können
wir Löschen wählen Lassen Sie uns nun eine
brandneue Variable erstellen indem wir auf Variable erstellen klicken. Diese Variable wird verfolgen
, ob ein bestimmter
Maulwurf getroffen wurde oder nicht Das bedeutet, dass der Wert für jedes
einzelne Maulwurf-Sprite
einzigartig sein wird jedes
einzelne Maulwurf-Sprite
einzigartig Wir müssen uns also nur
für dieses Sprite entscheiden. Und was den Namen angeht, sagen wir,
es tut weh. Dann klicken wir auf Okay. Okay, um
mit der Verwendung der Variablen Hurt
zu beginnen, müssen wir zunächst ihren Wert zu Beginn des
Spiels auf
False setzen Beginn des
Spiels auf
False , damit die Form
nicht mit Hurt beginnt Lassen Sie uns also ein Set T-Block und es an den Anfang eines
der mit grüner Flagge markierten Skripts hinzufügen Und lassen Sie uns den
Wert auf False setzen. Wir könnten auch eine Null für
falsch und eine Eins für
wahr verwenden , wenn wir wollten, was
in der Programmierung üblich ist, aber ich bleibe vorerst bei
wahr und falsch. Okay, jetzt müssen wir Hert auf true setzen , wann immer
der Maulwurf getroffen wird Lassen Sie uns also einen weiteren Block mit einem bestimmten
Hert-Wert nehmen, ihn irgendwo
im inneren
Wenn-Block
platzieren und
den Wert auf true setzen Und weil wir nur wollen, dass
der Maulwurf getroffen wird, wenn er nicht gerade verletzt ist, müssen
wir zu einem der Wenn-Dann-Blöcke den Zustand
„weh ist
falsch“ hinzufügen den Zustand
„weh ist
falsch“ Da der Name „Nicht
kostüm ist gleich schlechter Zustand“ auch
mit dem Maulwurf zusammenhängt, kombinieren
wir ihn mit dem Zustand „
Verletzt Um das zu tun, gehen wir zu Operatoren und bringen einen
UND-Block in ein leeres Feld. Lassen Sie uns nun den
Not-Block aus dem
I-Then-Block ziehen und ihn als eine
der N-Block-Bedingungen verwenden. Bei der anderen Bedingung werden
wir prüfen, ob der Wert der
Herzvariablen falsch
ist. Lassen Sie uns also zuerst einen
Gleichheitsblock einfügen. Um den aktuellen Wert der verletzten
Variablen zu ermitteln, können
wir zu Variablen gehen, einen Hetblock
schnappen und ihn
als ersten Eingang
des Equals-Blocks verwenden als ersten Eingang
des Equals-Blocks Und lassen Sie uns überprüfen, ob das gleich
False ist. Dann können wir all das
als Bedingung für
den I-Thin-Block verwenden als Bedingung für
den I-Thin-Block verwenden Und übrigens, wir
hätten auch
einen einzigen I-Thin-Block verwenden können, um
einen großen, konditionierten Block zu erzeugen,
aber ich denke, wir können uns darauf
einigen, dass die Verwendung von verschachtelten, wenn dünnen Blöcken
etwas einfacher zu lesen ist Und zu guter Letzt, damit
das alles richtig funktioniert, müssen
wir herausfinden, wann den
Herzwert wieder
auf „Falsch“ setzen müssen Ich denke, der beste Ort
dafür wäre nach dem
zweiten Wiederholungsblock hier, wenn die
Maulwurf-Animation
beendet ist und er sicher
wieder im Loch Lassen Sie uns anhand von Variablen einen weiteren Satz zum Block hinzufügen, und es spielt keine Rolle, ob
wir ihn über oder unter
dem endgültigen Gewichtsblock platzieren , da der Maulwurf in beiden Fällen bereits
wieder unten Verwenden wir den Block,
um hurt auf False zu setzen. Okay, wenn wir das Spiel jetzt starten, können
wir sehen, dass die Variable „Moles Hurt“ mit „Falsch“ beginnt,
und wenn wir
ihn schlagen, während er wach ist, ändert sich „hurt“ zu „
Wahr Wenn er dann wieder runter geht, ändert sich der Wert
wieder Und wenn Schmerz wahr ist, können
wir den Maulwurf nicht noch einmal verletzen Okay? Jetzt, wo wir wissen, dass die Variable hurt korrekt
funktioniert, müssen
wir ihren
Wert nicht mehr auf der Bühne sehen, also können wir mit der rechten Maustaste
darauf klicken und Hyde wählen Wie ich in
der vorherigen Lektion bereits erwähnt habe, kann derzeit jeder Teil des Hammers
den Maulwurf treffen Wir können das verbessern, indem es so einrichten, dass nur ein bestimmter
Teil des Hammers,
wie das rote Rechteck, den
Maulwurf treffen kann Ein einfacher Weg,
dies zu tun, besteht darin, nicht zu überprüfen, ob der Maulwurf den Hammergeist
berührt, sondern überprüfen, ob der Maulwurf den Hammergeist
berührt, ob er
eine bestimmte Farbe wie
das Rot des Hammers berührt eine bestimmte Farbe wie
das Rot des Lassen Sie uns dazu das Spiel beenden. Und wir
müssen den sich
berührenden Hammerblock
durch einen berührenden Farbblock ersetzen . Lassen Sie uns also zuerst den sich
berührenden Hammerblock loswerden. Lassen Sie uns dann zur Erkennung übergehen und ihn durch einen
berührenden Farbblock ersetzen. nun die Farbe so gestalten, Lassen Sie uns nun die Farbe so gestalten, dass
der Hammergeist auf der Bühne vollständig sichtbar
ist Gehen wir dann zurück
zum Maulwurfssprite im berührenden Farbblock Wenn wir im berührenden Farbblock auf das
Farbfeld klicken,
öffnet sich ein Dialog
zur Wir möchten
genau dieselbe Farbe
wie das Rechteck des Hammers verwenden ,
und das können wir tun, indem wir im Dialog auf die
Pipettentaste und
dann auf das Rechteck des dann Okay, jetzt können wir den Farbdialog
schließen, und wenn wir das Spiel erneut starten und den Hammer schwingen, wird
ein Treffer nur
registriert, wird
ein Treffer nur wenn das rote Rechteck den Maulwurf
berührt Das funktioniert ziemlich gut, aber wir könnten
es sogar noch weiter verbessern, indem ein weiteres kleineres Rechteck am unteren Rand
des roten Rechtecks Wenn wir dem
kleineren Rechteck eine
andere Farbe als die
anderen Teile des Hammers geben , können
wir seine Farbe bei
der Kollisionsprüfung verwenden. Okay, um das mit
dem ausgewählten Hammer-Sprite zu machen, gehen
wir zum Tab Kostüme Nehmen wir nun das
Rechteckwerkzeug, und für die Füllfarbe ist
es egal, was wir wählen,
solange es sich von
den anderen Farben im Kostüm unterscheidet den anderen Farben im Kostüm Ich entscheide mich für ein mittelgraues. Und wir wollen keine
Gliederung dafür, also stellen wir sicher, dass
es ausgeschaltet ist. Okay, jetzt fangen wir an, ein Rechteck etwas
oberhalb und außerhalb des unteren Randes
des roten Rechtecks zu
zeichnen oberhalb und außerhalb des , und wir möchten, dass es
sich bis zur anderen Seite erstreckt und
den unteren Rand
überlappt. Okay, jetzt gehen wir zurück zum
Code für die Mole-Sprites. Dann klicken wir
erneut auf
das Farbfeld im berührenden Klicken Sie auf die Pipette-Schaltfläche und wählen Sie diesmal
die Farbe des kleineren Rechtecks mit dem Wenn wir das Spiel jetzt starten, wird
ein Treffer nur registriert, wenn das kleinere Rechteck mit dem Hammer den
Maulwurf berührt Ordnung,
den Maulwurf sagen zu lassen, dass ich getroffen wurde, funktioniert okay, aber es ist langweilig Wie dem auch sei, ich glaube nicht
, dass Maulwürfe sprechen können Ab der nächsten Lektion werden
wir stattdessen einige
coole Grafikeffekte hinzufügen, die immer dann auftauchen , wenn
ein Maulwurf
15. Hit-Effekte hinzufügen: Um mit dem Hinzufügen von
Treffereffekten zum Maulwurf zu beginnen, wir zuerst
den sicheren Vier-Block loswerden, da wir ihn nicht mehr
benötigen werden Gehen wir dann zu Looks und bringen einen Block mit festgelegten
Farbeffekten für den
Moment in einen leeren Bereich Stellen wir das
Maulwurfskostüm zunächst
auf zwei ein, damit
wir ihn besser sehen können Dann geh zurück zum Code. Wenn wir nun die Eingabe im Block „Farbeffekt festlegen“ auf einen anderen Wert als Null setzen
und auf den Block klicken, ändert
sich der Farbton
der Molenfarbe Jeder Wert, den wir verwenden
, verleiht ihm einen anderen Farbton. Dies kann bis zu
einem Maximum von 200 sein, was ihn tatsächlich zu seinem ursprünglichen Farbton
zurückbringt. Wenn Sie höher als 200 werden, fangen Sie einfach
von vorne an. Zum Beispiel ist 250
tatsächlich dasselbe wie 50. Beachten Sie auch, dass dies
keine Auswirkung auf das Ganze hat, und das liegt daran, dass
das Ganze schwarz ist, was keinen Farbton hat. Ordnung, also können wir so
ziemlich jede Farbe verwenden , die
wir dafür wollen. Ich lasse meinen Maulwurf rötlich werden, wenn er getroffen wird,
und nachdem ich das getestet habe, habe ich festgestellt, dass ein Wert von
180 ziemlich gut aussieht Wenn Sie
beim Zeichnen Ihrer
Maulwurfskostüme unterschiedliche Farben verwenden , müssen
Sie möglicherweise mit dem Wert
herumspielen , bis Sie
etwas bekommen,
das Ihnen gefällt Okay? Jetzt können wir
diesen Block in den inneren, wenn auch dünnen Block verschieben, falls der Maulwurf getroffen wird Wir müssen jedoch auch den Farbeffekt
zurücksetzen. Wie beim Zurücksetzen der
Hert-Variablen auf False können
wir auch
hier
den Farbeffekt zurücksetzen, nachdem die Moles-Animationen Und dazu könnten wir
den Farbeffekt wieder
auf den Standardwert Null setzen , aber da wir
mehrere Grafikeffekte verwenden werden, die wir zurücksetzen müssen
, können
wir stattdessen einen
Block mit
leeren Grafikeffekten verwenden, können
wir stattdessen einen
Block mit
leeren Grafikeffekten verwenden um sie alle auf einmal zurückzusetzen Bringen wir also einen rein und platzieren ihn irgendwo hinter
den Animationen. Wenn wir das Spiel jetzt starten und den Maulwurf
schlagen, wird er rot. Aber wenn er wieder auftaucht, hat er wieder seine normale Farbe Okay, lassen Sie uns das Spiel beenden und für einen weiteren Effekt können
wir es so machen, dass sein Gesicht ein bisschen nach oben gedreht
wird Wenn wir also
einen weiteren Effekt zum Blockieren einsetzen, haben wir einen
weiteren Effekt, den wir haben, ist Wirbel Wenn wir den Maulwurf wieder in
das Kostüm oben umwandeln und den
Weltwert auf einen
anderen Wert als Null
setzen, den
Weltwert auf einen
anderen Wert als Null
setzen wird der Sprite in der Nähe der Mitte gedreht . jedoch zu hoch gehen, wirbelt das Ganze zu stark,
was Und wir können auch
negative Werte verwenden , um
die Weltrichtung umzukehren Ich denke, ich entscheide mich für etwas
ziemlich Subtiles wie zehn. In Ordnung, jetzt können wir
das
auch zum inneren, wenn auch dünnen Block hinzufügen ,
und lassen Sie es uns ausprobieren. Fantastisch. Das ist
definitiv eine Verbesserung gegenüber dem Block S Four, aber ich denke, es würde
noch besser aussehen, wenn wir eine
dieser coolen Kumpel-Grafiken im
Comicbuch-Stil
auf dem Maulwurf hätten dieser coolen Kumpel-Grafiken im
Comicbuch-Stil auf dem Maulwurf Schauen wir uns also in der nächsten Lektion an, wie wir
das machen können.
16. Die Pow Sprite erstellen: Um einen Pow-Grafikeffekt hinzuzufügen,
wenn der Maulwurf getroffen wird, müssen
wir zuerst den Pow-Sprite
erstellen Kommen wir also zur Schaltfläche „Sprite
auswählen und wir werden unsere eigene erstellen Also lasst uns Farbe wählen. Lassen Sie uns weitermachen und den Namen in Pow
ändern. Eine Pow-Grafik ist im Grunde nur eine Sternform mit einer
ganzen Reihe von Punkten. Und um eine zu erstellen, können wir
mit einem Kreis oder einer Ellipse beginnen. Nehmen wir also das Kreiswerkzeug. Und für die Füllfarbe nehmen
wir eine Orange. Lassen Sie uns nun die Leinwand ein wenig vergrößern und eine Ellipse zeichnen. Die Größe spielt im
Moment keine Rolle , da wir die
Form ziemlich stark ändern
werden und die
Größe später jederzeit ändern können Alles? Um nun
eine Sternform zu erstellen, können
wir damit beginnen,
das Werkzeug zum Umformen zu nutzen, drei Knoten
nahe beieinander zu
platzieren und den mittleren Knoten herauszuziehen Dann können wir
das rund um die Form wiederholen. Okay. Und wenn wir alle Ecken spitz
statt abgerundet machen
möchten, können
wir mit dem Reshape-Tool ein Auswahlfeld
über alle Knoten
ziehen Dann klicken Sie hier oben auf die spitze
Schaltfläche. Als Nächstes fügen wir
der Mitte dieser Form eine kleinere, hellere Version derselben Form hinzu. Dazu können wir zunächst das Auswahlwerkzeug
aufrufen, die Form
auswählen und eine Kopie davon
erstellen, indem wir
entweder
die
Schaltflächen zum Kopieren und Einfügen hier oben verwenden oder die Tastenkombinationen Strg
oder Befehl C zum Kopieren und Steuern oder
Befehl V zum Einfügen verwenden. Und lassen Sie uns das
Ganze noch hellgelb machen. Dann können
wir es mit dem SlecTol etwas verkleinern und es in der Nähe der Mitte
der anderen Form
platzieren Und vielleicht auch etwas drehen. Jetzt können wir beide
Formen auswählen und ihre Größe ändern. Und standardmäßig hält das Auswahlwerkzeug die Breite und
Höhe proportional Wenn wir jedoch die Umschalttaste gedrückt halten, können
wir die Größe nach
Belieben Eine Größe von etwa 75 mal 75
Pixeln sollte gut sein. Außerdem möchten wir darauf achten, die Formen
auf der Leinwand
mittig angeordnet sind. Das macht es einfacher, das Sprite auf dem
Maulwurf innerhalb der Bühne zu zentrieren Okay, wir sind mit dem
Zeichnen des Pow-Sprite fertig. Also lass es uns jetzt nutzen. wir dazu zunächst auf Gehen wir dazu zunächst auf den Code für
den Maulwurfssprite Irgendwo im inneren In-Block, wenn der Maulwurf getroffen wird, brauchen
wir eine Möglichkeit, den Pow-Sprite darüber zu informieren , dass er auf
dem Maulwurf erscheinen
soll Um das zu tun, haben wir in
der Kategorie Ereignisse Blöcke für das Senden
und Wenn ein Sprite eine Nachricht
sendet, wird
sie an alle Sprites im Projekt gesendet,
und die
Sprites können den
Block „Wenn ich erhalte“
verwenden, um auszuwählen, was sie tun sollen,
wenn sie die Nachricht erhalten um auszuwählen, was sie tun sollen,
wenn sie Wir wollen also, dass,
wenn ein Maulwurf getroffen wird, die Nachricht übertragen
und
wir wollen dann, dass der Kumpel
auf dem Maulwurf erscheint, wenn er die Für das Maulwurf-Sprite wollen
wir also entweder den Broadcast-Block
oder
den Broadcast-and-Wait-Block wählen oder Wenn wir den Block Broadcast
und Wait verwenden, pausiert
das Script,
bis alle Sprites die
Nachricht empfangen und
beantwortet haben Nachricht empfangen und
beantwortet Aber da wir dafür sorgen werden, dass das Po-Sprite nur
für einen kurzen Zeitraum angezeigt wird, ist es nicht notwendig, das Mol-Skript
anzuhalten Nehmen wir stattdessen den
normalen Broadcast-Block und platzieren ihn irgendwo
im inneren ITN-Block Im Moment senden wir
eine Nachricht namens Nachricht eins, die nicht sehr aussagekräftig Wenn wir jedoch darauf klicken,
haben wir die Möglichkeit, eine neue Nachricht
zu erstellen Wir können es
Maulwurfschlag nennen und auf Okay klicken. In Ordnung, jetzt gehen wir zum Code für
den Posprite. Bevor wir uns mit
der Meldung über den Maulwurfstreffer befassen, wollen
wir sie zunächst so gestalten, dass der Posprite nicht sichtbar ist,
wenn Dazu können wir
einen Block einfügen, auf den mit der grünen Flagge geklickt Dann können wir zu Looks gehen und dem Skript mit der
grünen Flagge
einen Block zum Ausblenden hinzufügen Skript mit der
grünen Flagge
einen Block zum Ausblenden Okay, um die Nachricht mit
dem
Maulwurf-Treffer zu bearbeiten, gehen wir zu Events
und starten ein neues Skript mit dem Block W
I receive Mohit Wenn das Pow-Sprite die Nachricht über
den Maulwurfstreffer erhält, werden
wir es so einrichten, dass es sich in kurzer
Zeit an die Position der Maulwurfssprites bewegt, sichtbar
wird und wieder
ausgeblendet ausgeblendet jedoch vorausschauend denken Wenn wir jedoch vorausschauend denken und alle
Maulwürfe zur Stufe hinzufügen, wird
es durchaus
möglich sein, dass der Spieler mehrere Formen gleichzeitig oder fast gleichzeitig
trifft Aus diesem Grund benötigen wir möglicherweise
mehr als einen Kumpel, um gleichzeitig
zu erscheinen,
und das bedeutet, dass wir Klone verwenden
müssen Wir können also, wenn der Kumpel die Nachricht über
den Maulwurfstreffer erhält, ihn zur Position
der Muttermale bewegen lassen und sich dort selbst klonen Nun, dann zeig den Klon
und lass ihn ausblenden. Okay? Also zuerst, um vom Kumpel Sprite zum Maulwurfskerl zu
wechseln,
lasst uns zur Bewegung übergehen Und fügen wir dem
W I receive Mohit-Skript einen Block „Gehe zu zufälliger Position Und natürlich wollen wir nicht
zu einer zufälligen Position wechseln. Wir wollen zum Maulwurf Sprite gehen. Um einen Klon
des Poe Sprite zu erstellen, können
wir als Nächstes zu Control gehen und
einen Block zum Erstellen eines
Klons von Ordnung. Um
dem Klon zu sagen, was er tun soll, starten
wir ein neues Skript mit einem Block „Wenn ich als Klon starte“. Da wir den
ursprünglichen Pow-Sprite verstecken, wird
der Klon auch
zuerst versteckt Also wollen wir zuerst den Klon
zeigen, indem nach Los
gehen und einen Show-Block
reinbringen Als Nächstes können
wir, nur zum Spaß, den Klon
immer heller machen. Gehen wir dazu zunächst zu Control und fügen einen Wiederholungsblock ein. Gehen wir dann zurück zu Looks und fügen dem
Wiederholungsblock blockweise eine Änderung hinzu. Wenn wir den Helligkeitseffekt verwenden, geht
der Wert auf 0-100,
wobei Null keinen Effekt hat und 100 das Sprite
komplett weiß macht Wir wollen, dass der Wert ziemlich schnell auf
0-100 steigt. Also lassen wir es fünfmal
wiederholen. Und ändere die Helligkeit
jedes Mal um 20. Schließlich blenden wir
den Klon aus. Gehen wir also zuerst zu Control und fügen
einen weiteren Wiederholungsblock ein, sodass er fünfmal wiederholt wird. Gehen wir dann zurück zu Los und fügen dem neuen Wiederholungsblock blockweise eine Änderung
hinzu. Dieses Mal wollen wir den Ghost-Effekt
verwenden. Der Ghost-Effekt
geht ebenfalls zwischen 0 und 100, wobei Null das Sprite vollständig undurchsichtig
macht und 100 es
vollständig transparent macht Damit das
Sprite also nach
fünf Wiederholungen vollständig
transparent wird , können
wir den
Ghost-Effekt jedes Mal um 20 ändern Wir sind aber noch nicht ganz
fertig. Im Rahmen des Scratch
Basics-Projekts haben
wir gelernt, dass wir mit Scratch
nur 300 Klone gleichzeitig auf der
Bühne
haben können 300 Klone gleichzeitig auf der
Bühne
haben Und obwohl der
zweite Wiederholungsblock den Klon unsichtbar macht,
wird der Klon nie wirklich
von der Bühne entfernt Es würde wahrscheinlich eine Weile
dauern,
bis 300 Po-Sprite-Klone im Spiel erreicht sind, aber es ist definitiv möglich Und sobald das passiert, keine Po-Sprites mehr Aus diesem Grund müssen wir
sicherstellen, dass der Klon
am Ende des Skripts gelöscht Gehen wir dazu zu Control und holen uns einen Block zum
Löschen dieses Klones, und platzieren wir ihn ganz unten
im Skript Wenn ich
als Klon starte. Ordnung, wenn wir das Spiel
jetzt starten, verschwindet
der Pow-Sprite Aber wenn wir den
Maulwurf treffen, erscheint ein
Pow-Sprite-Klon auf dem Maulwurf, weiß und
verblasst Nicht schlecht. Aber weil
wir die Mitte der Maulwurfskostüme auf die Mitte des Lochs gesetzt haben,
als wir sie gezeichnet haben, der Kumpel auch auf dem Loch
zentriert Es würde wahrscheinlich besser aussehen,
wenn wir es etwas anheben würden. Es gibt zwei verschiedene
Möglichkeiten, dies zu tun. Erstens, wenn wir in
den Tab Kostüme gehen, können
wir beide
Formen für das
Pow-Sprites-Kostüm auswählen und sie ein wenig nach oben
bewegen Wenn wir den Pow-Sprite zeigen, können
wir jetzt sehen, dass er auf dem Kopf des Maulwurfs erscheint und
nicht mehr
auf dem Nehmen wir jedoch an,
dass wir eines Tages beschließen, mehr
Kostüme für das Pow-Sprite zu kreieren, vielleicht zu Animationszwecken, und wir wollten das Sprite
und andere Projekte auch wiederverwenden reingehen und die Positionierung
der einzelnen Kostüme
anpassen zu müssen Jedes Mal reingehen und die Positionierung
der einzelnen Kostüme
anpassen zu müssen,
würde nicht viel Stattdessen
wäre es besser, die
Position mithilfe von Code anzupassen. Platzieren wir dazu zunächst die Formen wieder in der
Mitte der Leinwand. Gehen wir dann zur Registerkarte Code. Nachdem wir zur
Mole-Position gegangen sind, müssen wir nur noch die Y-Position der
Po-Sprites etwas nach oben bewegen Y-Position der
Po-Sprites etwas nach oben Gehen wir also zur Bewegung über, nehmen eine Änderung Y für
Block und platzieren sie direkt
unter dem Block „Gehe zum Maulwurf Wir können auf das Skript klicken
, um die Ergebnisse zu sehen. Es sieht so aus, als ob es funktionieren sollte, um
etwa 30 Schritte nach oben zu gehen. Ordnung. Um es zu testen, starten
wir das Spiel
und schlagen den Maulwurf Nett. Und im Moment taucht
der Pow-Sprite
vor dem Maulwurf auf,
was wir wollen Wenn wir jedoch das Spiel beenden
und den Maulwurfsgeist auf die Bühne bewegen,
dann starten wir das Spiel
und treffen den Das Po-Sprite
erscheint jetzt hinter dem Maulwurf. Um sicherzustellen, dass
das nicht passiert, müssen
wir das
Po-Sprite nur zu Beginn des Spiels auf die vordere
Ebene verschieben ,
wie wir es beim
Hammer-Sprite getan haben Gehen wir dazu im Pow-Sprite-Code zur Kategorie
Looks Schnappen Sie sich einen Block mit der vorderen Ebene und platzieren Sie ihn irgendwo im Skript mit
der grünen Flagge Wenn wir das Spiel
jetzt starten und den Maulwurf treffen, erscheint
der Pow-Sprite wieder
vor dem Maulwurf Allerdings erscheint es jetzt auch vor
dem Hammer. Der Grund dafür ist
, dass, wenn wir zwei oder mehr
Sprites auf die vordere Ebene bringen, wie wir es mit den
Hammer- und Pow-Sprites tun, Scratch sie in
der Reihenfolge zeichnet, in der sie
im Sprite-Fenster erscheinen Wenn wir also das Hammer-Sprite vor das Pow-Sprite
zeichnen wollen , können
wir auf das entsprechende
Symbol im Sprite-Fenster klicken und es so
ziehen, dass es sich rechts
neben dem Pow-Sprite-Symbol ziehen, dass es sich rechts
neben Wenn wir das Spiel jetzt starten,
zieht es den Hammer
vor das Pow-Sprite Du kannst deine gerne so behalten, aber ich mag es wirklich, wenn der Kumpel vor allem
auftaucht Also werde ich das Hammersprite
wieder dahin bringen, wo es
in der Sprite-Farbe war Okay? Nun, bevor wir diese Lektion
beenden, haben
wir ein kleines
Problem mit unserem Pow-Sprite Ich weiß, dass ich gesagt habe, dass
wir
die anderen Maulwürfe erst herstellen würden die anderen Maulwürfe erst wir mit dem Beschichten
des Maulwurfssprites fertig sind, aber lassen Sie uns weitermachen und zu Testzwecken noch ein
paar weitere herstellen paar weitere Dazu können wir mit der rechten Maustaste auf das Maulwurf-Sprite in
der Sprite
Paint klicken und Duplizieren auswählen.
Dann verschieben wir den neuen Maulwurf an eine beliebige Stelle in der Phase Und lass uns noch einen erstellen. Okay, wenn wir das Spiel starten, funktioniert es
immer noch korrekt, den ersten Maulwurf zu
treffen, aber wenn wir einen
der neuen treffen,
erscheint der Po-Sprite immer noch auf dem ersten Um zu sehen, warum das passiert, beenden
wir das Spiel und gehen
wir zum
Pow-Sprite-Code über Wenn der Posprite die Nachricht erhält, dass
der Maulwurf getroffen wurde, sagen
wir ihm, dass er zur Position des Maulwurfs gehen
soll Der Name Maulwurf
bezieht sich hier jedoch nur auf den Sprite
, der tatsächlich Wir haben jetzt auch Maulwurf
Zwei und Schimmelpilz Drei, und diese sind jetzt auch im
Go-to-Block erhältlich Damit
der Kumpel also auf dem richtigen Maulwurf auftaucht, brauchen
wir eine Möglichkeit, ihm mitzuteilen, welcher Maulwurf brauchen
wir eine Möglichkeit, ihm mitzuteilen oder
welche Maulwürfe Wir könnten das tun, indem für jeden Maulwurf eine separate
Treffernachricht senden,
wie zum Beispiel zwei Treffer bei Schimmelpilzen, drei Treffer bei
Mod usw. Aber das wäre ziemlich
zeitaufwändig und nicht
sehr praktisch Eine viel bessere Methode
wäre es,
einige Informationen
für die getroffenen Muttermale
in einer Variablenliste zu speichern einige Informationen
für die getroffenen Muttermale . Wie das geht, erfahren
wir in der nächsten Lektion
17. Verwenden von Variablenlisten: Um eine Variablenliste
zu erstellen und nachzuverfolgen, welche
Formen getroffen wurden, wählen
wir das
erste Maulwurf-Sprite Gehen wir dann zur Kategorie Variablen über
. Und hier klicken wir auf
die Schaltfläche Ma List. Die Liste muss allen Maulwürfen
sowie dem Kumpel Sprite
zur Verfügung stehen sowie dem Kumpel Sprite Also müssen wir daraus eine globale
Liste
machen , indem wir
für alle Sprites auswählen Und was den Namen angeht,
können wir es Hit Moles nennen. Und weil es global ist, verwende
ich nur Großbuchstaben In Ordnung, jetzt klicken wir auf Okay. Damit haben wir jetzt
einen neuen HIT-Moles-Block sowie eine ganze
Reihe von Blöcken für Arbeit mit der
Liste, wie das Hinzufügen,
Löschen, Einfügen
und Ersetzen von Elementen, und für die Überprüfung des
Inhalts der Wir können die
Liste auch innerhalb der Bühne sehen
und sie, wie bei anderen Variablen,
verschieben In Ordnung, schauen wir uns an, wie
wir anfangen können, die Liste zu verwenden. Das Erste, was wir
tun wollen, ist, wenn ein Maulwurf getroffen wird, wir wollen der Liste etwas
hinzufügen, das
der PW-Sprite verwenden kann, um am Standort
dieses
Maulwurfs einen Klon zu erstellen Wenn wir den
POW-Sprite-Code auschecken, verwenden
wir im Moment den Go-to-Block, um zu zu wechseln Es wäre schön, wenn wir einen HIT MO Sprite erstellen
könnten, seinen Namen zur Liste
hinzufügen könnten,
dann könnte der Po-Sprite diesen Namen im
Go-to-Block
verwenden Wir haben jedoch eigentlich
keine Blöcke, die es uns ermöglichen, einen
Sprites-Namen zu erhalten Stattdessen können wir der Liste
weitere X- und
Y-Positionen der Sprites hinzufügen und
dann den Po-Sprite mithilfe
des Blocks Gehe zu XY an
diesen Ort bringen mithilfe
des Blocks Gehe zu XY an
diesen Ort Gehen wir dazu zurück
zum Moor-Sprite-Code. Wir werden den Standort von Mores zur Liste hinzufügen , bevor wir
die Mohit-Nachricht senden Außerdem
müssen wir die X
- und Y-Positionen der Mauren als separate
Elemente in die Liste aufnehmen - und Y-Positionen der Mauren als separate
Elemente in In der Kategorie Variablen verwenden
wir also den Block Zwei hinzufügen, um ein Element zu einer Liste den Block Zwei hinzufügen, um ein Element zu einer Liste hinzuzufügen Lassen Sie uns also zwei Moresblöcke
hinzufügen sie direkt über dem Block mit mehr
Treffern
platzieren Für das erste Hinzufügen von zwei Blöcken gehen
wir zur Bewegung über, nehmen einen Positionsblock und
verwenden ihn als Eingabe Dann machen wir dasselbe mit einem Y-Positionsblock für
den anderen Block „Zwei hinzufügen“. Okay, wenn wir das Spiel jetzt starten, jedes Mal, wenn wir hier den
ersten Maulwurf treffen, werden
jedes Mal, wenn wir hier den
ersten Maulwurf treffen,
seine X- und Y-Positionen zur Liste hinzugefügt die anderen beiden Formen treffen der Liste jedoch
nichts
hinzugefügt,
und das liegt daran, dass
wir die Blöcke
zum Hinzufügen von zwei Formen noch nicht zu
den anderen Formen hinzugefügt Blöcke
zum Hinzufügen von zwei Formen noch nicht zu
den anderen Das werden wir gleich beheben. Aber zuerst, wenn wir das
Spiel beenden und es erneut starten, die Liste der getroffenen Maulwürfe immer
noch Gegenstände Wie bei anderen Variablen müssen
wir den Inhalt
einer Liste zurücksetzen, müssen
wir den Inhalt
einer Liste zurücksetzen wenn das Projekt zum
ersten Mal ausgeführt wird Wir könnten das innerhalb
des Mole-Sprite-Codes tun, aber da
wir genau denselben Code für
alle Mole-Sprites verwenden
werden , würde
jeder Maulwurf den Inhalt der Liste
zurücksetzen, was unnötig wäre aber da
wir genau denselben Code für
alle Mole-Sprites verwenden
werden, würde
jeder Maulwurf den Inhalt der Liste
zurücksetzen, was unnötig wäre. Also könnten wir es stattdessen
entweder im Hammer-Sprite- oder im PW-Sprite-Code tun entweder im Hammer-Sprite- oder im PW-Sprite-Code Irgendwann werden wir jedoch einige globale
Variablen in unserem Spiel
haben,
und wenn wir sie
alle in einem
dieser Sprites zurücksetzen, wird der Sprites-Code Außerdem wäre es nicht wirklich
sinnvoll, Variablen
innerhalb eines Sprites zu handhaben, das die Variablen innerhalb eines Sprites zu handhaben, das die möglicherweise nicht einmal Ich finde also, dass der beste
Weg , mit Dingen
wie dem Zurücksetzen
globaler Variablen umzugehen , darin besteht,
dies innerhalb des Codes
für den Hintergrund zu tun dies innerhalb des Codes
für den Hintergrund Und ja, genau wie Sprites haben
Hintergründe ihren eigenen Da wir also den Inhalt
der HIT-Ms-Liste
löschen wollen ,
sobald das Spiel beginnt, benötigen
wir hier ein Skript mit grüner
Flagge Gehen wir also zu den Events und bringen einen Block ein, auf den die grüne
Flagge geklickt wurde Um den
Inhalt einer Liste zu löschen, haben wir als Nächstes, wenn wir zu Variablen wechseln, wenn wir zu Variablen wechseln,
den Block „Alle löschen Also schnappen wir uns einen und fügen ihn
dem Green Flag Script hinzu. Wenn wir das Spiel jetzt starten, die HIT-Formliste
am Anfang leer Okay, jetzt machen wir
es so, dass wir auch
die Standorte der
anderen Formen zur Liste hinzufügen können die Standorte der
anderen Formen zur Dazu könnten wir einfach
die Sprites Mod zwei und Mod
Three löschen und neue Duplikate
des ursprünglichen Mul Sprite erstellen Da wir aber nur
ein paar Codeblöcke haben ,
um zwei Mod zwei
und Mod drei hinzuzufügen, können wir stattdessen die Blöcke aus dem
ursprünglichen
Mul Sprite kopieren die Blöcke aus dem
ursprünglichen
Mul Sprite Gehen wir dazu in den
ursprünglichen Mol Sprites-Code ein. Die beiden Blöcke, die wir
kopieren möchten, sind die beiden addieren zwei Blöcke Dazu können wir auf die Blöcke
klicken und sie auf das Sprite der beiden Formen
im Sprite-Fenster ziehen der beiden Formen
im Sprite-Fenster und Wenn wir jetzt in den Code der
Mod-Zwei-Sprites gehen, können
wir sehen, dass er jetzt die Blöcke „Zwei hinzufügen“ enthält ,
die wir kopiert haben Es hat auch den
Broadcast-Maulwurf-Trefferblock mitkopiert
, den wir nicht benötigen, sodass
wir ihn loswerden können Und jetzt können wir die beiden Blöcke „Zwei
hinzufügen“ in Mod drei kopieren und sie
dann an die
richtige Stelle für Mod
zwei setzen, sie
dann an die
richtige Stelle für Mod
zwei setzen bevor wir Mohit senden Und lass uns
dasselbe für Mod drei machen. Okay, wenn wir das Spiel jetzt spielen, können
wir
die Standorte aller
3 Maulwürfe zur Liste hinzufügen die Standorte aller
3 Maulwürfe zur Liste Jetzt müssen wir nur noch dafür sorgen, dass der P Brite die Standorte tatsächlich
nutzt Gehen wir dazu
in den Pobrts-Code. Wir wollen, dass der Pprite
nicht den Go-to-Block verwendet, um zu einem bestimmten Maulwurf zu
gelangen,
sondern den Go-to-Block verwendet, um zu einem bestimmten Maulwurf zu
gelangen, jedes X- und
Y-Positionspaar aus der Liste abrufen , dann zu diesem Ort gehen
und Lassen Sie uns also zuerst
den Block „Gehe zu Mole“ entfernen. Dann ersetzen wir
ihn durch einen Block „Gehe zu XY“ aus der Kategorie
Bewegung Und lassen Sie uns diese
Blöcke wieder an das Skript anhängen. Da der
Palprite nun jedes Mal, wenn er die Nachricht über
den Maulwurfstreffer empfängt,
einen Klon erstellt jedes Mal, wenn er die Nachricht über
den Maulwurfstreffer empfängt,
einen Klon mussten
wir nur zum Ort
der ersten
beiden Elemente in der Liste gehen Ort
der ersten
beiden Elemente in der Liste diese Elemente
dann entfernen ,
sodass er beim nächsten
Empfang der Nachricht zum Speicherort
der nächsten beiden Elemente gehen kann und Okay, um die ersten
beiden Elemente in der Liste zu finden, gehen
wir zu Variablen Und lassen Sie uns ein Blockelement nehmen. Und wir wollen
einen für jede der Eingaben
im
Go-to-XY-Block verwenden . Für X
wollen wir Punkt eins bekommen, nämlich die Position der Muttermale Aber für Y wollen wir Punkt zwei, nämlich die Y-Position Und schließlich wollen wir die
Punkte eins und zwei aus der Liste entfernen . Dazu fügen wir zwei Blöcke zum
Löschen von Blöcken platzieren sie irgendwo
zwischen dem Block Gehe zu X Y und dem Block
Create Clone. Es könnte den Anschein haben, dass wir die Eingabe für
das zweite Löschen eines Blocks ändern müssen , um Element zwei
statt Element eins zu
löschen. Wenn wir jedoch das erste Element
löschen, alle anderen Elemente in der Liste
nach oben verschoben. Also wird der zweite der erste, der dritte wird der
zweite und so weiter. Aus diesem Grund müssen wir Element eins
tatsächlich zweimal
löschen. Und wenn wir das Spiel jetzt spielen, taucht der Kumpel auf jeder Form
auf, die wir schlagen Wir haben allerdings ein kleines
Problem,
und das passiert nur, wenn wir
mit einem einzigen Schlag auf zwei oder mehr Formen Wie wir sehen können, erscheint das Pal-Sprite
nur auf einer der Formen und
die Position der
anderen Form wird
nicht aus der Liste
der Hit-Formen gelöscht Das klingt ziemlich seltsam, hat
aber tatsächlich damit zu tun, wie Scratch mit Nachrichten
umgeht,
und es ist ein häufiges Problem, das ich Projekten von Scratcher-Anfängern
sehe In der nächsten Lektion werden wir mehr
über
das Problem erfahren und
lernen, wie es behoben werden kann
18. Die Pow-Klone reparieren: Wie wir in der
vorherigen Lektion gesehen haben, wenn wir zwei oder
mehr Formen gleichzeitig treffen, Pow-Sprite,
wenn wir zwei oder
mehr Formen gleichzeitig treffen,
nur auf einer von ihnen,
und die Liste der Treffer-Formen wird
nicht gelöscht,
und jetzt
erscheint und die Liste der Treffer-Formen wird
nicht gelöscht, der Pow-Sprite nicht an der
richtigen Stelle Der Grund dafür ist, dass
jedes Mal, wenn wir zwei Maulwürfe
mit einem einzigen Schlag treffen,
gleichzeitig zwei Maulwurfsmeldungen gesendet Wenn also der Pal-Sprite den ersten
empfängt, bevor er das Skript „Als ich
Maulwurf erhalten“ ausführen kann, empfängt
er
die zweite Nachricht über einen Maulwurfstreffer, der die erste überschreibt bevor er das Skript „Als ich
Maulwurf erhalten“ ausführen kann, empfängt
er
die zweite Nachricht über einen
Maulwurfstreffer, der die erste überschreibt. Daher läuft das Script eigentlich
nur ein einziges Mal. Es erstellt also nur einen Klon an
der Position, an der die Mole zuerst getroffen wurde und entfernt die
Position aus der Liste Wenn wir dann einen anderen Maulwurf treffen, verwendet
er den übrig gebliebenen
Standort für den nächsten Klon, und von da an gerät alles aus dem
Ruder Und wir haben im Moment tatsächlich
ein weiteres mögliches Problem mit unserem Code in Bezug auf Klone Klone und Scratch werden als separate Sprites
behandelt
und sie erhalten dieselben Skripte
wie das Sprite, und sie erhalten dieselben Skripte
wie das von dem
sie Das bedeutet, dass die P-Sprite-Klone auch das ausführen, wenn ich es erhalte Es ist also durchaus
möglich, dass
ein Klon, bevor er mit dem Animieren
und Löschen fertig ist, die
Molehit-Meldung empfängt und
dadurch
unnötig einen Klon von sich selbst erstellt unnötig Der Grund, warum ich diese Probleme
im Code gelassen habe, ist, dass es sich um sehr häufige Probleme
handelt , so
ziemlich jeder
Scratcher stößt, und sie können zu
großer Verwirrung führen Deshalb hielt ich es wichtig,
Sie auf sie aufmerksam zu machen Also gut, wie lösen
wir diese Probleme? Nun, da beide Probleme das Drehbuch
betreffen, als ich den
Maulwurfstreffer
erhalten habe, wäre es am besten,
das Skript komplett loszuwerden und das Klonen
anders zu das Skript komplett loszuwerden und das handhaben Wir können
es zum Beispiel so einrichten, dass der Pale Brrte kontinuierlich nach
Objekten in der Treffer-Maulwurf-Liste sucht, und wenn er welche findet, führt
er hier
die gleichen Aktionen aus,
bewegt sich zum Speicherort, löscht die Elemente
und erstellt einen Klon Eine gute Möglichkeit,
dies zu tun, wäre,
einen Forever-Block am Ende
des Skripts mit grüner Flagge zu verwenden einen Forever-Block am Ende
des Skripts mit grüner Flagge Das liegt daran, dass das Green
Flag-Skript nur ausgeführt wird, wenn das Spiel startet, bevor wir irgendwelche Klone erstellt
haben, sodass wir uns keine Gedanken darüber machen müssen die Klone auch das Skript
ausführen In Ordnung, also lasst uns das alles
machen, indem wir zuerst zu
Control gehen und dem Green
Flag-Skript einen Forever-Block
hinzufügen Green
Flag-Skript einen Forever-Block
hinzufügen Jetzt müssen
wir innerhalb des Forever-Blocks überprüfen, ob es
irgendwelche Elemente in
der HIT-Maulwurfliste gibt irgendwelche Elemente in
der HIT-Maulwurfliste Fügen wir also dem
Forever-Block einen I Then-Block hinzu. Immer wenn eine Liste Elemente enthält, ist
ihre Länge größer als Null. also für die Bedingung Gehen
wir also für die Bedingung zunächst zu den Operatoren und fügen einen Block
größer als ein. Um nun die
Länge einer Liste zu ermitteln, können
wir zu Variablen gehen, und hier haben wir eine
Blocklänge. Verwenden wir eine als erste Eingabe des Blocks „
Größer als“. Und lassen Sie uns überprüfen, ob die Länge der HIT-Formen größer als Null ist Okay? Und wenn es
Elemente in der Liste gibt, wollen
wir
genau die gleichen Aktionen ausführen , die wir gerade
im Skript „Wenn ich erhalte“ ausführen . Lassen Sie uns also
alle Blöcke von
hier herausziehen und sie in
den Wenn-Dann-Block legen. Und jetzt können wir
den Block „Wenn ich erhalte“ loswerden. Okay, wenn wir das Spiel jetzt starten
und 2 Maulwürfe gleichzeitig treffen, erscheint
auf jedem von ihnen
ein Po-Sprite und alle Gegenstände werden
aus der Liste der getroffenen Maulwürfe gelöscht Hervorragend. In Ordnung, lassen Sie uns das Spiel beenden und mit
dem Maulwurf-Sprite-Code beginnen Wir senden immer noch
die Nachricht wenn ein Maulwurf getroffen wird, aber wir machen eigentlich
nichts mehr nichts Wir lassen
den Broadcast-Block jedoch
hier stehen, weil
wir in der nächsten Lektion die Mo-Treffer-Meldung verwenden werden, um dem Spiel
mitzuteilen, dass es die Punktzahl des Spielers erhöhen
soll
19. Punktzahl: Da der Spieler nun in der
Lage ist, die Maulwürfe richtig zu treffen, lassen
wir ihn
dabei einige Punkte erzielen Aber zuerst ist mir aufgefallen, dass sich bei
jedem Start des Spiels
die Zeichenreihenfolge
der Hammersprite- und der
Pal-Sprite-Klone ändert, wobei die Klone manchmal
hinter dem Hammer und
manchmal auch davor
erscheinen Um das zu beheben, gehe ich
in den POS Brite-Code, und anstatt den Pobrte zu Beginn des Spiels auf die vordere
Ebene
verschieben zu lassen, mache
ich es so, dass jeder Klon
auf die vordere Ebene bewegt wird,
wenn er erstellt wird. Um das zu tun, entferne ich den Block „
Gehe zur vorderen Ebene“ aus
dem Skript mit grüner Flagge und platziere ihn ganz oben
im Skript, wenn ich als Klon-Skript
starte Ich werde sicherstellen, dass
diese Blöcke wieder an
das Green Flag-Skript angehängt werden. Jedes Mal, wenn ich das Spiel starte, erscheinen
die Pobrte-Klone immer
vor dem Hammer Ordnung, damit
der Punktestand funktioniert, benötigen wir als Erstes
eine globale Variable, die den aktuellen Punktestand
des Spielers speichert also in der Kategorie Variablen Klicken
wir also in der Kategorie Variablen auf Variable erstellen. Wir können es Score nennen. Stellen Sie sicher, dass es für alle
Sprites gilt, und klicken Sie auf Okay. Außerdem können wir
die HIT-Maulwurfliste jetzt ausblenden , da
wir wissen, dass sie korrekt funktioniert Okay? Und um die Dinge einfach zu halten, lassen
wir den Hintergrund
die Partitur regeln. Gehen wir also
zum Hintergrundcode über. Als erstes
möchten wir die Punktzahl auf Null setzen , wenn auf die
grüne Flagge geklickt wird Lassen Sie uns also einen Punktestand auf Null setzen und ihn in
das grüne Flaggen-Skript Als Nächstes müssen wir
die Punktzahl jedes Mal erhöhen , wenn
ein Maulwurf getroffen wird Da wir in diesem Fall bereits die Nachricht
senden, dass der Maulwurf getroffen wurde, müssen wir nur dafür sorgen,
dass der Hintergrund die Nachricht
empfängt und die Punktzahl
erhöht Gehen wir also zu den Events und fügen
einen Block W I Receive hinzu. Und da die Maulwurfs-Nachricht die einzige Nachricht
ist, die wir in unserem Projekt
haben, sollte
sie hier bereits ausgewählt
werden Okay? Jetzt müssen wir nur noch zu den Variablen
zurückkehren und dem einen Wert hinzufügen
,
der sich um einen Block verändert Win I
Receive-Skript einen Wert hinzufügen
,
der sich um einen Block verändert. Und das ist alles. Wenn wir das Spiel jetzt ausführen, jedes Mal, wenn wir einen Maulwurf treffen, erhöht sich die Punktzahl
jedes Mal, wenn wir einen Maulwurf treffen,
um eins Und wenn wir das Spiel beenden
und erneut starten, wird
der Punktestand wieder auf Null zurückgesetzt Die Punktevariable sieht auf der
Bühne momentan
allerdings etwas hässlich aus und wird sie
in einer späteren Lektion viel besser
aussehen lassen in einer späteren Lektion viel besser
aussehen Aber lassen Sie uns zunächst
weitermachen und
dem Spiel
einen Countdown-Timer hinzufügen einen Countdown-Timer , damit es
nicht ewig läuft
20. Einen Countdown-Timer hinzufügen: Um dem Spiel einen Timer hinzuzufügen, erstellen
wir eine neue Variable Und weil wir
die Variable aus
dem Hintergrundcode erstellen , unsere einzige Möglichkeit darin,
sie zu einer globalen Variablen zu machen. Das ist aber in Ordnung, denn genau
das wollen wir tun. Ordnung, nennen wir es
Timer. Klicken Sie dann auf Okay. Und lassen Sie uns das Display in
die obere Mitte der Bühne verschieben , damit es besser zu sehen ist. Wie bei der Partitur werden wir sie später besser aussehen
lassen, aber vorerst können wir darauf
doppelklicken, um eine größere Anzeige Wir hätten das auch tun können,
indem wir im
Rechtsklick-Menü die Option Große Anzeige ausgewählt hätten indem wir im
Rechtsklick-Menü die Option Große Anzeige Okay, mit Score wollen wir
als Erstes die Timer-Variable
im Green Flag-Skript initialisieren im Green Flag-Skript Fügen wir dem Skript also einen weiteren Satz
zum Blockieren hinzu. Wir möchten die
Timer-Variable zu diesem Zeitpunkt setzen, und da es sich
um einen Countdown-Timer handelt, müssen
wir ihn bei
einer Zahl über Null starten Lass uns mit zehn gehen.
Wir reduzieren den Timer jede Sekunde um eins. Nach 10 Sekunden ist
das Spiel also vorbei. Damit der Timer nun
herunterzählt, benötigen
wir eine
Dauerschleife, die die Timer-Variable kontinuierlich um eins pro Sekunde
verringert. Gehen wir also zunächst zu Control und fügen am Ende des Skripts mit
grüner Flagge einen Forever-Block hinzu. Und lassen Sie uns weitermachen und dem Forever-Block
einen Block
mit einer Wartezeit von 1 Sekunde hinzufügen . Jetzt wollen wir
die Timer-Variable um eins reduzieren. Gehen wir also zu Variablen und fügen
blockweise eine Änderung ein, sie unter
dem Gewichtsblock liegt. Und lassen wir es den
Timer um einen negativen Wert ändern. Der Grund, warum wir wollen, dass
der
Gewichtsblock vor dem Block zum Ändern des Kaufs steht, ist ,
dass der Timer zu Beginn
des Spiels
nicht sofort auf
10-9 springt Beginn
des Spiels
nicht sofort auf
10-9 Okay? Und im Moment wird
das Spiel immer 10 Sekunden lang
sein. Wir möchten jedoch, dass der Spieler den Timer auf irgendeine
Weise erhöhen kann, damit einen
längeren Zeitraum
weiterspielen kann. Um das zu erreichen, können wir es so einrichten, dass, wenn der
Spieler einen Maulwurf trifft, auch
der Timer um eins erhöht wird Also fügen wir dem Skript, wenn ich einen Maulwurfstreffer
erhalte, eine weitere Änderung
per Block hinzu und
lassen es den Timer um eins ändern Okay, wenn wir das Spiel jetzt
spielen, beginnt
der Timer bei zehn und sinkt jede Sekunde um
eins Und wenn wir einen Maulwurf treffen, erhöht
sich der Timer um eins Wenn der
Timer jedoch Null erreicht, sinkt
er einfach weiter
in die negativen Zahlen Wir wollen, dass das Spiel beendet
wird, wenn der Timer Null erreicht. Dies beinhaltet das
Stoppen des Timers, das
Stoppen der Maulwurfsanimationen
und das Verhindern, dass der Spieler
die Maulwürfe trifft Wenn der
Timer Null erreicht, können
wir dafür sorgen, dass der Hintergrund das Spiel über eine Nachricht
überträgt,
sodass die Sprites wissen, dass es Zeit ist Zuerst müssen wir überprüfen, ob der Timer-Wert Null erreicht
hat Gehen wir dazu zur Steuerung
und fügen dem Forever-Block einen
Wenn-Dann-Block hinzu Forever-Block einen
Wenn-Dann-Block hinzu gleich nachdem wir
die Timer-Variable verringert haben. Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Dann gehen wir zu Variablen
und prüfen, ob der
Timer gleich Null Wenn das der Fall ist, übertragen
wir das
Spiel per Nachricht Gehen wir also zu den Events, einen Broadcast-Block und senden wir
eine neue Nachricht namens GameOver. Wir sind aber noch nicht fertig, denn momentan läuft
der Forever-Block einfach weiter und
verringert den Timer, also müssen
wir den Forever-Block daran hindern, wieder zu laufen Ein Timer ist gleich Null. Um das zu tun, haben wir, wenn wir zur Steuerung wechseln, einen Stop-All-Block Legen wir einen in den
Wenn-Dann-Block , nachdem wir
das Spiel beendet haben. Stoppen Sie alles, aber wir werden alle Skripte
im Projekt
beenden. Wir wollen das nicht tun, weil wir später auch
einige Spiele über Text und eine Schaltfläche „Erneut
spielen“ aufrufen werden, und diese benötigen ihre eigenen laufenden Skripte
, um zu funktionieren. Stattdessen wollen wir nur das aktuelle Skript
beenden, was wir tun können, indem wir das
gesamte Skript ändern. Okay, wenn wir
jetzt auf die grüne Flagge klicken und den Timer ablaufen lassen, stoppt
er bei Null. Jetzt müssen wir dafür sorgen, dass auch die
Muttermale aufhören zu animieren. Lassen Sie uns dazu das Spiel
beenden und
in den Code für das
erste Maulwurf-Sprite gehen in den Code für das
erste Maulwurf-Sprite Was wir tun wollen, ist, dass, wenn das Sprite
die Game Over-Nachricht erhält, alle
seine Skripte am Laufen halten Gehen wir dafür zunächst zu den Events und bringen unseren erhaltenen Block zu einem
Gewinn Und lass uns GameOver empfangen. Gehen wir zu Control und fügen GameOver-Skript, das ich
erhalten habe,
einen Stop-Block Und wieder stoppt „Alles beenden“ alle Skripte
im Projekt Wir wollen nur
alle Skripte für
dieses spezielle Sprite beenden alle Skripte für
dieses spezielle Sprite Die Option, die wir brauchen, sind also
andere Skripte und Sprite. Dadurch werden die Dauerschleifen
in beiden Skripten mit grüner Flagge beendet , wodurch die
Maulwurf-Animationen eingefroren werden Wir müssen auch das Skript, wenn ich
GameOver
erhalte,
in die anderen Maulwürfe kopieren Skript, wenn ich
GameOver
erhalte,
in die anderen Klicken wir also darauf und
ziehen es auf die Sprites Form zwei und modifizieren drei Sprites
im Sprite-Fenster Okay, und lassen Sie uns auch
den Hammer-Sprite verstecken ,
wenn das Spiel
vorbei ist , damit der Spieler
weiß, dass er die Maulwürfe nicht mehr schlagen
kann Dazu können wir zum Hammer-Sprite-Code
gehen. dann aus den Ereignissen ein Spiel mit W, Lassen Sie uns dann aus den Ereignissen ein Spiel mit W, das ich
erhalte, über Block hinzufügen Jetzt müssen wir nur noch zu Looks gehen und dem Skript einen Versteckblock
hinzufügen. Wenn wir das Spiel jetzt starten
und den Timer ablaufen lassen, hört
die Animation der Form auf
und der Hammer verschwindet Wenn wir das
Spiel jedoch beenden und erneut ausführen, ist
der Hammer immer noch unsichtbar Um das zu beheben,
müssen wir nur einen Show-Block
vor dem Forever-Block und eines
der
Hammerscreen-Flag-Skripte hinzufügen vor dem Forever-Block und eines . Okay. Und sobald das
Spiel beendet ist, werden
wir einen
Spiel-Over-Text einblenden, zusammen mit einer Schaltfläche „
Erneut spielen“, auf
die der Spieler klicken kann,
um das Spiel neu zu starten, und all das werden wir
in der nächsten Lektion tun.
21. Ein Game Over Screen hinzufügen: Nachdem
wir den Timer und
die Maulwurfsanimationen gestoppt haben, sobald
das Spiel beendet ist, wird ein Text angezeigt, der besagt
, dass das Spiel vorbei Dazu müssen
wir ein neues Sprite erstellen. Gehen wir also zur Schaltfläche „Sprite auswählen “
und wählen Und lassen Sie uns das Sprite
GameOver für das Kostüm nennen, holen
wir uns das Textwerkzeug Und vorerst geben wir
ihm eine schwarze Füllfarbe. Um Text zu erstellen,
klicken wir einfach in den Canvas
und beginnen mit der Eingabe. Wenn wir
die Schriftart des Textes ändern möchten, haben
wir hier oben einige Optionen
zur Auswahl. Ich nehme die Marker-Schrift. Jetzt können wir das
Auswahlwerkzeug verwenden und den Text vergrößern. Wir möchten, dass es
ziemlich groß
ist, sodass es den größten Teil der
Breite der Bühne ausfüllt. Und wir wollen es auch auf
der Leinwand zentrieren. Für die Position des
Sprites auf der Bühne werden
wir es vertikal
zentriert und etwas über der horizontalen Mitte platzieren,
um Platz für
die Schaltfläche „Erneut abspielen“ zu schaffen ,
etwa so Nehmen wir Null
für die Position, und für die
Y-Position verwende ich 45. Okay? Zurück
im Kostümeditor können
wir dem Text eine
andere Füllfarbe geben. Ich nehme ein gelbes das macht es aber ziemlich schwierig , es auf der Bühne
zu sehen. Deshalb möchte ich auch einen schwarzen Umriss
hinzufügen. Wenn wir den Text jedoch etwas vergrößern
, mag
die Markierungsschrift offenbar
keine Konturen,
wie wir an
diesen seltsamen Stellen sehen können ,
die jetzt herausragen. Wir können also
zuerst den Umriss entfernen und
dann einen schwarzen
Schlagschatten für den Text erstellen. Lassen Sie uns dazu
eine Kopie des Textes erstellen ihm eine schwarze Füllung
geben. Verschieben Sie es so, dass es etwas
unter und rechts
vom Originaltext liegt, und senden Sie
es unter den Originaltext. Und wir können die
Pfeiltasten auf der Tastatur verwenden, um die Positionierung weiter
anzupassen.
Das sieht ziemlich gut aus. Okay, jetzt gehen wir in den Code-Tab und bringen
das Sprite zum Laufen Zuerst wollen
wir zu Beginn des Spiels das Sprite verstecken Gehen wir also zu den Events und
starten ein Green Flag-Skript. Dann gehen wir zu Looks und
fügen einen Versteckblock hinzu. Wir wollen auch
sicherstellen, dass das Sprite
über allen anderen
Sprites auf der Bühne steht über allen anderen
Sprites auf der Lassen Sie uns also auch einen Block mit dem Titel „Später
nach vorne“ einbauen. Als Nächstes möchten wir, dass das Sprite
auftaucht, wenn es
die GameOver-Nachricht empfängt Gehen wir also zu den Events,
bringen einen
Block W, den ich erhalten habe, rein und erhalten GameOver Zuerst wollen wir
das Sprite sichtbar machen. Gehen wir also zu Looks und
bringen einen Showblock rein. Anstatt das Sprite jedoch
plötzlich auftauchen zu lassen, beginnen
wir seine Größe bei 0% und erhöhen es
dann schnell auf 100%,
sodass
es so Anstatt das Sprite jedoch
plötzlich auftauchen zu lassen, beginnen
wir seine Größe bei 0% und erhöhen es
dann schnell auf 100%, aussieht, als ob es auf der Bühne auftaucht Dazu können wir zunächst die Sprite-Größe auf
0%
setzen, indem wir
einen Block mit der Größe zwei hinzufügen
und ihn auf Null setzen Als nächstes über sagen wir zehn Wiederholungen. Wir werden die Größe
wieder auf 100% erhöhen. Gehen wir also zur Kontrolle und fügen
einen Block mit zehn Wiederholungen hinzu. Gehen wir dann zurück
zu Looks und fügen Wiederholungsblock
eine Änderung der Größe
für Block hinzu. Und wir belassen es bei der
Änderung der Größe um zehn, was bei zehn Wiederholungen die Größe
wieder auf 100% bringen
sollte Ordnung, wenn wir das Spiel starten und warten, bis der
Timer abgelaufen ist, erscheint Game over Sprite auf der Bühne Wenn wir uns jedoch
die Größe des
Spiels im Vergleich zu Sprite ansehen , ist
sie etwas größer als ist
sie etwas größer Der Grund dafür
ist, dass wir eine
Sprite-Größe
eigentlich nicht auf 0% setzen können eine
Sprite-Größe
eigentlich nicht auf 0% setzen Um zu sehen, ob das der Fall ist, bringen
wir einen
Block der Größe zwei in einen leeren Raum Setzen wir ihn auf Null
und klicken auf den Block. Wie Sie sehen können,
beträgt die Größe
meines Spiels über Sprite 5%, nicht 0% diesem Grund sind es 105%, wenn ich die Größe bei
zehn Wiederholungen
um 10% erhöhe. Die genaue Zahl
hängt tatsächlich von der Größe des Kostüms
des Sprites Deins könnte also
etwas anders sein. Okay? Wenn wir also wollen, dass die Größe des
Sprites bei 100% liegt, können
wir den Block „Größe
2“ verwenden, um die Größe auf 100
zu setzen und ihn direkt
unter den Wiederholungsblock Wenn wir jetzt auf das Skript „Ich
habe gewonnen“ klicken, erscheint
das Game over Sprite und
seine Größe ist wieder bei 100% Dadurch entsteht am Ende auch ein leichter
Deflationseffekt, bei
dem die Sprite-Größe um 105-100
abnimmt,
wodurch die Animation meiner Meinung nach
sogar noch besser aussieht sogar noch Okay, lassen Sie uns das Spiel beenden und jetzt erstellen
wir Lassen Sie uns also zuerst
ein neues Sprite erstellen und es wieder Play
nennen im Kostümeditor Nehmen wir im Kostümeditor das Rechteckwerkzeug und wählen wir eine Füllfarbe aus Ich nehme eine Orange. Und geben wir
ihm auch einen schwarzen Umriss. Okay? Zeichnen wir nun ein Rechteck in der Nähe der Mitte der Leinwand. Wir möchten, dass es groß
genug ist, damit der Spieler es leicht
sehen und anklicken kann,
aber nicht zu groß. Etwas um die 180 mal
60 Pixel sollte gut sein. Und ich werde
die Umrissbreite auf sieben erhöhen. Nehmen wir nun das Sleck-Werkzeug
und zentrieren Sie das Rechteck
auf der Leinwand Es scheint auch, dass
ein Teil der Unterseite
des Rechtecks auf der Bühne
abgeschnitten wird Wie wir bereits gelernt haben, können
wir dieses Problem beheben, indem wir die Form mit
einem Rechteck
umgeben , das
weder Füllung noch Kontur hat. Ich werde das transparente
Rechteck auch im Canvas-Bereich zentrieren. Nehmen wir jetzt das Textwerkzeug und fügen der Schaltfläche
mit der Aufschrift „Erneut abspielen“ etwas Text hinzu. Ich verwende Weiß für
die Füllfarbe und San
Seripan. Jetzt
können wir das Auswahlwerkzeug verwenden, die Größe des Textes ändern und
sicherstellen, dass er zentriert ist Und wenn wir die Größe ändern
und gleichzeitig die Mitte beibehalten möchten , können
wir die
Alt- oder die Optionstaste gedrückt halten Ordnung. Damit der
Button etwas besser aussieht, können
wir die
Ecken des Rechtecks abrunden. Wählen wir dazu das Rechteck aus und greifen
dann zum Umformungswerkzeug Wenn wir die Ansicht vergrößern,
können wir auf jeder
Seite eines Eckknotens einen neuen Knoten hinzufügen Und wenn wir jetzt
den Eckknoten löschen, wird
er die Ecke abrunden, und das Gleiche können wir für
die verbleibenden drei Ecken tun. Okay, das sieht
ziemlich gut aus. Jetzt müssen wir
das Sprite nur noch dahin bringen , wo wir es auf der Bühne platzieren wollen Ich gebe meiner Position eine Position von Null und eine Y-Position
von minus 50. Ordnung, wenn das
Kostüm fertig ist, gehen
wir zum Code über. Zuerst wollen
wir, wie beim
Game over Sprite, Beginn des Spiels den zu
Beginn des Spiels den Button verstecken und ihn später in den Vordergrund bringen Gehen wir also zu den Events und
starten wir ein Skript mit grüner Flagge. Dann geh zu Looks und
bring einen Versteckblock rein. Und ein Block, der später nach vorne geht. Als Nächstes, wenn der Sprite
die Game Over-Nachricht empfängt, können
wir sie genauso auftauchen
lassen, wie wir es für das Game over Sprite getan haben Anstatt also
das Skript „W Ich erhalte
Spiel über Spiel“ neu zu erstellen, können
wir zum Spiel über Sprite wechseln und das dazugehörige „W
Ich erhalte Spiel über “ -Skript klicken und es
auf das „Play Again“ -Sprite ziehen “ -Skript klicken und es
auf das Jetzt können wir zum Play Again Sprite zurückkehren und
die Skripte ein
wenig bereinigen Wenn wir auf das Skript W I
received GameOver klicken, wird die Schaltfläche genauso angezeigt wie
das Game Over-Sprite Damit die Schaltfläche noch besser
aussieht, können
wir ihr einige
zusätzliche Effekte hinzufügen Wenn der Spieler zum Beispiel mit der
Maus über die Schaltfläche fährt, können
wir sie heller
färben und sie ein wenig vergrößern. Wenn
der Spieler
aufhört, mit der Maus darüber zu fahren, können
wir sie wieder normal einstellen Dazu
müssen wir kontinuierlich
überprüfen, ob das Sprite den Mauszeiger
berührt Gehen wir also zuerst
zu Control und fügen am Ende
des Skripts W, das ich erhalten habe,
einen Block für immer Als Nächstes müssen wir,
je nachdem, ob
das Sprite den Mauszeiger berührt oder nicht, verschiedene Dinge
tun je nachdem, ob
das Sprite den Mauszeiger berührt oder nicht werden,
dem Forever-Block den Block
I thin else hinzufügen Forever-Block den Gehen wir für die Bedingung zur Erkennung über und fügen einen Block mit
berührendem Mauszeiger hinzu Ordnung, also wenn das Sprite
den Zeiger berührt, machen
wir ihn zuerst heller Dazu können wir
zu Looks gehen und dem I-Teil des
If-the-S-Blocks
einen Block mit zwei Effekten hinzufügen If-the-S-Blocks
einen Block mit zwei Effekten I-Teil des
If-the-S-Blocks
einen Block mit zwei Effekten Für den Effekt
wollen wir Helligkeit verwenden, und etwas wie
20 sollte gut sein. Wenn das Sprite den Zeiger nicht
berührt, stellen
wir sicher, dass die
Helligkeit auf Null gesetzt ist Lassen Sie uns also
einen weiteren Effekt zwei Blöcken hinzufügen und ihn
in den anderen Teil legen, und lassen Sie uns die
Helligkeit auf Null setzen Wenn wir auf das Skript klicken und den
Mauszeiger über die Schaltfläche bewegen, wird
ihre Farbe heller, wird
ihre Farbe heller,
und wenn wir uns
von der Schaltfläche entfernen, die Farbe wieder normal Als Nächstes werden wir
dafür sorgen, dass die Schaltfläche auch etwas größer wird, wenn
wir den Mauszeiger darüber
bewegen, dann wieder
normal schrumpft und
dann wieder
normal schrumpft, wenn wir uns von ihr entfernen. Um das zu tun, beenden wir das Spiel. Dann schnappen wir uns einen
Bye-Block mit veränderter Größe und fügen ihn dem
I-Teil des IN-Notizblocks hinzu. Um der Schaltfläche
eine Wachstumsanimation zu geben, führen
wir einen
kleinen Mathe-Trick durch. Gehen wir zunächst zu Operatoren, nehmen einen Divisionsblock und
fügen ihn in die Eingabe für den Block zum Ändern der
Größe ein. Lassen Sie uns nun einen
Subtraktionsblock nehmen und
ihn als erste Eingabe
für den Divisionsblock verwenden ihn als erste Eingabe
für den Divisionsblock Gehen wir als Nächstes zu Looks und
holen uns einen Größenblock. Und benutze es als zweiten Eingang
des Subtraktionsblocks. Wenn wir nun die
erste Eingabe auf
etwas über 100 wie 120 setzen etwas über 100 wie 120 und die Ergebnisse
durch etwa zwei teilen, wird all
das dazu führen, dass die
Größe des Sprites immer kleiner
wird ,
bis es eine Größe
von 120 erreicht Wenn der Block zum ersten
Mal ausgeführt wird, beträgt
die Größe beispielsweise 100 Und da der
Subtraktionsblock vom
Divisionsblock getrennt
ist, führt
Scratch die
Subtraktion zuerst durch, was uns 20 ergibt Dann teilt es 20
durch zwei, was uns zehn ergibt. Schließlich wird es die Größe
des Sprites um zehn
ändern ,
sodass es 110 ist Wenn der Block das nächste Mal ausgeführt wird,
macht er 120 minus
110, also zehn, teilt
dann zehn durch
zwei, was fünf ist, und addiert die
fünf zur Gesamtgröße,
sodass das Sprite eine Größe von Und das wird so lange
weitermachen, bis die Sprite-Größe
schließlich 120 erreicht Okay, und um die
Größe wieder auf 100% zu bringen, müssen
wir nur
den Block zur Größenänderung duplizieren und ihn dem Els-Teil
hinzufügen Und statt 120 verwenden
wir 100. Wenn wir das Skript jetzt ausführen, wenn wir den Mauszeiger über die Schaltfläche bewegen, wächst
seine Größe auf 120 Und wenn wir weggehen,
schrumpft es wieder auf 100. Wenn wir es vergrößern wollen,
wenn wir mit der Maus darüber fahren, müssen
wir nur eine
Zahl größer als 120 verwenden Und wir können
die Animationen auch verlangsamen , indem wir sie
durch eine größere Zahl dividieren Aber ich ändere
meins wieder auf 122. Ordnung. Jetzt
müssen wir es nur noch so machen, dass die Schaltfläche tatsächlich
etwas tut, wenn wir darauf klicken. Um das zu tun, beenden wir
zuerst das Spiel. Gehen wir dann zu den
Ereignissen und starten wir ein neues Skript mit dem WT
Sprite, auf den Block geklickt wurde Wenn also auf das Sprite geklickt wird, wollen
wir
eine neue Nachricht senden und das Sprite auch verstecken Lassen Sie uns also zuerst einen
Broadcast-Block einfügen. Und lassen Sie uns eine neue
Nachricht namens Play Again senden. A Lass uns jetzt zu Looks gehen
und einen Versteckblock einfügen. Im Moment ist es jedoch möglich, Schaltfläche „
Erneut abspielen“ klickt, obwohl dass der Spieler, der versucht,
die Maulwürfe
zu schlagen, abläuft,
versehentlich auf die sie auf der Bühne immer noch
sehr klein ist Das Spiel beginnt dann
sofort von vorne, was den Spieler verwirren könnte Um das zu verhindern, können
wir es so einrichten, dass
das Sprite, wenn
es angeklickt wird, die Nachricht sendet und
sich nur dann versteckt , wenn die Größe des Sprites größer als 100 ist Der Grund, warum wir überprüfen, ob
es größer als 100 ist, ist, dass, sobald der Button mehr
auf der Bühne erscheint, seine Größe über 100 steigt sobald der Spieler
den Ordnung, also
gehen wir zu Steuerung,
nehmen einen, wenn auch dünnen Block, und wickeln wir ihn sowohl um
den Broadcast-Block als auch um den Versteck-Block den Versteck-Block Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block größer als ein. Gehen wir nun zu Looks
und überprüfen, ob die Größe größer als 100
ist. Okay. Und wenn wir
die Play Again-Nachricht senden, wollen
wir
das Spiel auch vor Sprite verstecken Gehen wir also über
Sprite-Code ins Spiel. Dann lass uns zu den Events gehen, einen anderen
reinbringen, wenn ich
Block erhalte und wieder Play erhalte Jetzt müssen wir nur noch zu
Looks gehen und dem Skript einen
Block zum Ausblenden hinzufügen. Wenn wir das Spiel jetzt starten
und den Timer ablaufen lassen, sowohl das Game over Sprites das Spiel gegen
Sprite. Die Hover-Animation für das Spiel gegen
Sprite funktioniert ebenfalls,
und wenn wir darauf klicken, werden beide Sprites ausgeblendet Im Moment wird das Spiel jedoch nicht neu gestartet
. Das werden wir in
der nächsten Lektion beheben.
22. Neustart des Spiels: Damit der
Spieler
das Spiel neu starten kann , indem
er erneut auf Play Sprite klickt, müssen
wir einige Änderungen am
Code in unserem Projekt vornehmen am
Code in unserem Das liegt daran, dass
wir im Moment die Skripte mit
grüner Flagge verwenden , um all unsere Sprites einzurichten Und leider
gibt es keinen Block, mit dem wir alle
Green Flag-Skripte erneut ausführen
können Die einzige Möglichkeit, sie auszuführen, besteht darin , manuell auf
die grüne Flagge zu klicken. Wir können also dafür sorgen, dass der Hintergrund die Startnachricht
sofort zu
Beginn des Spiels
sendet , und wir können unser Sprite selbst
einrichten, wenn Nachricht zum Starten des Spiels
erhält ,
anstatt wenn auf die
grüne Flagge geklickt wird Auf diese Weise können
wir auch
die Startnachricht erneut senden die Startnachricht erneut wenn der Spieler auf die Schaltfläche „Erneut spielen“ klickt werden
alle Sprites zurückgesetzt Okay? Gehen wir also zuerst auf
den Code für den Hintergrund ein. Und hier möchten wir die Nachricht zum Starten
des Spiels senden, sowohl wenn auf die grüne
Flagge geklickt
wird wenn wir
die Nachricht „Play Again“ erhalten Gehen wir also zunächst zu den Ereignissen und fügen dem Skript mit der grünen Flagge
vor
dem Block für immer einen
Broadcast-Block Skript mit der grünen Flagge
vor
dem Block für immer einen
Broadcast-Block Und lasst uns eine neue
Nachricht mit dem Namen Spiel starten senden. Okay, lassen Sie uns jetzt „
Wenn ich erhalte, blockieren und „Empfangen“ erneut abspielen. Und hier müssen wir genau
die gleichen Sachen machen , die wir im Green Flag Script
machen. Anstatt jedoch
Duplikate aller Blöcke zu verwenden,
was den Code überladen würde, können
wir einen benutzerdefinierten Block erstellen, der all
das erledigt Dann können wir beide Skripte den benutzerdefinierten
Block ausführen lassen. Um einen benutzerdefinierten Block zu erstellen, gehen
wir zur Kategorie mBLOXS Alles, was wir
gerade hier haben, ist die Schaltfläche Mu Block. Also lass uns weitermachen und darauf klicken. Okay? Also zuerst können wir unserem benutzerdefinierten Block einen
Namen wie „Spiel starten“ geben. Und wir können dem Block auch
verschiedene Arten
von Eingaben und Beschriftungen
hinzufügen . Wir werden diese
später im Kurs verwenden. Aber für den einfachen Block, den
wir gerade erstellen, benötigen
wir nichts extra, also lassen Sie uns weitermachen
und auf Okay klicken. Ordnung, das fügt unserem Code
einen definierten
Startspielblock hinzu. Wir können den definierten Block
als Skript verwenden , indem wir ihm
weitere Blöcke hinzufügen. Wir haben jetzt auch einen Startspiel-Block in der Kategorie mBlock Wir können diesen Block an einer beliebigen Stelle
in einem unserer Skripte platzieren, und wenn das Skript den Block
ausführt, werden alle
Blöcke ausgeführt, die sich
im definierten
Startspielskript befinden im definierten
Startspielskript Und um das Startspiel zu definieren, ziehen
wir alle Blöcke aus
dem Skript mit der grünen Flagge heraus und hängen sie an den
definierten Startspielblock an. nun in meinen Blöcken Lassen Sie uns nun in meinen Blöcken einen Block zum Starten des Spiels nehmen und einen
Block
sowohl zum Skript mit der grünen Flagge als auch zum
Spiel gegen
den Sieg hinzufügen sowohl zum Skript mit der grünen Flagge , den ich erhalte. Wenn nun auf die
grüne Flagge geklickt wird, wird
der Block „Spiel starten“ ausgeführt, wodurch alle Blöcke
innerhalb des Feinstartspiels ausgeführt werden. Das Gleiche passiert,
wenn
die
Meldung „Spiel wieder spielen“ empfangen wird wieder spielen“ empfangen wird Jetzt müssen wir nur noch unseren Sprites
sagen, dass sie
sich selbst einrichten sollen, wenn sie
die Nachricht „Spiel starten“ erhalten, und wir beginnen mit dem Hammer Gehen wir zum
Hammer-Sprite-Code. Wir müssen beide Skripte hier ausführen, wenn
die Nachricht zum Starten
des Spiels
empfangen wird , anstatt wenn auf
die grüne Flagge geklickt wird Lassen Sie uns also zuerst
alle Blöcke von den beiden Blöcken mit
der grünen Flagge trennen alle Blöcke von den beiden Blöcken mit
der grünen Flagge Dann können wir die Blöcke mit
der grünen Flagge loswerden. Jetzt können wir zu den
Ereignissen gehen und am Anfang jedes Skripts einen Block „
Wann ich erhalten habe“ hinzufügen . Und wir wollen
das Startspiel für beide erhalten. Gehen wir als Nächstes
zum Maulwurfssprite und machen wir dasselbe für
die beiden
Skripte mit grüner Flagge hier Der nächste Schritt ist der Pow-Sprite. Wir müssen hier nur
ein Skript ändern. Nun, für Form zwei und Mod drei werden
wir
in der nächsten Lektion die
Codierung des Formsprites beenden , was bedeutet, dass wir alle Formen zur Bühne
hinzufügen können alle Formen zur Bühne
hinzufügen Im Moment können wir also einfach die Sprites Mold Two und
Mod Three
entfernen , indem wir auf
den Papierkorb neben ihren
Symbolen und dem Sprite-Fenster klicken Und damit das Spiel wiederholt
wird, müssen
wir die Sprites eigentlich nicht ändern weil wir sie bereits am Anfang
verstecken
und sobald der Spieler auf die Schaltfläche „Erneut spielen“
klickt
, wird ein neues Spiel gestartet Ordnung. Und
wenn wir das Spiel starten, können
wir sehen, dass alles wie zuvor
funktioniert. Und sobald der Timer abgelaufen ist, können
wir erneut auf Play klicken
und das Spiel wird neu gestartet Eine Sache, die mir nicht gefällt,
ist, dass der Hammer gleich nach dem Klicken auf
die Schaltfläche „Erneut spielen“ schwingt, sobald er sichtbar wird Das passiert, weil, wenn wir
das Spiel beenden und in
den Hammer-Sprite-Code gehen, direkt nachdem wir auf die Schaltfläche „Erneut spielen“ geklickt haben
und ein neues Spiel gestartet wird, das Skript erkennt, dass
die Maustaste gedrückt ist, also schwingt es Das ist keine große Sache, aber ich finde es nervig
und es ist sehr einfach zu beheben, also können wir das genauso gut tun Und dazu müssen wir nur den Block „Warten bis nicht mehr
gedrückt
halten
“ duplizieren “ und ihn direkt
über dem Block für immer platzieren Wenn wir das Spiel erneut ausführen
und den Timer ablaufen lassen, das
Klicken auf die Schaltfläche „Erneut spielen den
Hammer
nicht schwingen Und es gibt noch
eine weitere Verbesserung , die wir vornehmen können,
denn es kann eine Sekunde
dauern, bis
der erste Maulwurf oder Maulwürfe zu
Beginn des Spiels auftauchen.
Wir können eine zusätzliche Sekunde oder
so warten, Wir können eine zusätzliche Sekunde oder
so warten bis der Timer
herunterzählt Um das zu tun, beenden wir das Spiel und gehen wir zum
Code für den Hintergrund Gehen wir nun zu
Control und fügen Forever-Block
einen Warte-1 Sekunden-Block definierten Startspiel-Skript
unmittelbar vor
dem Forever-Block
einen Warte-1 Sekunden-Block hinzu. Okay, in der nächsten Lektion werden
wir endlich die weiteren Sprites
fertigstellen
23. Die Muttermale auffüllen: Um den Maulwurfssprite zu beenden, gehen
wir zum
Maulwurf-Sprite-Code Und tatsächlich sind wir im Grunde
schon mit dem Code
fertig Es gibt jedoch
einige Änderungen, die wir vielleicht später am Code vornehmen
möchten,
die wir auf alle Mole-Sprites anwenden
möchten,
und es
wäre ein großer Aufwand, den Code für
jedes einzelne Maulwurf-Sprite
ändern zu müssen den Code für
jedes einzelne Maulwurf-Sprite In der nächsten Lektion werden
wir es zum Beispiel so einrichten, dass der Schwierigkeitsgrad
des Spiels steigt. Das wirkt sich
beispielsweise darauf aus, wie oft
ein Maulwurf auftaucht,
wie lange er aktiv bleibt
und wie lange er unten bleibt,
bevor entschieden wird wie oft
ein Maulwurf auftaucht, wie lange er aktiv bleibt
und wie lange er unten bleibt, und wie lange er unten bleibt , ob
er wieder auftaucht. Wenn wir
diese Attribute für alle
Mold-Sprites gleichzeitig ändern wollen , ,
anstatt alle
Werte wie diesen einzugeben ,
was als Hardcoding bezeichnet wird sollten
wir sie
durch globale Variablen ersetzen,
anstatt alle
Werte wie diesen einzugeben,
was als Hardcoding bezeichnet wird. Ordnung, gehen wir also zu Variablen und klicken auf
die MA-Variablenschaltfläche Für all diese Variablen wollen
wir für
alle Sprites das Häkchen setzen
und wir werden die
erste Variable innerhalb des Pick-Random-Blocks verwenden ,
die
bestimmt, ob
der Maulwurf auftauchen soll oder nicht Also können wir es so etwas
wie Mole Show Factor nennen. Das ist ein ziemlich klobiger Name. Wenn Ihnen also ein besserer
einfällt, können Sie ihn gerne ändern Wie dem auch sei, lass uns auf Okay klicken und eine weitere erstellen. Dieser wird so lange sein, wie lange der Maulwurf in
der oberen Position pausiert Nennen wir es also eine
Mould-Up-Pause. Lass uns auf Okay klicken. Und zum Schluss erstellen wir noch
eine sogenannte Form-Down-Pause, festgelegt wird
,
wie lange der Schimmel
unten bleibt , bevor entschieden wird, ob er wieder hochkommt
oder nicht. Und wir müssen keine dieser Variablen auf
der Bühne zeigen , also lassen Sie uns sie hier deaktivieren Nehmen wir nun den
Mole-Show-Faktor-Block
und verwenden wir ihn, um die
50 hier im
Pick-Random-Block zu ersetzen 50 hier im
Pick-Random-Block Als Nächstes nehmen wir den Block „Mole Up Pause“ und fügen ihn in den
ersten Block mit einer Wartezeit von 1 Sekunde Dann schnappen wir uns eine Pause mit dem
Maulwurf nach unten und legen ihn in den letzten Block mit der
Wartezeit von 1 Sekunde Als Nächstes müssen wir
in den Hintergrundcode gehen und im Fine-Start-Spiel die neuen
Mold-Variablen auf die Standardwerte setzen Lassen Sie uns also zuerst
einen Satz von zwei Blöcken nehmen und
ihn irgendwo am
Anfang des Skripts platzieren ihn irgendwo am
Anfang des Skripts Lassen
Sie uns für diesen Fall den Mole Show Factor wählen, und wir werden den Wert jetzt tatsächlich bei 200
beginnen Wie wir sehen werden, wird das
ein ziemlich guter Startwert sein ein ziemlich guter Startwert sobald wir alle
Formen auf der Sie können die Werte
jedoch natürlich jederzeit an Ihre Bedürfnisse anpassen In Ordnung, jetzt bringen wir ein weiteres Set zum Blockieren ein. Und bei diesem
stellen wir die Formpause auf eins ein. Und zum Schluss machen wir
dasselbe für die Mold Down Pase. Ordnung, und damit
sind wir offiziell fertig mit
der Codierung des Maulwurfssprites, sodass wir jetzt damit
beginnen können, die Bühne mit mehreren Formen zu füllen Dazu müssen
wir nur ein paar Duplikate
des Maulwurfssprites erstellen und sie an Maulwurfssprites Und wir wollen
das Reihe für Reihe machen, von hinten auf
der Bühne
beginnen und uns
nach vorne bewegen Das liegt daran, dass
Scratch, wie
wir bereits gelernt haben , die Ebene
eines bestimmten Sprites im Code in der Reihenfolge zeichnet, in der wir
sie auf der Bühne verschoben haben Außerdem wollen
wir keine Maulwürfe zu
nahe am rechten Rand der Bühne platzieren , denn wenn wir
das tun, muss
der Spieler seinen Cursor bis
hierher
bewegen, um den Maulwurf
zu treffen Okay, sobald wir damit fertig sind die
Maulwurfs-Sprites zur Bühne
hinzuzufügen, klicken
wir auf die
grüne Flagge und beobachten, wie sich die Magie , die
Maulwurfs-Sprites zur Bühne
hinzuzufügen, klicken
wir auf die
grüne Flagge und beobachten, wie sich die Magie entfaltet.
Nicht schlecht. Im Moment ist es jedoch
viel zu einfach. Wir könnten wahrscheinlich für immer weiter
Maulwürfe schlagen, oder zumindest bis wir das
Spiel satt In der nächsten Lektion werden
wir das beheben, indem wir
den Schwierigkeitsgrad zu unterschiedlichen
Zeiten im Spiel erhöhen den Schwierigkeitsgrad zu unterschiedlichen
Zeiten im Spiel
24. Den Schwierigkeitsgrad erhöhen: Um den
Schwierigkeitsgrad des Spiels zu erhöhen, müssen wir
lediglich die Werte der globalen Variablen
anpassen ,
die wir
in der vorherigen Lektion für die Muttermale
erstellt haben in der vorherigen Lektion für die Muttermale
erstellt Zum Beispiel können wir den
Mole-Show-Faktor erhöhen , um weniger
Maulwürfe anzuzeigen Wir können den Maulwurfs-Up-Pass
verringern damit sie schneller
wieder nach unten gehen, oder wir können den Maulwurf-Up-Pass erhöhen, sodass sie länger unten bleiben,
bevor sie wieder hochkommen Und wir können die Werte
an verschiedenen Stellen im Spiel ändern an verschiedenen Stellen im Spiel Zum Beispiel,
wenn der Spieler bestimmte
Punktzahlen
erzielt hat . In Ordnung. Und weil wir mit
globalen Variablen umgehen, machen
wir
das alles im Code für den Hintergrund. machen
das also, nachdem wir den Punktestand und
den Timer erhöht haben und wenn
ich das Mol-Hit-Skript erhalte, fügen
wir ein paar dünne Blöcke um zu überprüfen, ob die Punktzahl einen bestimmten Wert
erreicht hat. Wenn ja, passen wir
die Formvariablen an. Gehen wir also zunächst
zu Control und fügen am Ende
des Mole-Hit-Skripts
einen Block I thin Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Und für den ersten, wenn auch dünnen Block, prüfen
wir, ob der
Punktestand gleich fünf ist Gehen wir zu Variablen, verwenden einen Punkteblock als erste Eingabe und
prüfen, ob er gleich fünf Jetzt setzen wir die mehr
Variablen auf unterschiedliche Werte. Fügen wir dem Block if thin einen Satz von zwei Blöcken
hinzu. Und für den ersten nehmen wir die Pause mit Maulwurf hoch Um das Spiel schwieriger zu machen, können
wir die Pause beim Maulwurf verringern, wodurch ein Maulwurf
weniger Zeit in der oberen Position verbringt weniger Zeit in der Das bedeutet, dass sich der
Spieler schneller
bewegen muss, um den
Maulwurf zu schlagen Okay, also setzen wir es
auf etwas, das etwas niedriger ist als der
Startwert von eins 0,7 sollte gut sein. Wenn der Spieler jetzt also eine Punktzahl von fünf
erreicht, bleiben
die Muttermale nur
0,7 Sekunden lang oben , bevor sie wieder
sinken Beim nächsten Mal
erhöhen wir den Wert
von Mole Down Pass Dadurch bleiben die
Maulwürfe für
einen längeren Zeitraum unten einen längeren Zeitraum bevor entschieden wird, ob sie wieder hochkommen
oder nicht Diesmal wollen wir ein bisschen höher
als eins sein, also sollte etwas wie
1.3 gut sein Und zum Schluss
stellen wir den Maulwurf-Show-Faktor ein. Eigentlich wollen wir den Wert des
Maulwurf-Faktors
verringern , sodass
die
Wahrscheinlichkeit, dass Maulwürfe auftauchen, höher Also setzen wir ihn auf etwas weniger als 200, Dies wird die Änderungen, die wir an
den anderen Variablen vorgenommen haben,
gewissermaßen ausgleichen . Aber wie wir sehen werden,
wird das Spiel definitiv noch
schwieriger werden. Ordnung, wir haben also den
ersten Schwierigkeitswechsel , wenn der Spieler
eine Punktzahl von fünf erreicht. Lassen Sie uns nun eine weitere Änderung vornehmen, wenn sie eine Punktzahl von zehn erreichen. Dazu können wir zuerst das Ganze
duplizieren, wenn es dann blockiert wird. Um zu verhindern, dass
das Skript
automatisch ausgeführt wird, lege
ich das Duplikat zuerst
an eine leere Stelle und das Skript
automatisch ausgeführt wird, lege
ich das Duplikat zuerst
an eine leere hänge es
dann
am Ende des Skripts an. Und dieses Mal wollen wir überprüfen,
ob die Punktzahl gleich zehn ist. Lassen Sie uns die
Schimmelpilzphase weiter
verringern , indem wir sie auf 0,4 setzen Erhöhen wir die
Mould-Down-Pase auf 1,5 und verringern wir den
Mold-Show-Faktor auf 150 Und all diese Werte
sind ziemlich willkürlich, also probieren Sie ruhig
ein paar andere aus. Okay, lass uns
das duplizieren, wenn wir es dann blockieren. Lege es nach unten
und überprüfe, ob die Punktzahl 20 ist Dieses Mal setze ich
Maulwurf-Pose auf 0,2,
Form-Down-Pose auf zwei und Maulwurf-Show-Faktor auf 100 Lassen Sie uns erneut duplizieren,
den Wert ganz unten platzieren und
nach einer Punktzahl von 30 suchen Für die Variablen
verwende ich 0,1, 2,5 und 50. Okay, lassen Sie uns noch
einmal
duplizieren und eine Punktzahl von 45 annehmen Diesmal setze ich die Pause bei der
Maulwurfspause auf Null, was bedeutet, dass
sobald ein Maulwurf auftaucht, unten
geht Der Spieler muss also
ziemlich schnell sein, um ihn zu schlagen Für Maulwurf-Pause nehme
ich drei, und für Maulwurf-Show-Faktor nehme
ich 40, und
das sollte gut sein Jetzt können Sie natürlich damit
weitermachen, wenn Sie möchten,
und Sie können Prüfungen
für Punktzahlen hinzufügen, die zwischen
diesen anderen Werten
liegen, z. B. nach einer
Punktzahl von 40 oder so etwas suchen Okay? Und wenn wir jetzt das
Spiel starten und ein paar Maulwürfe schlagen, wird
es bei Punkt fünf etwas
schwieriger. Bei Punktestand
zehn immer noch schwieriger. Auch hier wird
es bei Punktzahl 30 und bei Punktzahl 45 und darüber hinaus und bei Punktzahl 45 und darüber hinaus ziemlich schwierig, die Maulwürfe
zu schlagen Ordnung. Und
damit haben wir jetzt ein voll funktionsfähiges
Whack a Mole Spiel Es gibt jedoch
definitiv einige Dinge, die wir tun
können, um das Erscheinungsbild
des Spiels zu verbessern, z. B. indem wir die
Punktestand- und Timer-Anzeige etwas schöner
aussehen lassen und Soundeffekte
hinzufügen Und in der nächsten Lektion beginnen wir mit
der Punkteanzeige .
25. Den Score aufpeppen: Um die
Anzeige des Punktestands zu verbessern, verschieben
wir zunächst den
aktuellen Punktestand ein wenig nach unten Und was wir tun können,
ist, oben links
auf der Bühne einen Stern
zu platzieren , der den Punktestand darstellt. Dann können wir große
Zahlen neben
dem Stern verwenden , um den
tatsächlichen Wert der Punktzahl anzuzeigen. Okay? Also, um zu beginnen, werden
wir einen Star Sprite erschaffen Sterne zu zeichnen und zu kratzen
kann ein bisschen mühsam sein. Aber zum Glück
hat Scratch bereits einen ziemlich guten Star
Sprite, den wir verwenden können Um es zu finden, klicken wir auf die Schaltfläche „Sprite
auswählen“. Suchen Sie dann nach
Star. Hier ist es. Lass es uns wählen. Jetzt haben wir ein Stern-Sprite im
Sprite-Fenster und auf der Bühne, und wir können es nach
oben links verschieben Und sobald wir es
dort haben, wo wir es haben wollen, wollen
wir
sicherstellen, dass es an
dieser Stelle startet , wann immer
wir das Spiel starten, für den
Fall, dass wir
es während der Bearbeitung versehentlich verschieben es während Das wird
wichtig sein,
damit die gesamte
Punkteanzeige schön aussieht. Okay, um das im
Code-Tab für den Star Sprite zu machen, gehen
wir zu den Events und einen Block hinzu,
auf den mit der grünen
Flagge geklickt wurde Gehen wir nun zur Bewegung über und fügen grünen Flagge
einen Block „Gehe zu
XY Die Werte im
Block
sollten bereits mit der
Position des Sterns auf der Bühne übereinstimmen. Und das ist vorerst alles,
was wir mit dem Stern tun müssen. Das Erstellen einer schönen
Zahlenanzeige für die Partitur wird
jedoch etwas mehr Arbeit
erfordern. Zuerst
müssen wir ein Sprite erstellen und ihm für jede Ziffer 0-9 ein eigenes
Kostüm geben Neben dem Stern werden wir
Klone des
Ziffern-Sprites
nebeneinander erstellen Klone des
Ziffern-Sprites
nebeneinander , wobei jeder Klon dieselbe Zahl wie
die
entsprechende Ziffer der Punktzahl zeigt dieselbe Zahl wie
die
entsprechende Ziffer der Punktzahl Okay,
lassen Sie uns zunächst ein neues Sprite erstellen, und es muss ein benutzerdefiniertes Sprite
sein, also wählen wir Und wir werden tatsächlich
ein separates Ziffern-Sprite
sowohl für die Punktzahl als auch für den Timer haben ein separates Ziffern-Sprite
sowohl für die Punktzahl als auch für den Timer Nennen wir das
eine Punkteziffer. Okay, lass uns jetzt
an den Kostümen arbeiten. Wie wir später sehen werden, werden wir tatsächlich
ein leeres Kostüm benötigen. Also lassen wir dieses leer. Die Art und Weise, wie wir
die Kostüme benennen, ist jedoch wichtig. Das tatsächliche Wort oder die Wörter, wir für die
Namen verwenden, spielen keine Rolle, aber wir müssen dieselben
Wörter für alle Kostüme verwenden. Und am Ende
des Kostümnamens müssen
wir die Ziffer hinzufügen, die der Ziffer entspricht, die
wir für dieses Kostüm verwenden. Zum Beispiel können wir
alle Kostüme als Ziffer
gefolgt von einer bestimmten Ziffer benennen . Da dieses Kostüm
jedoch leer bleiben wird, werden
wir seinem Namen keine
Ziffer hinzufügen. Also können wir es einfach Ziffer nennen. Lassen Sie uns nun ein weiteres
Kostüm erstellen, indem wir auf die
Schaltfläche „Kostüm auswählen“ klicken und auf Malen klicken. Wir werden eine Null
in dieses Kostüm stecken, also müssen wir
es Ziffer Null nennen. Lassen Sie uns nun eine Null
im Kostüm erstellen , indem wir
das Textwerkzeug nehmen, Schwarz für die Füllung
wählen, die Leinwand ein wenig
vergrößern, hineinklicken
und eine Null eingeben Du kannst eine andere
Schrift wählen, wenn du willst, aber ich lasse meine bei Okay? Jetzt können wir
es ein bisschen größer machen. So etwas
sollte gut sein. Und wir wollen sichergehen, dass
die Null in der
Mitte der Leinwand liegt. Ich möchte es auch etwas
dicker machen. Dazu kann ich ihm
einen schwarzen Umriss hinzufügen. Eine Breite von drei
sieht ziemlich gut aus. Und wir können weitermachen
und den Geist auf
die Bühne bringen , sodass er
sich direkt rechts vom Stern befindet Jetzt müssen wir
die Kostüme für
die verbleibenden Ziffern
eins bis neun erstellen die verbleibenden Ziffern
eins bis neun Lassen Sie uns dazu das Kostüm mit
der Ziffer Null duplizieren. Scratch
erhöht automatisch die Zahl am Ende der nach uns benannten
Kostüme, aber aus irgendeinem Grund wurde
beschlossen, Nummer eins zu überspringen. Also lasst uns den
Namen in Ziffer eins ändern. Jetzt müssen wir nur noch die
Null im Kostüm durch eine Eins ersetzen . Dazu können wir das Textwerkzeug
nehmen, die Null
auswählen, die
Rücktaste drücken, um
sie zu löschen, und eine Eins eingeben Es sollte immer noch zentriert sein, aber wir können das mit dem
Auswahlwerkzeug überprüfen Machen wir nun dasselbe für eine Zwei, indem wir zuerst die Ziffer eins
duplizieren Und dieses Mal wurde die
richtige Zahl für den Namen verwendet. Jetzt müssen wir nur noch
die eine hier drin durch eine
Zwei ersetzen und sicherstellen, dass sie zentriert ist. Lassen Sie uns nun den Vorgang
für die verbleibenden Ziffern wiederholen. Scratch scheint das Kostüm
mittig oder zumindest
nahe genug an der Mitte zu
halten , also werde ich mir nicht die Mühe machen, das zu überprüfen. Okay, sobald wir das Kostüm mit der Zahl
Neun fertig haben, sind
wir mit den Kostümen fertig. Gehen wir jetzt in den Code-Tab und lassen Sie uns das
alles zum Laufen bringen. Zunächst möchten
wir, wie
beim Stern-Sprite, sicherstellen, dass das Sprite mit der
Punktezahl
an der richtigen Stelle beginnt ,
falls wir es versehentlich bewegen Gehen wir also zu den Ereignissen und
starten wir ein Skript mit grüner Flagge. Dann geh zur Bewegung, bring einen Go-to-XY-Block rein. Und stellen Sie sicher, dass die
Werte im Block der
aktuellen Position des Sprites übereinstimmen Ordnung, also wie bringen
wir das Sprite dazu , zu dem
Kostüm zu wechseln, das
zum Beispiel die erste
Ziffer der Punktzahl zeigt zum Beispiel die erste
Ziffer der Punktzahl Und nur damit wir
auf derselben Seite sind, gehen
wir zu Variablen und bringen einen Block mit zwei
in ein leeres Feld
und setzen die Punktzahl auf etwa
15. Dann klicken wir auf den Block, um die Variable
zu setzen Okay, wenn wir also
eine bestimmte Ziffer
aus der Punktzahl erhalten wollen , können
wir zu den Operatoren gehen, und hier haben wir einen
Blockbuchstaben. Bringen wir auch eines
davon in einen leeren Raum. Wenn wir auf den Block klicken, erscheint dieses Pop-up, das uns
zeigt, was die Ergebnisse
des Blocks sein werden. Es wird ein
Kleinbuchstabe A angezeigt, weil wir hier den ersten Buchstaben
des Wortes Apple bekommen, Kleinbuchstabe A ist. Wenn wir die Eins hier in
eine Zwei ändern und auf den Block klicken, erhalten
wir ein kleines P, das ist der zweite
Buchstabe Und obwohl dort der Buchstabe
und der Name des Blocks stehen, funktioniert
es auch Und anstatt einen
Wert in die zweite Eingabe einzugeben, können
wir einen anderen Block verwenden, z. B. einen Variablenblock, und
aus dem Wert der Variablen
einen bestimmten Buchstaben oder eine bestimmte Ziffer abrufen . Wenn wir also eine Ziffer
aus der quadratischen Variablen erhalten wollen, können
wir zu Variablen gehen, einen quadratischen Block
schnappen und ihn als zweite Eingabe verwenden. Wenn wir jetzt auf den Block klicken, erhalten
wir die zweite Ziffer
der Punktzahl, die fünf ist. Und wenn wir die beiden
wieder zu einer Eins ändern und darauf klicken, erhalten
wir eine, die
erste Ziffer der Punktzahl. Okay, um das Sprites-Kostüm mit
Punktezahl
auf das richtige Kostüm
für eine bestimmte
Ziffer der Punktzahl umzuschalten auf das richtige Kostüm , müssen
wir das Wort Ziffer nehmen, das wir in den Namen
aller Kostüme
verwenden , und es
mit der Ziffer kombinieren , die wir
mit einem Blockbuchstaben erhalten Und das Ergebnis
wird der vollständige Name
des Kostüms sein, zu dem wir wechseln
wollen Okay, also zuerst, um
Dinge wie Buchstaben
und Zahlen miteinander zu verbinden , können
wir zu Operatoren gehen
und einen Join-Block verwenden Bringen wir also einen
in den Codebereich. Für die erste Eingabe können
wir eine Ziffer eingeben, wobei darauf achten müssen, dieselbe Schreibweise zu verwenden , die wir für die Kostüme verwenden. Und für die zweite Eingabe können
wir hier den Blockbuchstaben
verwenden. Wenn wir auf den Block klicken
, erhalten wir
die Ziffer eins, eine Kombination aus
der Wortziffer und der
ersten Ziffer der Punktzahl. Um zum ersten Kostüm zu
wechseln, müssen
wir nur zu Looks
gehen, ein Switch-Kostüm zum Block hinzufügen und den gesamten
Join-Block hineinlegen. Wenn wir auf den Block klicken, ändert sich
das Kostüm zur Ziffer eins und zeigt eine Eins auf der Bühne. Wenn wir die
zweite Ziffer der Punktzahl haben wollen, können
wir die Eins hier
in eine Zwei ändern und erneut darauf klicken. Und jetzt zeigt die Punktezahl
Sprite eine Fünf an. Okay? Jetzt, wo wir wissen, wie
man das richtige Kostüm findet, müssen wir in der Lage sein,
alle Punktzahlen auf der
Bühne zu zeigen , nicht nur eine. Dafür verwenden wir Klone
des Punkteziffer-Sprites. Und wie beim Po-Sprite wir das
Punkteziffer-Sprite selbst nicht anzeigen Stattdessen
verwenden wir es nur, um
die Klone an den
richtigen Orten zu erstellen und die Klone anzuzeigen Das ist bei der
Arbeit mit Klonen und
Scratch üblich , weil wir mit den Sprites Dinge
tun können,
Klone, die wir mit dem Sprite selbst nicht machen
können,
wie sie zum Beispiel von der wie Okay? Lassen Sie uns also zuerst das
Sprite ausblenden, wenn auf die grüne Flagge geklickt
wird, indem wir dem Skript mit der
grünen Flagge
einen Block zum Ausblenden hinzufügen der
grünen Flagge
einen Block zum Ausblenden Als Nächstes muss
es für jeden Klon wissen, welche
Ziffer aus
der Score-Variablen abgerufen werden soll Dazu können wir eine
lokale Variable namens index erstellen, die den Index einer bestimmten
Ziffer in der Punktzahl enthält. Und wenn wir sie zu
einer lokalen Variablen machen, erhält
jeder Klon eine
separate Kopie davon, sodass wir für jeden Klon einen anderen
Wert verwenden können. Ordnung, also lassen Sie uns die Variable
erstellen indem wir zu Variablen gehen, auf Variable erstellen klicken, sie Index
nennen, nur für dieses Sprite
auswählen und dann auf Okay klicken Und wir müssen es nicht auf der Bühne
zeigen, also können wir es hier deaktivieren Nehmen wir nun einen
Block mit zwei Indexen und fügen ihn
dem Skript mit grüner Flagge Für den ersten Klon
wollen wir den Index auf eins setzen. Der Grund, warum wir
den Wert vor der Erstellung
des Klons festlegen , ist, dass der Klon, wenn
wir den Klon erstellen,
eine Kopie der
Indexvariablen zusammen mit dem aktuellen Wert der
Variablen erstellt. Jetzt müssen wir
genügend Klone für
alle möglichen Ziffern erstellen , die
die Punktzahl haben könnte Es ist sehr unwahrscheinlich,
dass jemand eine Punktzahl von mehr als
drei Ziffern erreicht Aber nur um sicherzugehen, werden
wir vier Klone erstellen. Dadurch kann der Spieler
eine Punktzahl von 9.999 erreichen. Okay, um vier Klone
der Punkteziffer Sprite zu erstellen, gehen
wir zuerst zu Control, fügen einen Wiederholungsblock am Ende
des Skripts mit
grüner Flagge und lassen es uns viermal
wiederholen Fügen wir nun dem Wiederholungsblock einen Block zum
Erstellen eines Klons von mir selbst Und zwischen jeder Klonerstellung müssen
wir
den Index um eins erhöhen. Gehen wir also zu Variablen und einen
Änderungsindex um einen Block ihn
dann in
den Wiederholungsblock direkt nach dem Block
Create Clone. Der erste Klon wird also einen Index von eins
haben. Der zweite wird einen
Index von zwei haben und so weiter. Okay, jetzt, wo wir die vier Klone
erstellen, müssen
wir sie zeigen und sie dazu bringen,
das richtige Kostüm anzuziehen Gehen wir also zuerst zur Steuerung und bringen einen Klonblock ein, wenn ich
anfange Das erste, was wir
tun werden, ist den Klon zu zeigen. Gehen wir also zu Looks und
bringen einen Show-Block rein. Wir müssen das tun, weil wir den ursprünglichen Sprite
verstecken, was dazu führt, dass auch die Klone
zunächst versteckt Und jetzt verwenden wir den
Switch-Kostümblock, den wir hier
eingerichtet haben, um das Kostüm
der Klone auszutauschen Anstatt den Index so fest zu
codieren, müssen
wir jedoch die Indexvariable verwenden Gehen wir also zu Variablen, fügen einen Indexblock hinzu und verwenden ihn als erste Eingabe
für den Buchstaben des Blocks. Da sich der Punktestand
während des Spiels
ständig ändern wird , benötigen
wir außerdem das Kostüm der Klone , um ständig zum richtigen
zu wechseln Gehen wir also zur Steuerung
und wickeln wir einen Block für immer nur um
den Switch-Kostümblock Wenn wir das Spiel jetzt starten, zeigt
das ScorR-Ziffern-Sprite die richtige Punktzahl an, bis
sie zehn oder höher Jetzt sind die Zahlen
alle gebündelt. Das liegt daran, dass wir auch jeden Klon ein
wenig nach rechts
bewegen müssen jeden Klon ein
wenig nach rechts
bewegen , damit er sich nicht an derselben Position wie
der vorherige Klon Um das zu tun, beenden wir das Spiel und zeigen
das Punkteziffern-Sprite Lassen Sie uns nun das
Sprite duplizieren und das Duplikat an
die
Stelle verschieben , an der sich die
zweite Ziffer befinden soll Okay, das Duplikat hat also eine Exposition von minus 142 und das Original hat eine
Exposition Das ist eine Differenz von 23, die ich auf 25 aufrunden werde Um also die Klone an
die richtigen Positionen zu bringen, , müssen
wir
nach der Erstellung des ersten Klons nur die Exposition
der Sprites um
25 erhöhen bevor wir jeden
weiteren Klon erstellen Lassen Sie uns also zuerst
das
Sprite mit doppelten Punktzahlen löschen das
Sprite mit doppelten Punktzahlen , da wir es nicht mehr
benötigen, dann gehen wir Und lassen Sie uns eine Änderung X für
Block in den Wiederholungsblock nach
dem Block Create Clone
einfügen Block in den Wiederholungsblock nach
dem Block , sodass sich dies nicht auf die Position
des ersten Klons auswirkt Und lassen Sie uns X um 25 ändern. Wenn wir das Spiel jetzt starten
und einige Punkte erzielen, auch wenn wir zehn oder
mehr erreichen, der Punktestand korrekt angezeigt. Und nur um
sicherzugehen, dass es auch
mit drei- und
vierstelligen Punktzahlen funktioniert , können
wir das Spiel beenden und hier den Block mit den zusätzlichen
Punktzahlen
verwenden. Wir können etwas mit
drei Ziffern wie 200 ausprobieren,
auf den Block klicken, um ihn festzulegen, dann auf das
grüne Flaggen-Skript klicken. Nett. Versuchen wir es auch mit einer
vierstelligen Punktzahl wie 6789 Das sieht auch gut aus.
Wenn wir jedoch über 9.999 hinausgehen, werden nur
die ersten vier Ziffern angezeigt die ersten vier Ziffern da wir nur vier
Klone erstellen Wir können jederzeit weitere Klone hinzufügen wenn wir wollen, aber wie gesagt,
es wird fast
unmöglich sein, mit dem
Spiel, wie es derzeit ist,
eine vierstellige Punktzahl zu erreichen mit dem
Spiel, wie es derzeit ist,
eine vierstellige Punktzahl Also können wir vorerst bei vier Klonen
bleiben. Ordnung. Und jetzt sind
wir mit der Punkteanzeige so gut wie
fertig. Es gibt jedoch eine Sache wir noch nicht wirklich
gesprochen haben. Damals, als wir
die Kostüme
für den Punkte-Sprite kreierten , ließen
wir ein Kostüm leer und nannten es einfach Ziffer Der Grund, warum wir das tun mussten ,
ist, dass wir
vier Klone des Sprites erstellen Aber in den meisten Fällen
wird die Punktzahl weniger
als vier Ziffern haben Und wenn wir einen Index im Buchstaben eines Blocks verwenden,
der
höher ist als die
Länge des Werts , von dem wir den
Buchstaben oder die Ziffer erhalten, der resultierende Wert des
Blockbuchstabens leer. Nur um das zu demonstrieren, dupliziere
ich den
gesamten Join-Block und lege ihn hier ab, und ich ziehe
den Buchstaben des Blocks heraus. Jetzt
setze ich die Punktzahl auf eine einstellige Zahl ersetze
dann den
Indexblock hier durch eine Zwei. Wenn ich jetzt auf den Block klicke, erhalte ich nichts,
weil er
den Buchstaben oder die Ziffer mit dem
Index zwei in
der Score-Variablen nicht finden kann den Buchstaben oder die Ziffer . Wenn ich den Block nun wieder
in den Join-Block
einfüge und darauf klicke, hat
der gesamte Block nur einen Wert,
der aus dem Wort Ziffer besteht. Wenn das also innerhalb
des Blocks „Kostüm wechseln“ passiert, wird das Kostüm der Sprites
auf das Kostüm namens Ziffer umgestellt. Dabei handelt es sich um das leere Kostüm, wodurch der
Klon
quasi unsichtbar Nehmen wir nun an, ich verwende
einen anderen Namen für das
Ziffernkostüm, zum Beispiel leer Wenn der
Switch-Kostümblock jetzt versucht , zu dem Kostüm
namens Ziffer zu wechseln, kann er
es nicht finden. Wenn ich das Spiel jetzt starte, scheint
alles wie zuvor zu
funktionieren. jedoch nur
daran, dass ich derzeit das Sprites-Kostüm auf das leere
eingestellt
habe Wenn ich es in ein
anderes Kostüm
wie Ziffer zwei ändere und das Spiel starte, jetzt alle Klone, die leer
sein sollten, zeigen
jetzt alle Klone, die leer
sein sollten, eine Das liegt daran, dass, wenn der Switch-Kostümblock ein Kostüm
erhält,
das nicht existiert, der Sprite in
seinem aktuellen Kostüm belassen Deshalb ist es
wichtig, dass wir
ein leeres Kostüm haben und dass
wir es richtig benennen Egal mit welchem Kostüm
wir den Sprite starten, er wird immer noch korrekt funktionieren Okay. Jetzt gehe ich
zurück zum Code-Tab und werde diese zusätzlichen
Blöcke, die ich erstellt habe, los. Wir müssen
die Punktevariable auch nicht mehr auf
der Bühne zeigen . Und jetzt müssen wir das
alles nur für den Timer machen. Zum Glück
können wir jedoch damit beginnen,
ein Duplikat des
Punkteziffern-Sprites zusammen
mit seinem Code zu verwenden ein Duplikat des
Punkteziffern-Sprites , außer dass wir
herausfinden müssen, wie den Timer am oberen Rand
der Bühne zentrieren Wir werden
in der nächsten Lektion sehen, wie das geht.
26. Den Ergebnis-Fehler beheben: Bevor wir an
der Timer-Anzeige arbeiten, gibt es einen kleinen Bug, der Aktualisierung des Punktestands
auftritt. Dieser Fehler tritt immer dann auf, wenn wir mit
einem einzigen Schlag mehrere Maulwürfe Wenn ich zum Beispiel 2 Muttermale gleichzeitig
treffe, sollten sich sowohl
die Punktzahl als auch der Timer um zwei erhöhen, aber sie erhöhen sich nur um eins Genau wie bei den
Sprite-Klonen von Pal zuvor die Ursache dieses Fehlers mit der hängt
die Ursache dieses Fehlers mit der Art und Weise zusammen, wie wir Wenn wir in den Code
für den Hintergrund gehen, empfängt der Hintergrund
jedes Mal, wenn wir einen Maulwurf treffen, die
Nachricht über
den Maulwurfstreffer und erhöht die Punktezahl
und die Timer-Variablen Das funktioniert gut, wenn man einen einzelnen
Maulwurf trifft. Aber wann immer wir
mehrere Maulwürfe treffen, senden
wir mehrere
Maulwurfsmeldungen senden
wir mehrere
Maulwurfsmeldungen gleichzeitig. Und wie wir schon
im Pow-Sprite
gesehen haben, wenn wir das tun, hat
der Hintergrund nur die Möglichkeit, das Skript
bei Erhalt
eines
Maulwurfs ein einziges Mal auszuführen bei Erhalt
eines
Maulwurfs Daher werden die Score- und Timer-Variablen nur einmal aktualisiert Okay? Der beste
Weg, dies zu beheben, ist also anstatt die
Variablen im Hintergrundcode zu aktualisieren, wir sollten sie
im Posprite-Code aktualisieren Das liegt daran, dass wir wissen, dass wir immer dann die
richtige Anzahl von
Pal-Sprite-Klonen erzeugen , wenn wir mehrere Muttermale gleichzeitig
treffen Um das zu tun,
gehen wir wirklich schnell zum
Hintergrundcode zurück Und wenn ich dann das
Maulwurfstreffer-Skript erhalte, willst
du den
Änderungswert um eins und
den Timer um einen
Block in das Posprite kopieren und sie
dann von hier entfernen Lassen Sie uns also zuerst die
beiden Blöcke vom Skript trennen, sie in das Posprite
kopieren
und sie aus dem Hintergrundcode entfernen Gehen wir nun zum
Po-Sprite-Code, und wir wollen
die beiden
Change-Blocks, die wir kopiert
haben, nehmen Change-Blocks, die wir kopiert
haben, und sie ganz oben
im When I
start as a clone Script platzieren ganz oben
im When I
start as a Damit werden jedes Mal, wenn wir einen POW-Sprite-Klon
erstellen, die Score
- und Timer-Variablen um eins aktualisiert Bevor wir das ausprobieren, kehren
wir nun zum Hintergrundcode zurück Im Moment aktualisieren wir den Schwierigkeitsgrad
immer dann, wenn wir
die Mo-Treffer-Meldung
erhalten. Es ist jetzt jedoch möglich,
dass wir
die Nachricht erhalten , bevor der Kumpel
den Punktestand tatsächlich aktualisiert
hat,
was bedeutet, dass der Schwierigkeitsgrad
nicht korrekt aktualisiert Anstatt
diese ITN-Blöcke auszuführen, können wir sie also
jedes Mal, wenn wir
die Meldung über einen
Maulwurfstreffer erhalten, kontinuierlich ausführen solange das Spiel Um das zu tun,
erhalten
wir statt eines Maulwurfstreffers wir statt eines Maulwurfstreffers Und wir wollen das
Skript kontinuierlich ausführen. Gehen wir also zu Control, nehmen einen Block für immer und wickeln wir ihn um alle
Blöcke innerhalb des Skripts. Ordnung, und wenn wir
das Spiel starten und 2
Mole gleichzeitig treffen, erhöhen sich
sowohl die Punktezahl als auch
die Timer-Variablen um Fantastisch. Eine letzte Sache,
auf die ich hinweisen sollte, ist, dass wir, wenn wir uns
den Code für eines
der Mole-Sprites ansehen, die
Molehid-Nachricht nicht mehr verwenden Also, wenn wir wollen, könnten wir den Code für
alle Mole-Sprites
durchgehen und
die Broadcast-Molehid-Blöcke entfernen . Es schadet jedoch
nichts, die
Blöcke so zu lassen, Übrigens habe ich diesen Bug
nicht mit Absicht
im Spiel belassen. Es hat mich tatsächlich bis
zu diesem Punkt gebracht, bis ich ihn bemerkt habe, und das
zeigt nur, wie vorsichtig wir sein
müssen, wenn wir
Nachrichten und Scratch verwenden. Wie dem auch sei, jetzt, wo wir
den Fehler behoben haben, können
wir uns daran machen,
die Timer-Anzeige schön aussehen zu lassen.
27. Den Timer aufpeppen: Um die Timer-Anzeige zu verbessern, sollten wir die Standardeinstellung
aus dem Weg räumen Jetzt können wir
das Punkteziffer-Sprite duplizieren und den Namen
des Duplikats in eine Timer-Ziffer ändern des Duplikats in eine Timer-Ziffer Als Nächstes möchten wir, dass der Timer oben in der
Mitte der Bühne
angezeigt also im
Sprite-Code des Timers so einstellen, Lassen Sie uns also im
Sprite-Code des Timers so einstellen, dass die
Startposition Null ist Y-Position bleibt unverändert,
sodass sie
mit den Ziffern der Punktezahl übereinstimmt Klicken wir nun auf die grüne Flagge. Okay? Die Timer-Ziffern sind also korrekt
am oberen Rand
der Bühne zentriert und horizontal
mit den Punkteziffern ausgerichtet. Es
verwendet jedoch immer noch den Wert
der Score-Variablen, da wir ihn
noch nicht geändert haben, um
die Timer-Variable zu verwenden. Also lasst uns das Spiel beenden. Und im Skript Wenn ich
als Klon anfange, entfernen
wir den Punkteblock aus dem Switch-Kostümblock und ersetzen wir ihn durch einen Timer-Block aus der
Variablenkategorie. Wenn wir es jetzt ausführen,
verwendet es den richtigen Wert. Wenn der
Timer jedoch zweistellig ist, bleibt
die erste Ziffer in
der Mitte der Bühne und die andere wird
einfach rechts davon angezeigt
. Wir möchten, dass die
gesamte Timer-Anzeige zentriert erscheint,
unabhängig davon, wie viele
Ziffern sie enthält. Um das zu erreichen, müssen
wir beim Wechseln
des Kostüms jedes Ziffernklons Wechseln
des Kostüms jedes Ziffernklons kontinuierlich die Darstellung jedes Klons aktualisieren also zunächst von der Bewegung aus Lassen Sie uns also zunächst von der Bewegung aus einen Block mit zwei Sätzen hinzufügen Und platzieren wir ihn
irgendwo im Forever-Block des When
I Start as a Clone -Skripts Ordnung, also
die Timer-Anzeige in die richtige Position
zu bringen, erfordert ein wenig Mathematik Zuerst haben
wir im Green Flag-Skript eine Änderung X für Block, haben
wir im Green Flag-Skript eine Änderung X für Block mit der wir
das Sprite
um 25 Schritte
nach rechts bewegen ,
bevor wir jeden Klon erstellen Die 25 hier ist im Grunde die Breite, die
wir für jeden Klon verwenden Zu Beginn setzen wir also Position
jedes Klons auf seinen
Index multipliziert mit dem Breitenwert, wodurch sie auf der Bühne
richtig platziert werden. Gehen wir dazu zu Operatoren, nehmen einen
Multiplikationsblock und platzieren ihn innerhalb des Satzes X Two
im Skript Wenn ich
als Klon starte Und lassen Sie uns den
Breitenwert als zweite Eingabe verwenden. Also 25 in meinem Fall. für die erste Eingabe Gehen
wir für die erste Eingabe zu Variablen und fügen
einen Indexblock hinzu. Und weil wir jetzt
die Darstellung der einzelnen Klone festlegen , der HangX Byblock
im hat
der HangX Byblock
im Skript mit grüner Flagge keine Wirkung
mehr, sodass wir ihn
entfernen können das jetzt zu testen
: Wenn wir hier in der Phase mit der rechten Maustaste auf die
Oldtimer-Anzeige klicken , können
wir den Schieberegler wählen. Wie wir
bereits im Kurs gesehen haben, können wir einen Schieberegler verwenden, um den Wert
zu ändern Dies ist standardmäßig 0-100. Wenn wir jedoch erneut mit der rechten Maustaste darauf klicken, erhalten
wir eine Option zum Ändern des
Schiebereglerbereichs, wir die Minimal
- und Maximalwerte
des Schiebereglers ändern
können Minimal
- und Maximalwerte
des Schiebereglers Zum Beispiel können wir Wert
von Null auf
etwa 9.999 erhöhen Okay. Und wenn wir jetzt auf einen der Blöcke im Skript mit der
grünen Flagge klicken, können
wir den neuen Timer
wieder mit den
richtigen Ziffernabständen sehen wieder mit den
richtigen Ziffernabständen Jetzt müssen wir nur noch das Display
zentrieren. Dazu müssen
wir die
Gesamtzahl der Ziffern im Timer ermitteln und
die
Hälfte davon von
jedem Klonindex abziehen Hälfte davon von
jedem Klonindex Also lasst uns das Spiel beenden, um die
Klone zu entfernen. Dann gehen wir zu Operatoren und bringen vorerst einen Subtraktionsblock in
einen leeren Raum Dann nehmen wir einen
Divisionsblock und verwenden ihn als zweiten Eingang
des Subtraktionsblocks Für den zweiten Eingang
des Divisionsblocks können
wir eine Zwei eingeben Und für die erste Eingabe benötigen
wir die
Gesamtzahl der Timer-Ziffern. Dazu haben
wir in Operatoren eine Blocklänge. Damit können wir die
Gesamtzahl
der Buchstaben oder Ziffern
eines bestimmten Werts ermitteln. Wenn wir einen in den
Codebereich bringen und darauf klicken, erhalten wir fünf, was der Anzahl der Buchstaben
im Wort Apfel entspricht. Um die Anzahl der Ziffern
in der Timer-Variablen zu ermitteln, können
wir
den Timer-Block
hier oben duplizieren und ihn als Eingabe
für die Länge des Blocks verwenden. Wenn wir nun auf den Block klicken
, erhalten wir die Länge
der Timer-Variablen, die in meinem Fall
drei ist. In Ordnung. Jetzt können wir
das alles als ersten Eingang
des Divisionsblocks verwenden. Lassen Sie uns nun
den Indexblock
aus der Menge x zwei herausziehen aus der Menge x zwei und ihn
als ersten Eingang
des Subtraktionsblocks verwenden des Subtraktionsblocks Schließlich können wir die Exposition der
Klone auf all das
multipliziert mit
der Ziffernbreite einstellen das
multipliziert mit
der Ziffernbreite Okay, wenn wir jetzt auf das
grüne Flaggen-Skript klicken, ist
die Timer-Anzeige fast perfekt zentriert,
aber nicht Das liegt daran, dass wir noch nicht berücksichtigt haben, dass Scratch die Mitte
eines Sprites-Kostüms
verwendet wenn
es auf der Bühne positioniert wird Um das Problem zu beheben,
müssen wir nur
0,5 vom Wert
auf der linken Seite des
Multiplikationsblocks subtrahieren 0,5 vom Wert
auf der linken Seite des Multiplikationsblocks subtrahieren Dadurch wird
jede Ziffer auch um die
Hälfte der Ziffernbreite nach links
verschoben Lassen Sie uns also einen weiteren
Subtraktionsblock einfügen. Lassen Sie uns nun den
Subtraktionsblock hier oben herausziehen und ihn als ersten Eingang
des
Subtraktionsblocks hier unten verwenden des
Subtraktionsblocks Und davon subtrahieren
wir 0,5. Und jetzt können wir
all
das in den ersten Eingang des
Multiplikationsblocks eingeben das in den ersten Eingang des
Multiplikationsblocks Ordnung, wenn wir erneut auf das
grüne Flaggen-Skript klicken, ist
die Timer-Anzeige jetzt
perfekt in der Mitte der Bühne Und wir können auf die
grüne Flagge selbst klicken, um zu sehen
, ob sie
auch korrekt funktioniert, wenn der Timer herunterzählt. Wir werden auch das
alte Timer-Display nicht mehr benötigen, also können wir mit der rechten Maustaste
darauf klicken und Ausblenden wählen Und damit haben wir viel besser aussehende Timer
- und Punkteanzeigen. Aber für einen zusätzlichen visuellen
Effekt werden
wir in der nächsten Lektion dafür sorgen, dass jedes
Mal, wenn wir einen Maulwurf schlagen, ein fliegender Stern vom
Maulwurf aufsteigt und zu dem
Stern neben der Punktzahl aufsteigt
28. Fliegende Sterne hinzufügen: Um fliegende Sterne zu erzeugen, verwenden
wir Klone des
Sternensprites, die wir bereits haben, und wir lassen sie in der Nähe
der Position jeder
Form beginnen , die wir treffen, bewegen uns
schnell zum Stern
neben der Punktzahl und Ordnung, also zu Beginn müssen
wir eine gute Stelle im
Code finden
, um jedes Mal, wenn ein Maulwurf getroffen wird, einen
Sternklon zu erstellen jedes Mal, wenn ein Maulwurf getroffen wird, einen
Sternklon Wir könnten
das im Maulwurf-Sprite-Code machen, aber dann müssten wir es
für jeden einzelnen Maulwurfssprite machen , was nicht viel Spaß machen würde Eine viel bessere Option
wäre es also , es im Pow-Sprite-Code zu tun,
da wir nur einen
Pow-Sprite haben und
wir bereits
Klone davon erstellen, jedes Mal, wenn ein Maulwurf getroffen wird Okay, wir wollen also jedes Mal, wenn wir einen Power-Sprite-Klon erstellen,
auch einen Star-Sprite-Klon erstellen Und zum Glück
ist das ziemlich einfach, denn ein Sprite
kann nicht nur einen Klon von sich selbst erstellen, sondern auch einen
Klon eines anderen Gehen wir also zu Control und fügen
einen weiteren Klonblock hinzu, und wir können diesen hier direkt
unter dem anderen platzieren Und für diesen
wollen wir natürlich einen Klon
der Star-Sprites erstellen Okay, jetzt
müssen wir nur noch in
den Star-Sprite-Code gehen und
ihm sagen , was zu tun ist, wenn er als Klon
startet Lassen Sie uns also einen Klonblock einbauen, wenn
ich anfange. Stellen wir zunächst sicher, dass der Klon nicht hinter
den anderen Sprites
versteckt wird , indem wir zu
Looks gehen und dem Skript einen Block „Go to front
later“ hinzufügen Als Nächstes müssen wir den Klon
an die Position des getroffenen
Maulwurfs bewegen an die Position des getroffenen
Maulwurfs Und wie beim Kumpel Sprite können
wir das tun, indem wir die
Elemente in der Liste der getroffenen Maulwürfe verwenden Wenn wir jedoch
zum Po-Sprite-Code zurückkehren, löschen
wir gerade die Elemente aus
der Liste, bevor wir einen
Klon des Star-Sprites erstellen Wir könnten versuchen,
die Löschblöcke
nach dem Erstellen
der Klone an das Ende des Skripts zu verschieben nach dem Erstellen
der Klone an das Ende des Skripts Aber weil die Klonblöcke Skript
nicht wirklich unterbrechen, werden
die Elemente trotzdem gelöscht, bevor der
Star Sprite ausgeführt werden kann, wie
wenn ich
als Klon-Skript starte und die Elemente
verwende Anstatt die Elemente im
Pow-Sprite-Code zu
löschen, können
wir sie also im
Star-Sprite-Code löschen , wenn wir wissen, dass die Elemente nicht
mehr benötigt werden In Ordnung, um das zu tun, kopieren
wir zuerst die
Löschblöcke in den Star Dann entfernen wir sie
komplett aus dem Pow Sprite. Wir können hier auch die gleichen
Blöcke „
Gehe zu XY und Y ändern“ verwenden , um
jeden Star-Sprite-Klon
an die richtige Position zu bewegen jeden Star-Sprite-Klon
an die richtige Position zu Also lasst uns diese
Blöcke auch in den Star Sprite kopieren. Gehen wir nun zurück zum
Star-Sprite-Code. Lassen Sie uns
diese Blöcke zunächst in
einen leeren Bereich verschieben , damit wir sie besser sehen
können Wir werden die beiden Blöcke zum Erstellen von
Klonen hier nicht anklicken, damit
wir sie entfernen können. Dann können wir die Blöcke „Gehe zu XY“
und „Y ändern“
zu „Wenn ich
als Klon-Skript starte“ hinzufügen Blöcke „Gehe zu XY“
und „Y ändern“
zu „Wenn ich
als Klon-Skript starte und
die Löschblöcke ganz unten im Skript platzieren . Ordnung, wenn wir das Spiel jetzt
starten, jedes Mal, wenn wir einen Maulwurf schlagen, erstellt
es
jedes Mal, wenn wir einen Maulwurf schlagen, direkt darüber ein
Star-Sprite-Klon Jetzt müssen wir nur noch die Sternklone zum Stern neben der Punktzahl
fliegen lassen Lassen Sie uns dazu das Spiel beenden. Und wenn wir in
die Kategorie Bewegung gehen, haben
wir diese beiden Gleitblöcke Mit diesen können wir ein Sprite an eine
zufällige Position,
die Position eines anderen Sprites
oder an eine bestimmte
X- und Y-Position bewegen die Position eines anderen Sprites lassen, und wir können es
in einer bestimmten
Anzahl von Sekunden dort ankommen in einer bestimmten
Anzahl Wir wollen die Klone an die Position
des Sternsprites bewegen Position
des Sternsprites Da wir derzeit jedoch innerhalb des
Star-Sprite-Codes
arbeiten, gibt uns
Scratch nicht die Möglichkeit, zum Star-Sprite
zu gleiten Ich denke, weil es nicht wirklich Sinn macht,
einen Sprite zu sich selbst zu gleiten macht,
einen Sprite zu sich selbst zu Stattdessen können wir die XY-Version
verwenden sie auf die Werte der Startposition
des Stern-Sprites
setzen Startposition
des Stern-Sprites Okay, nehmen wir also einen XY-Block mit zwei
Gliden und fügen ihn als Klon-Skript am Ende
des Scripts „
Wenn ich anfange Und wenn wir das
Star-Sprite in der Phase nicht verschoben haben, sollten
die XY-Werte im
Glide-Block bereits mit denen übereinstimmen ,
die wir hier
im Block „Gehe zu XY“ haben Wenn nicht, stellen Sie einfach sicher, dass Sie die richtigen
eingeben. Und was die Gleitzeit angeht, wollen
wir, dass es ziemlich schnell Versuchen wir es also mit
etwa 0,2 Sekunden. Außerdem sind wir im Moment
noch nicht dabei, die
Klone von der Bühne zu löschen Gehen wir also zu
Control und
fügen am Ende des Skripts einen Block zum Löschen dieses Klones Okay, wenn wir das Spiel
jetzt starten und auf ein paar Formen treffen, fliegen
die Sternklone schnell bis zum Das sieht ziemlich gut aus, aber
um es noch besser zu machen, können
wir dafür sorgen, dass die Sternklone sehr klein
anfangen und
dann zu ihrer normalen Größe heranwachsen, bis sie
den
Punktestand erreichen Dafür beenden wir das Spiel
und
müssen ein
neues, wenn ich anfange,
als Klonskript erstellen wenn ich anfange,
als Klonskript Das liegt daran, dass der
Glide-Block das Script tatsächlich unterbricht, bis die
Gleitzeit abgelaufen ist,
und wir möchten, dass die
Animation zum Wachsen der Klone gleichzeitig ausgeführt wird Lassen Sie uns also einen weiteren hinzufügen, wenn
ich als Klonblock anfange. Als Nächstes beginnen wir mit der
Klongröße bei 0%. Gehen wir also zu Looks, geben eine festgelegte Größe für den Block ein
und setzen den Wert auf Null. Da wir das Spiel zu
Beginn des Kurses immer wieder gesehen haben und immer wieder Sprites
gespielt haben, dadurch die Spritegröße nicht ganz auf Null
gesetzt, aber es wird
nahe genug sein. Okay? Jetzt müssen wir nur noch
dafür sorgen, dass der Sprite wieder seine normale Größe Dazu können wir zur
Steuerung gehen und einen Wiederholungsblock einfügen Und lassen wir es fünfmal
wiederholen. Gehen wir dann zurück
zu Looks und fügen dem Wiederholungsblock
eine Änderung der Größe
nach Block Lassen Sie uns
die Größe jedes Mal um 20% ändern Da dieses Skript
wahrscheinlich
vor dem anderen fertig ist , lassen
wir den Block „Diesen
Klonen löschen“ unverändert Okay, wenn wir jetzt das Spiel spielen
und ein paar Formen anschlagen, fangen
die Sternklone klein an und nehmen an Größe zu, je näher sie dem
Punktestand kommen Und weil die Größe
der Klone am Ende
etwas größer als 100% ist, hat
die Animation ganz am Ende einen coolen
Pop-Effekt, und wir sind jetzt mit
der Grafik des Spiels fertig Eine
wichtige Sache fehlt jedoch
noch, und zwar die Soundeffekte Lassen Sie uns also
in der nächsten Lektion einige hinzufügen.
29. Soundeffekte hinzufügen: Um das Spiel zu beenden, fügen
wir einige Soundfehler hinzu. Einige gute Orte, um
Sounds abzuspielen , wären, wenn der
Spieler einen Maulwurf schlägt, wenn die fliegenden Sterne den Punktestand
erreichen
und wenn der Spieler auf die Schaltfläche „Erneut spielen“ klickt
, beginnen
wir mit der Schaltfläche „ Erneut
spielen“, indem im Sprite-Bereich das
Sprite „Erneut spielen“
auswählen Wenn wir auf die Registerkarte Sounds gehen, hat
der Sprite hier tatsächlich bereits einen Scratch fügt den Pop-Sound automatisch zu allen benutzerdefinierten
Sprites hinzu, die wir Um den Sound zu hören, können
wir hier auf die
Play-Schaltfläche klicken Ich denke, das klingt ziemlich
gut für einen Knopfdruck. Also lass es uns spielen, wann immer der
Spieler auf das Sprite klickt. Gehen wir dazu zunächst in den Code-Tab und wählen Sound Jetzt müssen wir nur noch
einen der Soundblöcke zum
I-Thin-Block des
WT-Sprite-Clicked-Skripts hinzufügen I-Thin-Block des
WT-Sprite-Clicked-Skripts Wenn wir den Block „Sound
bis fertig“ verwenden, wird
das Skript angehalten, bis
der Sound abgespielt ist Das ist nicht wirklich notwendig, also verwenden wir stattdessen
einen Start-Soundblock. Und der Pop-Sound sollte bereits
ausgewählt sein. Lass uns eigentlich auch einen
Sound spielen, wenn das Spiel vorbei ist. Dazu können wir in
den Hintergrundcode gehen und
im Fine-Start-Spiel hier unten im Block Ich dann
einen Sound abspielen, hier unten im Block Ich dann
einen Sound abspielen der prüft,
ob der Timer abgelaufen ist. Wenn wir zur Registerkarte Sounds gehen, haben
wir wieder den
Standard-Popsound
, den wir hier nicht benötigen. Löschen wir ihn
also, indem wir auf
das Papierkorbsymbol daneben klicken Um einen neuen Sound zu finden, haben
wir hier unten die Schaltfläche „
Sound auswählen Wir können einen Sound hochladen, einen zufälligen Sound
abrufen, einen Sound
aufnehmen und aus Sounds
auswählen, die
Scratch für uns bereitstellt. Lassen Sie uns mit dieser Option fortfahren. Ein gutes Spiel über den Sound ist eines hier
unten in der Nähe von
unten namens Oops Um es dem Hintergrund hinzuzufügen, müssen
wir es nur anklicken Jetzt können wir den Sound abspielen, wenn das Spiel vorbei ist,
indem wir zum Code-Tab zurückkehren und
dem Block I thin hier unten
einen Startsound Oops-Block hinzufügen Block I thin hier unten
einen Startsound Oops-Block Wenn wir das Spiel spielen
und es beenden lassen, der Oops-Sound abgespielt Und wenn wir auf die Schaltfläche „
Erneut abspielen“ klicken, wird der Pop-Sound abgespielt Als Nächstes spielen wir für
jeden fliegenden Stern einen Sound ab, sobald
er die Punktzahl erreicht hat. Um dies zu tun, beenden wir das Spiel und wählen
den Sternen-Sprite Wenn wir auf die Registerkarte Sounds gehen, hat
der Stern auch
einen Standardsound namens Collect, der so
klingt Das sollte gut funktionieren. Gehen wir also zurück zum
Code-Tab und verwenden ihn. Wir wollen diesen Sound abspielen, nachdem ein Klon den
Stern neben der Partitur erreicht hat, also nachdem der
Klon mit
dem Gleiten fertig ist Also schnappen wir uns einen Startblock zum Sammeln von
Sounds und platzieren ihn direkt unter
dem Gleitblock Wenn wir jetzt das Spiel spielen
und ein paar Maulwürfe schlagen, fliegen
die Sternenklone hoch
und spielen das Zum Schluss müssen wir nur noch
einen Soundeffekt abspielen ,
sobald wir einen Maulwurf schlagen Und weil wir uns nicht die Mühe machen
wollen,
den Code für jedes
einzelne Maulwurf-Sprite zu ändern , können
wir stattdessen einen Sound im
Po-Sprite-Code abspielen Wählen wir also den Pow-Sprite aus. Dann gehen wir zur Registerkarte Sounds. Wir werden den
Pop-Sound nicht benötigen, also löschen wir ihn. Klicken wir nun auf die Schaltfläche Sound
auswählen. Nach einigem Suchen habe ich drei gute Kandidaten
für einen Maulwurfstreffer gefunden. Der große Boeing-Sound hier. Der von Boeing hier
und dieser verrückte. Und zum Glück
müssen wir uns nicht nur für einen entscheiden. Stattdessen können
wir jeden
PW-Sprite-Klon zufällig einen der
drei Sounds abspielen Und das ist definitiv eine gute
Sache, denn glauben Sie mir,
jedes Mal, einen Maulwurf schlagen, immer wieder nur einen dieser
Sounds
abzuspielen wenn wir einen Maulwurf schlagen, immer wieder nur einen dieser
Sounds
abzuspielen,
wird Ordnung, also
fügen wir dem Sprite alle drei Sounds hinzu, indem wir
auf einen Gehen Sie zurück zur Seite „Sound
auswählen“, klicken Sie auf einen anderen und machen Sie dasselbe für
den dritten Okay, und um
einen zufälligen Sound zum Abspielen auszuwählen, werden
wir
eine Zufallszahl 1—3 generieren. Um es einfacher zu machen, ändern
wir den Namen
des ersten Sounds in eins und des zweiten eins in zwei. Und der dritte eins bis drei. Dann können wir einfach
den Sound abspielen, dessen Name
der Zufallszahl
entspricht. Und um das zu tun,
gehen wir in den Code-Tab. Wir können einen Sound entweder hier
im Block I thin abspielen, wo wir einen neuen Klon erstellen oder wir können ihn in dem Skript Wenn
ich starte als Klonskript abspielen. Ich entscheide mich für die zweite Option. Also nehme ich mir einen
Start-Soundblock und
platziere ihn irgendwo vor
den Wiederholungsblöcken. Als Nächstes, um eine
Zufallszahl 1—3 zu erhalten, gehen
wir zu Operatoren
, nehmen einen zufälligen Block platzieren ihn in den
Start-Soundblock. Und verwende eine Eins und eine Drei
als Eingabewerte. Okay, wenn wir das Spiel jetzt spielen, hören
wir jedes
Mal, wenn wir einen Maulwurf schlagen, ein zufälliges Geräusch Und damit sind wir offiziell fertig mit unserem
ersten Rubbelspiel Also herzlichen Glückwunsch zu
all Ihrer harten Arbeit. Es gibt
jedoch definitiv noch einige weitere Verbesserungen, die wir vornehmen können Verbesserungen, die wir vornehmen können, also zögern Sie nicht,
weiter an Ihrer zu arbeiten. Und wenn du das tust,
schicke mir bitte einen Link zu deinem Spiel, denn ich würde gerne sehen, was
du dir einfallen lässt. Ordnung, wann immer
du bereit bist, sehe
ich dich in der
nächsten Lektion, wo wir mit der Arbeit an
einem brandneuen Spiel beginnen werden. Zwei.
30. Kosmisches Chaos Einführung: Das nächste Spiel, das wir entwickeln werden, ist ein Weltraum-Shooter
namens Cosmic In diesem Spiel
lernen wir, wie man
einen Titelbildschirm erstellt , der zu
Beginn des Spiels angezeigt Wir werden auch lernen, wie man
Musik spielt , die kontinuierlich im Hintergrund
läuft, wie man
sie so gestaltet, dass der Spieler die Musik und die
Soundeffekte ein- und
ausschalten kann Musik und die
Soundeffekte ein- und
ausschalten Der Zweck des
Spiels wird es sein,
durch das Abschießen von Asteroiden
mit unseren Lasern so viele
Punkte wie möglich Abschießen von Asteroiden
mit unseren Lasern bevor wir unweigerlich selbst
zerstört werden Um die
Überlebenschancen des Spielers zu verbessern, werden
wir Screen-Wrapping implementieren, sodass sich der Spieler von einer Seite
der Bühne zur anderen
teleportieren Außerdem wird es Pickups
geben, die Fähigkeiten
der Spieler vorübergehend verbessern, indem sie ihnen
beispielsweise ermöglichen, in drei verschiedene
Richtungen gleichzeitig zu schießen,
Asteroiden zu zerstören, indem sie sie einfach
berühren, und sie können eine Bombe zünden, die alle Asteroiden
in einer bestimmten Entfernung
zerstört Es wird eine Menge
Spaß machen, diesen zu erstellen .
Lassen Sie uns also gleich loslegen.
31. Ersteinrichtung: Laden wir zunächst
ein neues Projekt hoch, indem
wir auf Datei > Neu klicken. Und nennen wir es kosmisches
Chaos. In Ordnung Und irgendwann werden
wir ein paar bewegte Sterne im
Hintergrund erscheinen lassen. Aber vorerst
machen wir es einfach durchgehend schwarz. Wählen wir also hier im Bühnenbereich
einen Hintergrund aus, und nehmen
wir auf der Registerkarte „Hintergründe“ das Rechteckwerkzeug, wählen Schwarz für die Füllfarbe und nichts für den Dann zeichnen wir ein
Rechteck, das
den gesamten
Bühnenbereich der Leinwand abdeckt den gesamten
Bühnenbereich der Leinwand Wir werden irgendwann auch einen Titelbildschirm
erstellen,
der
eine Startschaltfläche enthalten wird, die die Nachricht zum
Starten des Spiels
sendet wenn der Spieler darauf klickt Wenn die Sprites
die Nachricht „Spiel starten“ erhalten, bereiten sie
sich auf das Aber bis wir
den Titelbildschirm erstellt haben, können
wir dafür sorgen, dass der
Hintergrund die Meldung „Spiel starten“ sendet , wenn auf
die grüne Flagge geklickt wird, sodass das Spiel sofort
gestartet Gehen wir also in den Code-Tab. Und aus den Ereignissen
holen wir uns einen Gewinn, grüne
Flagge, geklickt auf Block Jetzt müssen wir dem Skript nur noch
einen Broadcast-Block hinzufügen und eine neue
Nachricht namens Start Game Ordnung. Und nachdem wir uns
darum gekümmert haben, werden wir als Nächstes mit der Arbeit
an den Sprites der Spieler beginnen
32. Die Spieler-Kostüme zeichnen: Wählen wir hier Sprite One und benennen es in Player um Lassen Sie uns nun zu den Kostümen gehen, und wir werden
Scratchcat für dieses Projekt nicht benötigen In Kostüm eins können
wir also alle
Kostümteile auswählen
und löschen .
Entschuldigung, Scratchcat Okay, das
Spieler-Sprite wird
ein Raumschiff sein und nur zum Spaß werden
wir verschiedene, leicht
unterschiedliche Kostüme
für das Sprite kreieren unterschiedliche Kostüme Auf dem Titelbildschirm kann
der Spieler zwischen den verschiedenen Kostümen wechseln Ordnung, für
das erste Kostüm nehmen
wir uns das Rechteckwerkzeug und können
für die Füllung
jede beliebige Farbe verwenden . Ich nehme das hellblaue. Und ich lasse die
Gliederung ausgeschaltet. Lassen Sie uns nun die
Leinwand etwas vergrößern und ein Rechteck
zeichnen
, das ungefähr sechs Blöcke breit und 11 Blöcke hoch ist. Als Nächstes können wir uns
das Werkzeug zum Umformen schnappen und dem Rechteck
eine schöne Raumschiffform geben Ich füge zuerst einen Knoten in
der Mitte der oberen Kante hinzu
und füge außerdem einen Knoten hinzu, der
etwa drei Blocks unteren Rand
entfernt ist, sowohl am linken als auch
am rechten Jetzt lösche ich
die beiden oberen Eckknoten. Für die beiden Knoten, die
ich hier unten hinzugefügt
habe, wähle ich beide aus und
verwandle sie in spitze Knoten. Dann ziehe ich
die Griffe
des obersten Knotens etwas heraus , um die Krümmung zu
erhöhen. Abschließend wähle ich jede Notiz in
der unteren Ecke einzeln aus und
verschiebe sie ein wenig nach innen Und ich halte dabei die Umschalttaste gedrückt , um die Bewegung
auf der horizontalen Achse beizubehalten Als Nächstes können wir ihm Flügel verleihen. Lassen Sie uns dafür erneut das
Rechteckwerkzeug verwenden, und für die Füllfarbe verwende
ich ein hellgraues Bild. Zeichnen wir nun ein Rechteck
auf der linken Seite. Schicke es unter die Körperform. Verwenden Sie dann das Umformungswerkzeug , um ihm eine flügelähnliche Form zu geben Für den äußeren Rand des Flügels nehme
ich das Linienwerkzeug, ändere die Umrissbreite
auf etwa vier, und für die Umrissfarbe verwende
ich zuerst das Farbbild um dasselbe
Blau wie den Körper auszuwählen, aber ich mache es etwas dunkler Dann zeichne ich eine Linie,
die den Rand des Flügels bedeckt. Jetzt können wir das Auswahlwerkzeug verwenden, um beide Flügelformen
zu erfassen, die Taste oder die Wahltaste
gedrückt halten, um sie
zu duplizieren,
und sie auf die
andere Seite ziehen, während Umschalttaste
gedrückt halten, damit sie
horizontal ausgerichtet bleiben. Dann können wir
sie horizontal drehen. Als Nächstes fügen wir am Boden des
Raumschiffs ein Triebwerk am Boden des
Raumschiffs Dafür können wir uns noch einmal das
Rechteckwerkzeug nehmen, und für die Füllfarbe verwende
ich dasselbe Dunkelblau, das ich für
die
Linie auf den Flügeln verwende Dann zeichnen wir ein Rechteck
, das den unteren Rand
der Körperform überlappt und etwa einen Block
nach unten reicht Jetzt schicken wir es nach unten und formen es ein wenig um, wenn wir wollen Abschließend fügen wir dem Körper ein
Fenster hinzu. Nehmen wir dazu das Sleck-Werkzeug Wenn wir Alt oder
die Wahltaste gedrückt halten und auf die Körperform klicken, wird
direkt darüber ein Duplikat erstellt Jetzt können wir das
Duplikat
dunkelgrau machen und es
etwas verkleinern , während wir die
Alt- oder Wahltaste gedrückt halten, damit es Jetzt können wir
das Werkzeug zum Umformen verwenden, die beiden unteren Knoten
entfernen und
dann
weitere Anpassungen vornehmen, dann
weitere Anpassungen vornehmen bis wir etwas bekommen Okay, jetzt, wo wir
alle Formen fertig haben, stellen wir sicher, dass sie
alle mittig auf
der Leinwand sind, indem
wir sie
alle auswählen und die
Auswahl in der Leinwand sind, indem
wir sie
alle auswählen der Lass uns jetzt an
Kostüm Nummer zwei arbeiten. Lassen Sie uns zunächst das
aktuelle Kostüm zwei löschen. Dann lassen Sie uns
Kostüm eins duplizieren. Für diesen werde ich die
Formen
beibehalten, außer dass ich ein
hellrotes Rot für den Körper verwende. Und ich mache das Triebwerk und die Flügellinien in einem
dunkleren Rotton Okay, für ein anderes Kostüm duplizieren
wir Kostüm zwei, und ich verwende Grün für dieses Wir können die Form auch ein bisschen verändern
. Wir wollen hauptsächlich nur
die Breite und Höhe
ungefähr gleich halten , und wir
wollen vor allem, dass das Triebwerk in
derselben Position bleibt , damit wir keine Probleme haben , wenn
wir später die Flamme hinzufügen Für ein weiteres Kostüm werde
ich Kostüm drei duplizieren und lila für die Farben verwenden gerne weitere
Kostüme kreieren, wenn du möchtest, und sie ein bisschen mehr abändern. Aber ich bleibe bei diesen vier. Und
lassen Sie uns vorerst wieder
zu Kostüm eins übergehen. Ordnung, und wenn die
Kostüme fertig sind, bringen
wir als Nächstes den Spielergeist dazu, sich auf der Bühne zu
bewegen
33. Den Spieler bewegen: Bevor wir anfangen,
das Spieler-Sprite zu programmieren, ist
mir aufgefallen, dass die Flügel
des Sprites auf der Bühne etwas
gezackt aussehen wir einige Muttermale gesehen und geschlagen haben, können
wir das beheben, indem wir
das Rechteckwerkzeug wählen, die Feldfarbe
und die Umrissfarbe
ausschalten und ein
unsichtbares Rechteck
um das Kostüm des Sprites zeichnen um Für die anderen Kostüme können
wir das
unsichtbare Rechteck auswählen, auf die Schaltfläche „Kopieren“ klicken, dann zu einem der
anderen Kostüme gehen und auf die Schaltfläche „Einfügen“ klicken Das
Rechteck sollte dann an derselben Stelle eingefügt Jetzt können wir dasselbe für
die restlichen Kostüme tun. Dann wechseln wir
zurück zu Kostüm eins und wechseln
zum Code-Tab. Okay? Um also das Spieler-Sprite
auf der Bühne zu bewegen, lassen
wir den Spieler
entweder die Pfeiltasten
oder die WASD-Tasten benutzen entweder die Pfeiltasten
oder die WASD-Tasten Und wenn wir überprüfen, ob der Spieler eine Bewegungstaste drückt, wollen wir nicht den Block zum Drücken
der Win-Taste aus
der Event-Kategorie verwenden Block zum Drücken
der Win-Taste aus
der , um zu sehen, warum Lassen Sie uns weitermachen und einen
hineinbringen und ihn so
einstellen, dass er prüft, wann die
Rechtspfeiltaste gedrückt ist Gehen wir nun zur Bewegung über, bringen wir eine Änderung x für Block ein. Und lassen wir es X nach dem anderen
ändern. Wenn wir jetzt immer wieder
die
Rechtspfeiltaste drücken , bewegt sich
das Spieler-Sprite in
der Stufe nach rechts Halten wir die Taste jedoch gedrückt, bewegt
es sich einmal, pausiert dann kurz und fängt
dann wieder an, sich zu bewegen Das ist vergleichbar mit der Eingabe eines
Buchstabens in ein Textverarbeitungsprogramm. Wenn wir eine Buchstabentaste gedrückt halten, tippt
sie den Buchstaben einmal ein, Pause und setzt dann die
Eingabe des Buchstabens fort Es versteht sich von selbst, dass
die Pause, obwohl
sie sehr kurz ist, in
einem Videospiel, das schnelle Bewegungen
erfordert, zu Problemen führen würde einem Videospiel, das schnelle Bewegungen
erfordert, Lassen Sie uns also
die beiden Blöcke trennen
und den Block, auf den die
Win-Taste gedrückt wurde, loswerden Stattdessen
wollen wir nun kontinuierlich überprüfen, ob eine
Bewegungstaste gedrückt wird. Wir haben schon früher gesehen, dass wir
das tun können , indem wir zuerst die Steuerung aufrufen, einen Block für immer einfügen, einen Block in dünne Form
hineinlegen und aus der Kategorie
Sensorik können
wir einen
Block mit gedrückter Taste als Bedingung verwenden. Wenn wir es so einstellen, dass es prüft, ob die rechte Pfeiltaste gedrückt
wird, geben wir die Änderung blockweise in
den Block I thin ein und
klicken auf das Skript. nun die
rechte Pfeiltaste gedrückt halten, bewegen
wir das Sprite ohne Pausen nach
rechts Da wir auch
wollen, dass der Spieler
die WASD-Tasten benutzt, um sich zu bewegen, können
wir die Änderung x
um einen Block ausführen lassen die WASD-Tasten benutzt, um sich zu bewegen, , wenn entweder die rechte Pfeiltaste oder
die D-Taste gedrückt wird Dazu können wir zu den
Operatoren gehen und einen
OR-Block einfügen Und lassen Sie uns den Block mit der rechten
Pfeiltaste
als erste Bedingung verwenden . Für die zweite Bedingung können
wir
den Tastendruckblock duplizieren und ihn ändern, um nach der D-Taste zu
suchen. Wenn wir jetzt den Or-Block
als I dünne Bedingung verwenden, können
wir das Sprite nach rechts
bewegen, indem wir entweder die rechte Pfeiltaste oder die D-Taste
gedrückt halten nach links zu gehen, duplizieren
wir als Nächstes den Block I thin und platzieren diesen direkt
unter dem ersten Bei der Bewegung nach links wollen
wir überprüfen, ob entweder die linke Pfeiltaste oder
die A-Taste gedrückt wird. Und dieses Mal wollen wir X durch minus eins
ändern. Wenn wir das jetzt ausführen, können wir
das Sprite des Spielers nach
rechts und links bewegen das Sprite des Spielers nach
rechts und links Jetzt müssen wir nur noch all das tun,
um den
Spieler auf und ab zu bewegen Anstatt jedoch eine
ganze Reihe von ITN-Blöcken zu verwenden, möchte ich Ihnen einen Trick zeigen Wenn wir einen der Oder-Blöcke
in ein leeres Feld verschieben und darauf klicken, hat
er erwartungsgemäß den Wert False Und wenn wir
eine der ausgewählten Tasten gedrückt halten bevor wir
auf den Block klicken, hat
sie erwartungsgemäß den Wert true. Eine Sache, die Sie jedoch wissen sollten, ist, dass in der
Computerprogrammierung falsch oft als Null und wahr oft als Eins
behandelt wird. Um zu sehen, warum das nützlich ist, lassen Sie uns die
Änderung x um einen Block
hervorheben und stattdessen X um
den Wert des O-Blocks ändern. Und ja,
obwohl der OR-Block eine andere Form
als der Eingabeblock hat, springt
er trotzdem direkt hinein. Wenn wir
jetzt auf den HangXBlock klicken, passiert nichts. Wenn wir jedoch eine
rechte Bewegungstaste gedrückt halten, jedes Mal, wenn wir auf
den Block klicken bewegt sich der Spieler
jedes Mal, wenn wir auf
den Block klicken,
nacheinander nach rechts In ähnlicher Weise
lassen wir bei einer
Bewegung nach links den anderen Block oder Block
sowie die Änderung x
um einen negativen Block hervorheben. Da der Or-Block
immer entweder
eine Null oder eine Eins sein wird , , damit er X um minus Eins
ändert ,
wenn eine linke
Bewegungstaste gedrückt wird müssen
wir seinen Wert negieren Dazu können wir einen Subtraktionsblock einfügen und den Or-Block als
zweite Eingabe
verwenden Für die erste Eingabe können
wir eine Null setzen oder wir können
sie einfach leer lassen, was den gleichen Effekt hat Wenn wir nun
das alles blockweise in die Änderung
einfügen und die linke Bewegungstaste gedrückt
halten, jedes Mal, wenn wir auf
den Block klicken bewegt sich das Sprite
jedes Mal, wenn wir auf
den Block klicken, nach links Okay, jetzt, zurück im Forever-Block, können
wir
die beiden, wenn auch dünnen Blöcke, loswerden und die beiden X-Change-Blöcke
direkt in
den Forever-Block legen X-Change-Blöcke
direkt in
den Forever-Block Und wir können weitermachen und den Block
ausführen, um
sicherzustellen, dass die Rechts- und
Links-Bewegung immer noch korrekt funktionieren Beachten Sie auch, dass, wenn wir gleichzeitig
eine rechte Bewegungstaste
und
eine linke Bewegungstaste gedrückt halten eine rechte Bewegungstaste
und , der erste Block für Änderung x eins und der zweite
negativ ist. Die Blöcke werden sich
also
gegenseitig aufheben und das
Sprite bewegt sich nicht Okay, jetzt zur
vertikalen Bewegung, gehen
wir zur Bewegung und fügen zwei
Y-B-Change-Blöcke zum Forever-Block Verwenden
wir für den ersten Block ein Duplikat
des Or-Blocks aus dem
ersten Change-X-Block. Wenn Sie Y um eins ändern, bewegt sich das
Sprite nach oben. Bei den Tasten wollen
wir also nach der
Aufwärtspfeiltaste und der W-Taste suchen nach unten zu gehen, können
wir schließlich den
Subtraktionsblock
im zweiten X-Block duplizieren , ihn in den zweiten
Y-Block
setzen und ihn
nach dem Abwärtspfeil und der S-Taste suchen
lassen wir auch weiter
und machen es so, dass der Forever-Block immer
dann läuft, wenn das Spiel beginnt Gehen wir dazu zu den
Ereignissen und fügen an den Anfang des Forever-Blocks einen Block
an,
wenn ich ein Startspiel erhalte Block
an,
wenn ich ein Startspiel erhalte. Da der Hintergrund
gerade die Startmeldung
des Spiels sendet ,
sobald auf die grüne
Flagge geklickt wird, können
wir jetzt auf die
Flagge klicken, um zu sehen sowohl die horizontale als auch die
vertikale Bewegung
korrekt funktionieren . Eine Sache, die Sie jedoch
vielleicht bemerken,
ist, dass, wenn wir uns
diagonal bewegen, indem wir gleichzeitig
eine horizontale und eine vertikale
Bewegungstaste gedrückt halten , das Sprite scheint um einiges schneller zu
bewegen als wenn wir uns nur auf einer Achse
bewegen Das ist ein häufiges
Problem, das ich bei
Spielen sehe , die von neuen
Spieleentwicklern entwickelt wurden, und der Grund dafür ist , dass, wenn wir uns
nur auf einer einzigen Achse bewegen, das Sprite genau einen Schritt über die
Bühne bewegt Wenn wir uns jedoch gleichzeitig auf
beiden Achsen bewegen, bewegt sich
das Sprite tatsächlich
um mehr als einen Um genau zu berechnen,
wie weit es sich bewegt, können
wir den
Satz von Pythagoras verwenden, der in diesem Fall die
Quadratwurzel der Summe
aus X im Quadrat und Y im Quadrat
wäre können
wir den
Satz von Pythagoras verwenden, der in diesem Fall die
Quadratwurzel der Summe
aus X im Quadrat und Y im Quadrat
wäre. Wenn wir uns nur auf
einer einzigen Achse bewegen, erhalten wir die
Quadratwurzel von Eins, die eins ist,
also bewegen wir uns um einen Abstand von einem Schritt Wenn wir uns jedoch gleichzeitig auf
beiden Achsen bewegen, erhalten
wir die Quadratwurzel von zwei, was einer Entfernung von
etwa 1,414 Damit sich das Sprite immer
nur um einen einzigen Schritt bewegt, müssen wir
nur die X- und Y-Bewegungswerte
durch den Abstand zwischen
den beiden Werten dividieren die X- und Y-Bewegungswerte
durch den Abstand zwischen
den beiden Werten durch den Abstand zwischen
den beiden Das nennt man Normalisierung. Okay, zurück im Code,
anstatt sofort die Bewegungswerte zu verwenden, um
die
X- und Y-Positionen der Sprites zu ändern wie wir es gerade tun, werden
wir
einige temporäre Variablen
zum Speichern der Werte erstellen zum Speichern Wir benötigen eine Variable
für die Änderung von X, eine für die Änderung von Y
und eine weitere, um
den Abstand zwischen ihnen zu berechnen Lassen Sie uns für all das also zu Variablen gehen und
die Standardvariable M entfernen . Dann klicken wir auf Variable
erstellen. Für die Änderung von X können
wir kurz Delta X
oder Dx verwenden, und nur das Spieler-Sprite
benötigt Zugriff auf die Variable Lassen Sie uns also nur für
dieses Sprite wählen. Als nächstes für die Änderung und Y können
wir DY verwenden, auch nur
für dieses Sprite Schließlich können
wir für die Entfernung Disc verwenden und
es nur für dieses Sprite erstellen Lassen Sie uns nun alle
Tastenkombinationsblöcke aus den Änderungsblöcken entfernen Tastenkombinationsblöcke aus den Änderungsblöcken Dann können wir
alle Änderungsblöcke loswerden. Als Nächstes fügen wir dem Forever-Block einen
Block mit zwei Sätzen hinzu
und machen es so, dass
Dx hier auf den Wert des
rechten Bewegungsblocks gesetzt Sätzen hinzu
und machen es so wird. Jetzt müssen wir blockweise
eine Änderung vornehmen und dx um den Wert
des linken Bewegungsblocks
ändern. Wenn wir das Spiel jetzt starten, ohne
eine Bewegungstaste zu drücken, dx gleich Null. Wenn wir eine
rechte Bewegungstaste drücken, ist es eins, und wenn wir eine linke Bewegungstaste
drücken, ist sie negativ. Ordnung. Lassen Sie uns nun einen weiteren Satz zum Blockieren hinzufügen und dafür sorgen, dass DY auf den Wert des Blocks mit
der Aufwärtsbewegung gesetzt wird. Lassen Sie uns dann blockweise eine
Änderung einfügen und dy um den Wert
des Abwärtsbewegungsblocks
ändern. Jetzt ändern sich sowohl DX als auch DY,
wenn wir die Bewegungstasten drücken. Um die Disc variabel zu setzen, fügen
wir als Nächstes einen Satz
von zwei Blöcken hinzu und platzieren ihn direkt hinter allen
DX- und DY-Blöcken. Um es auf den Abstand
zwischen DX und DY einzustellen, verwenden
wir den Satz von Pedagoean Gehen wir zunächst zu Operatoren und
nehmen uns diesen Block, in dem
momentan abs of steht, momentan abs of steht und legen ihn in
den Block mit der zweiten Scheibe Anstatt die
Bauchmuskeln oder den absoluten Wert zu ermitteln, wollen
wir die
Quadratwurzel oder kurz SRT ermitteln Als Nächstes fügen
wir innerhalb der
Quadratwurzel des Blocks einen zusätzlichen Block hinzu Dann fügen
wir für jeden der Eingänge des
Additionsblocks einen
Multiplikationsblock ein Ordnung, also für den ersten
Multiplikationsblock wollen
wir den
Wert von dx mit sich selbst multiplizieren Gehen wir also zu Variablen und fügen wir jeder Eingabe einen
DX-Block hinzu Für den zweiten
Multiplikationsblock wollen
wir dy mal dy machen Wenn wir jetzt das Spiel starten und nichts
drücken, erhalten
wir eine Entfernung von Null nur eine Bewegungstaste drücken erhalten wir eine Entfernung von eins, und wenn wir gleichzeitig eine horizontale und eine vertikale Taste drücken , erhalten wir
eine Entfernung von
1,414 usw.
In Ordnung Jetzt müssen wir nur noch DX und DY durch Disc teilen
und dann das Spieler-Sprite
anhand der DX- und DY-Werte bewegen Wenn jedoch keine Bewegungstasten gedrückt
werden, ist die
Diskette Null, und Sie erinnern sich vielleicht aus dem Mathematikunterricht, dass eine Division
durch Null nicht möglich Wenn wir
in der Computerprogrammierung versuchen, durch Null zu dividieren, erhalten wir einen Fehler. Wenn die
Entfernung Null ist, sollte sich das Sprite
des Spielers sowieso nicht bewegen, also führen wir nur
die Divisionen durch und bewegen den Spieler, wenn die
Entfernung nicht Null ist Gehen wir dazu zur Steuerung. Und lassen Sie uns
einen dünnen Block hineinbringen und ihn für den Moment in eine
leere Stelle legen. Nun, für die Disc-Variable wird
der Wert immer nur
Null oder etwas
höher als Null sein . Er wird niemals negativ sein. Daher müssen
wir für den Zustand
des I-Thin-Blocks nur sicherstellen, dass die
Disc größer als Null ist. Gehen wir also zu den Operatoren und fügen wir einen Block „
größer als“ hinzu. Gehen wir nun zu Variablen
und prüfen wir, ob dist größer als Null
ist. Okay. Jetzt müssen
wir innerhalb
des Wenn-Den-Blocks sowohl
Dx als auch Dy durch Disc teilen. Lassen Sie uns also zwei Blöcke mit
zwei Sätzen einbauen. Gehen wir in jedem Block zu Operatoren und fügen einen Divisionsblock hinzu. In Ordnung. Für den ersten
lassen wir es auf dx setzen. Gehen wir dann zurück zu den Variablen und wir wollen dx
auf den aktuellen Wert
von dx geteilt durch
den Wert von disc setzen . In ähnlicher Weise wollen
wir für den
zweiten Satz, der blockiert werden soll, DY auf
dy geteilt durch Disk setzen. Lassen Sie uns nun den Block I und
dann innerhalb
des Forever-Blocks unter
allen anderen Blöcken platzieren . Wenn wir das Spiel jetzt starten, ist
jedes Mal, wenn wir nur
eine einzige Bewegungstaste drücken, die Entfernung eins,
was bedeutet, dass DX und DY durch eins geteilt werden, was keine Auswirkung hat. Wenn wir jedoch gleichzeitig
eine horizontale und eine
vertikale Taste drücken , können
wir sehen, dass DX und DY tatsächlich
durch den Entfernungswert geteilt werden. Jetzt müssen wir nur noch die X- und Y-Positionen
der Sprites um
die endgültigen DX- und DY-Werte ändern X- und Y-Positionen
der Sprites um die endgültigen DX- und DY-Werte Gehen wir dazu zu Motion und fügen am unteren Rand des I Thin Blocks sowohl
eine
Änderung X B als auch eine Änderung Y für Block Nun wollen wir zu Variablen gehen, X um den Wert von dx und Y um
den Wert von DY ändern. Okay, wenn wir das Spiel jetzt starten, können
wir die Sprite
der Spieler wieder
auf der Bühne bewegen Sprite
der Spieler wieder
auf der Aber jetzt
sieht die diagonale Bewegung viel natürlicher aus. Sie bewegt sich allerdings etwas
zu langsam, da wir uns in jedem Frame nur
um einen Schritt bewegen. Damit es sich schneller bewegt, können
wir DX und DY mit einem
bestimmten Wert multiplizieren , wenn wir
die X- und Y-Positionen ändern. Gehen wir dazu zu Operatoren
und fügen zwei
Multiplikationsblöcke hinzu Jetzt können wir diese verwenden, um
sowohl DX als auch DY mit
etwa fünf zu multiplizieren sowohl DX als auch DY mit
etwa fünf Dann ändere X und Y um
die resultierenden Werte, und jetzt
bewegt sich das Sprite des Spielers viel schneller
über die Bühne Außerdem müssen wir
die Werte der Variablen
auf der Bühne nicht mehr wirklich sehen , also lasst uns weitermachen und sie verstecken Ordnung, die
Spielerbewegung
sieht jetzt also ziemlich gut aus. Im Moment kommt
das Sprite jedoch loslassen abrupt
zum Stillstand,
sobald wir
die Bewegungstaste Um das Aussehen und die
Haptik der Bewegung zu verbessern, können
wir sie so einrichten, dass das Sprite etwas
sanfter stoppt Das ist ziemlich einfach zu
bewerkstelligen und wir werden
in der nächsten Lektion sehen, wie
34. Die Spielerbewegung glätten: Um den Spieler zum Spriten zu bringen, musst du einen sanfteren Stopp einlegen Gehen wir zunächst zu Variablen
und erstellen ein paar neue. Nennen wir die erste Geschwindigkeit X und machen sie nur für
dieses Sprite Für das zweite nennen
wir es Geschwindigkeit Y. Auch nur für dieses Sprite, und wir können weitermachen und die Variablen
verstecken Ordnung, also was
wir
mit diesen Variablen machen werden, ist
, sie zu mit diesen Variablen machen werden, ist verwenden, um die Position des Spielers zu
aktualisieren, jeden Frame oder jede Iteration
der Und zu Beginn
des Spiels wollen
wir natürlich nicht, dass sich
der Spieler überhaupt bewegt Am Anfang des Skripts
über dem Forever-Block fügen
wir also Satz zwei Blöcke ein und setzen sowohl
Geschwindigkeit x als auch Geschwindigkeit Y auf Null. Als Nächstes setzen wir im Block Ich dann hier, wo wir prüfen, ob die Entfernung größer als Null
ist, anstatt
die X- und Y-Position des Spielers direkt zu ändern , wo wir prüfen, ob die Entfernung größer als Null
ist,
anstatt
die X- und Y-Position des Spielers direkt zu ändern,
SpeedX und Geschwindigkeit Y auf Dx mal fünf und D Y
mal fünf. Lassen Sie uns die
beiden Änderungsblöcke herausziehen und sie vorerst beiseite legen Lassen Sie uns sie
im Skript durch zwei
Blöcke ersetzen im Skript durch zwei
Blöcke Für den ersten setzen wir
speedx auf Dx mal fünf, und für den zweiten setzen
wir Geschwindigkeit Y
auf DY mal fünf Nehmen wir nun die
beiden Änderungsblöcke und platzieren sie unter
dem Block, wenn dünn Ändern wir X durch Geschwindigkeit
X und Y durch Geschwindigkeit Y. Ordnung, wenn wir das Spiel starten
und eine Bewegungstaste drücken, bewegt sich
das Sprite einfach
weiter in dieselbe Richtung, auch wenn wir
die
Taste loslassen Was wir jetzt tun wollen,
ist, dass wir, nachdem wir die Werte SpeedX
und Speed Y verwendet haben, um
die X- und Y-Positionen
jedes Frames zu ändern , auch die Werte für
jeden Frame
reduzieren und
sie auf Null bringen wollen jeden Frame
reduzieren und
sie auf Null bringen Dazu können wir die Werte für Geschwindigkeit X
und Geschwindigkeit Y mit
einer Dezimalzahl von 0-1
multiplizieren Werte für Geschwindigkeit X
und Geschwindigkeit Y mit
einer Dezimalzahl von 0-1 Dadurch werden sie
gleichmäßig auf Null reduziert Okay? Lassen Sie uns also nach der
Änderung der X- und Y-Blöcke einen Satz von zwei Blöcken
einfügen und damit SpeedX einstellen Gehen wir nun zu den
Operatoren und fügen X-Block
der eingestellten Geschwindigkeit
einen Multiplikationsblock für die erste Eingabe Verwenden
wir für die erste Eingabe eine Dezimalzahl 0-1. Je niedriger die Zahl, desto schneller sinkt der Wert
und desto schneller kommt
das Spieler-Sprite
zum Stillstand und umgekehrt Für den Effekt, nach dem
wir suchen, sollten
wir einen
ziemlich hohen Wert wie 0,8 wählen nun zur zweiten Eingabe Gehen
wir nun zur zweiten Eingabe zu Variablen und
fügen einen Geschwindigkeits-X-Block ein. Wir können jetzt den Block mit
der eingestellten Geschwindigkeit x duplizieren, ihn nach unten
platzieren
und ihn so einstellen, dass er die
Geschwindigkeit Y als Variable festlegt. Und um den Block Geschwindigkeit
X hier einfach in
den Block Geschwindigkeit Y umzuwandeln , können
wir mit der rechten Maustaste darauf klicken
und Geschwindigkeit Y wählen. Wenn wir das Spiel jetzt starten
und das Sprite bewegen, wenn wir
die Bewegungstasten loslassen, kommt
es
allmählich und geschmeidiger zum Damit das Sprite
etwas mehr driftet, bevor es stoppt, können
wir eine höhere
Dezimalzahl verwenden, z. B. 0,95 Und damit es schneller stoppt, können
wir etwas wie 0,6 versuchen Aber ich denke, 0,8
funktioniert ziemlich gut. Also bleibe ich dabei. Wenn wir
das Spiel jedoch erneut ausführen, stellen
Sie möglicherweise fest, dass das
Stoppen leicht ruckartig ist Das passiert, weil Scratch
es nicht wirklich mag, wenn wir Dezimalwerte
verwenden, wenn wir die Position eines Sprites
setzen Um das Problem zu beheben, müssen
wir nur die Variablen speed x und
speedY aufrunden , wenn wir sie
verwenden, um die Position
der Sprites zu ändern Gehen wir dazu zu Operatoren und platzieren zwei runde Blöcke
in einem leeren Bereich Dann verschieben wir den
Geschwindigkeits-X-Block hier in einen
der runden Blöcke und den Geschwindigkeits-Y-Block
in den anderen. Und jetzt können wir
die runden Blöcke
in die Change-Blöcke legen . Wenn wir es noch einmal versuchen, ruckelt es nicht mehr, wenn der
Sprite zum Stillstand kommt Okay, jetzt sind wir im Grunde mit der
Spielerbewegung
fertig Aber ein gemeinsames Merkmal, das
wir bei Weltraum-Shootern wie
diesem sehen , ist, dass sich der Spieler, wenn einer Seite des Bildschirms sehr nahe
kommt, sofort auf
die andere Seite des Bildschirms teleportiert Das nennt man
Screen-Wrapping oder AP-Around. Und in der nächsten Lektion werden
wir sehen, wie wir es in unserem Spiel
implementieren können.
35. Umfassungs-implementieren: Wenn sich der Spieler momentan ganz auf eine Seite der Bühne
bewegt, blockiert
Scratch den Sprite, sich weiter
zu bewegen Das ist für den
oberen und unteren Rand in Ordnung, aber irgendwann werden wir einige Pickups für Dinge
wie Waffen-Power-Ups und
Schilde
erstellen wie Waffen-Power-Ups und , die der Spieler benutzen kann, und wir werden die Pickups
vom oberen Ende der
Stufe nach unten bewegen vom oberen Ende der
Stufe nach Die Pickups werden an
zufälligen Stellen auf der Bühne
beginnen zufälligen Stellen auf der Bühne Es ist also möglich
, dass ein Pickup ziemlich weit vom Spieler
entfernt herunterfällt,
sodass es
für den Spieler fast unmöglich ist, ihn rechtzeitig zu
erreichen Für ein besseres Spielerlebnis können
wir also den
Bildschirmumbruch anwenden, wenn der Spieler
dem linken oder rechten Rand ziemlich nahe kommt, wodurch er sofort zum gegenüberliegenden Rand wechselt
. Das wird auch hilfreich sein,
wenn wir Asteroiden ausweichen. Um Screen Wrapping zu implementieren, müssen
wir erkennen, wann
der Spieler
eine bestimmte Entfernung vom
linken oder rechten
Rand der Bühne erreicht hat eine bestimmte Entfernung vom , dann seine
Position so ändern, dass er sich sofort
am gegenüberliegenden Und weil sich die Mitte
der Bühne an Position
00 befindet , um den Spieler
an den gegenüberliegenden Rand zu bewegen, müssen wir nur seine Exposition
negieren Im Sprites-Code des Spielers überprüfen wir also, nachdem
wir die Position des
Spielers geändert haben, nachdem
wir die Position des
Spielers geändert haben, ob die Exposition des
Spielers entweder den linken oder den rechten
Rand erreicht
hat,
und wenn ja, schalten wir
ihn auf den gegenüberliegenden Rand um Gehen wir zunächst zu Control und fügen einen I
Then-Block ein Und es spielt keine Rolle,
ob wir das vor oder nach dem Einstellen der Variablen Geschwindigkeit X
und Geschwindigkeit Y hier tun, also mache ich es einfach danach. Als Nächstes überprüfen wir, ob die Exposition des
Spielers eine Position in der Nähe
des rechten Bühnenrandes
überschritten hat Position in der Nähe
des rechten Bühnenrandes
überschritten Um das zu tun, wenden
wir uns für den Zustand
des Wenn-Blocks an die Operatoren und
geben den Block größer als ein Für die erste Eingabe gehen
wir zur Bewegung über und fügen einen
Expositionsblock hinzu In Ordnung, die Gesamtbreite
der Bühne beträgt also 480 Pixel. Das bedeutet, dass die Belichtung
auf der Bühne von
minus 240 auf der linken Seite bis positiv 240 auf
der rechten Wir wollen aber nicht,
dass der Spieler vor dem Wickeln
ganz bis zum
Rand geht , damit wir überprüfen können,
ob weiter
als, sagen wir, 235
gegangen ist also für die zweite Eingabe
des Blocks „Größer als wir also für die zweite Eingabe
des Blocks „Größer als“ 23, fünf ein. Und jetzt
müssen wir nur noch
einen Block von Satz x zwei innerhalb des Blocks eingeben und die Exposition
des Spielers negieren , indem wir ihn auf
minus 235 setzen Wenn wir das Spiel jetzt starten und das Sprite
an den rechten Rand bewegen,
wird es bis zum linken Rand umgedreht Und das sanfte Stoppen gilt
immer noch, was ziemlich
nett ist Jetzt müssen wir nur noch
dasselbe für den linken Rand tun. Also lasst uns den I
Than-Block duplizieren und ihn
unter den anderen legen. Diesmal brauchen wir
einen Block weniger als. Also lasst uns den
Expositionsblock
hier speichern und den
Größer-als-Block loswerden Gehen wir jetzt zu den Operatoren und fügen
einen Block mit weniger als ein. Und damit
wollen wir überprüfen, ob die Exposition weniger
als minus 235 beträgt Wenn ja, wollen wir
X auf positive 235 ändern. Wenn wir das Spiel jetzt ausführen, kann
der Spieler
sowohl am linken als auch am rechten
Rand der Bühne herumlaufen . Perfekt. Bevor wir
zur nächsten Lektion übergehen, der Code für das Verschieben des Players ziemlich lang
geworden, und wir
werden auch dem Skript,
wenn ich das Spiel
starten erhalte, noch einiges mehr Code hinzufügen das Spiel
starten erhalte, noch einiges mehr Code . Um das Lesen
etwas einfacher zu machen, können
wir
den gesamten Bewegungscode
in einen separaten benutzerdefinierten Block einfügen . Gehen wir dazu zu Meine
Blöcke und klicken Sie auf Block erstellen. Wir können den Block
Move aufrufen und auf Okay klicken. Jetzt können wir den
definierten Move-Block hier
drüben platzieren und
alle Blöcke, die sich
innerhalb des Forever-Blocks befinden, hier aufnehmen und sie mit
dem definierten Verschiebe-Block verbinden. Dann zurück in
den Forever-Block, müssen
wir nur noch
unseren neuen Move-Block hinzufügen. Jetzt sieht alles
sauberer aus und funktioniert immer noch genauso wie zuvor. In Ordnung. Nun, da sich der Spieler auf der Bühne
bewegen kann, werden
wir es als Nächstes so einrichten, dass er auch einige Laser abfeuern
kann.
36. Den Laser erstellen: Bevor der Spieler mit dem Laserschießen
beginnen kann, müssen
wir zuerst
das Laser-Sprite erstellen also in der Sprite-Farbe Gehen
wir also in der Sprite-Farbe zur Schaltfläche „
Sprite auswählen“ und klicken auf „ Und nennen wir es Laser. Okay, für das Kostüm müssen wir nur
ein weißes Rechteck mit
abgerundeten Ecken und einem
neonfarbenen Umriss zeichnen abgerundeten Ecken und einem
neonfarbenen Umriss Nehmen wir also das
Rechteckwerkzeug, wählen Weiß für die Füllfarbe eine helle Farbe wie
Cyan für die Konturfarbe Und stellen Sie die Umrissbreite
auf etwa zwei ein. Nun, obwohl wir
den Laserpunkt vertikal
haben , wenn er die Bühne hinauffliegt, wollen
wir ihn eigentlich horizontal
zeichnen. Wie wir später sehen werden, wird uns
das Leben
leichter machen , wenn wir
den Laser einschalten. Lassen Sie uns
die Leinwand ein wenig vergrößern. Und lassen Sie uns ein
Rechteck mit einer Breite von
etwa fünf Blöcken
und einer Höhe von 1,5 Blöcken erstellen . Um die Ecken abzurunden, können
wir das Werkzeug zum Umformen verwenden, einen Knoten in
der Mitte der linken Seite
und einen rechts
von jedem der beiden Eckknoten
hinzufügen und einen rechts
von jedem der beiden Eckknoten die Eckknoten
löschen Passen Sie dann die Griffe
des Mittelknotens an. Und wir können dasselbe
für die gegenüberliegende Seite tun. Lassen Sie uns nun die
Form auf der Leinwand zentrieren. Und im Moment
schneidet Scratch einige Teile des Sprites auf
der Bühne Lassen Sie uns das beheben, indem ein unsichtbares Rechteck
um das Kostüm Und das ist es. Gehen wir nun zur
Registerkarte Code
und beginnen mit der Codierung. Ordnung, also werden wir
das Laser-Sprite
selbst nicht
wirklich im Spiel verwenden das Laser-Sprite
selbst nicht
wirklich im Spiel Stattdessen, wie mit dem Kumpel
Sprite und ein paar Maulwürfen, werden
wir einfach
Klone des Sprites erstellen Zu Beginn des Spiels verstecken wir den Sprite
und
wir wollen auch, dass er
nach oben zeigt,
was einer Richtung was Gehen wir also zu den Ereignissen
und fügen wir einen Block hinzu, wenn ich das Spiel starten
erhalte Gehen wir dann zur Bewegung und fügen einen
Punkt-in-Richtungs-Block
hinzu, sodass er
in Richtung Null zeigt. Gehen wir abschließend zu Los
und fügen einen Versteckblock hinzu. Okay. Und was das Erstellen von
Klonen des Sprites angeht, machen
wir das aus
dem Spieler-Sprite heraus Immer wenn der Spieler
entweder eine Maustaste oder
eine bestimmte Taste wie
die Leertaste
drückt oder gedrückt hält entweder eine Maustaste oder
eine bestimmte Taste wie
die Leertaste
drückt oder eine bestimmte Taste wie
die Leertaste Lass uns dafür einen neuen
Block erstellen, indem zu Mblocks
gehen und
auf Block erstellen klicken Nennen wir es Shoot
Laser und klicken auf Okay. Wir können den definierten
Shoot-Laser-Block hier eintragen und den
Shoot-Laserblock
selbst zum Forever-Block
des Startspiel-Skripts hinzufügen . Jetzt müssen wir nur noch
überprüfen, ob der Spieler entweder eine Maustaste oder die
Leertaste
drückt, und wenn ja, erstellen wir einen
Klon des Lasersprites also in Defined Shoot Laser Gehen
wir also in Defined Shoot Laser zu Steuerung und
fügen dann ein I hinzu, dann Block Für den Zustand gehen wir zu den Operatoren und fügen einen
OR-Block hinzu. Für die Bedingungen mit zwei oder Blöcken können
wir zur Erkennung übergehen
und
sowohl den Block beim Drücken der Tastentaste als auch einen Block
mit der Maus nach unten einfügen Schließlich können
wir innerhalb des Then-Blocks einen Klon
des Laser-Sprites erstellen , indem wir zur Steuerung
gehen, einen
Create-Clone-Block einfügen
und ihn so einstellen, dass er einen Laserklon
erstellt Okay, bevor wir das versuchen, müssen
wir zum Laser-Sprite-Code zurückkehren und ihm sagen, was zu tun ist,
wenn er als Klon startet Lassen Sie uns also angeben, wann ich als
Klonblock anfange. Das erste, was wir tun
wollen, ist den Klon zu zeigen. Gehen wir also zu Looks und
bringen einen Show-Block rein. Als Nächstes möchten wir, dass der
Klon
an derselben Position
wie das Spieler-Sprite beginnt an derselben Position
wie das Spieler-Sprite Gehen wir also zur Bewegung über, bringen ein Startsignal an eine
zufällige Position, blockieren und setzen wir es so, dass es
zum Spieler geht Danach wollen wir, dass sich
der Klon nach
oben bewegt , bis er
den oberen Rand der Bühne erreicht. Dann löschen wir den Klon. Um das ganz einfach zu machen, gehen
wir zur Steuerung und fügen eine Wiederholung ein, bis der Block blockiert ist. Gehen
wir für den Zustand zur Erkennung über, bringen einen sich berührenden Block hinein
und setzen ihn auf Berührungskante. Kante bezieht sich hier auf jede
der vier Kanten der Bühne. Da die Laser jedoch immer
nur die obere Kante berühren, ist das keine große Sache. Okay? Also, was wir jetzt
tun wollen, ist, den Klon kontinuierlich die Stufe hinauf zu
bewegen,
bis er ganz oben ist. Gehen wir also zur Bewegung und setzen wir einen
Bewegungsblock mit zehn Schritten ein. Da wir
das Laser-Sprite so gedreht haben es auf die Position Null oder
nach oben zeigt, bewegt
der Block „Schritte
verschieben“ den Klon auf der Bühne nach oben Wir lassen es vorerst so, dass es sich
um zehn Schritte bewegt, aber wir können es
später jederzeit anpassen , wenn es zu
schnell oder zu langsam Okay? Und schließlich,
nach dem Wiederholungsblock, löschen
wir den
Klon, indem wir zu
Control gehen und den Block „Diesen Klonen
löschen“ einfügen. Okay, wenn wir das Spiel jetzt starten, können
wir die Leertaste drücken oder in die Bühne
klicken,
um einen Laser abzufeuern Wir können auch
die Leertaste oder die Maustaste gedrückt halten , um
den Laser
kontinuierlich abzufeuern Im Moment feuert er
allerdings viel zu
schnell , also
müssen wir das reparieren. Außerdem erscheinen die Klone
derzeit über dem
Spieler-Sprite und beginnen direkt in
der Mitte des Sprites .
Lassen Sie uns das zuerst beheben Um sicherzustellen, dass das Spieler-Sprite über den
Laserklonen auf der Bühne
erscheint, können
wir zum
Spieler-Sprite-Code gehen und irgendwo am Anfang
des Spielstartskripts zu Looks gehen und einen Block mit dem Titel
„Später nach
vorne Als nächstes zurück zu den Laser-Sprites. Lass uns dafür sorgen, dass der Klon
näher an der Vorderseite
der Spieler-Sprites beginnt näher an der Vorderseite
der Spieler-Sprites Dazu können wir in Bewegung gehen, eine Änderung Y
für Block aufnehmen
und sie direkt hinter
den Block „Gehe zum Spieler“ platzieren Lass uns dafür sorgen, dass sich
Y um 20 Schritte ändert. Wenn wir das Spiel jetzt starten und
den Laser abfeuern , sieht es viel besser aus. Wir haben aber immer noch das Problem zu viele
Laser auf einmal abzufeuern. Um das zu beheben, gehen wir zum
Player-Sprite-Code. Was wir tun können, ist
, dass das Shoot-Laser-Skript
nur dann einen Klon
des Lasersprites erzeugt , wenn seit der
Erstellung des vorherigen Klons eine
bestimmte Anzahl von Frames vergangen ist Dazu müssen wir eine Variable
erstellen, um zu speichern, wie viele Frames wir zwischen den einzelnen Klonen warten
möchten Gehen wir zu Variablen und erstellen
wir eine neue. Wir können es Shoot Delay nennen und es nur für
dieses Sprite machen Und lassen Sie uns die Variable verstecken. Ordnung. Nun, vor
dem Block für immer im Startskript des Spiels, fügen wir einen Satz von zwei Blöcken ein und setzen die Schießverzögerung auf Null. Dadurch kann der
Spieler sofort und
ohne Verzögerung mit dem
Schießen beginnen . Als Nächstes gehen wir für einen
Laser mit definiertem Schuss zur Steuerung
und bringen
einen Block, den ich denke für den Moment
in einen leeren Raum. Für diese Bedingung wollen wir
überprüfen, ob die Schießverzögerung größer als Null
ist. Gehen wir zu den Operatoren und fügen
einen „Mehr als“ -Block hinzu. Gehen wir dann zu Variablen
und überprüfen wir, ob die
Schießverzögerung größer als Null ist. Wenn ja, wollen wir nur die Drehverzögerung um eins
verringern. Fügen wir dem Teil I eine Änderung pro Block hinzu und ändern
die
Schießverzögerung um einen negativen Wert. Andernfalls überprüfen wir, ob die Leertaste gedrückt
oder die Maus gedrückt ist, und wenn ja, erstellen wir einen
Klon des Lasersprites Nehmen wir also diesen
I Thin-Block hier und legen ihn in den Teil
des I Thins-Blocks Und noch eine Sache, die wir hier tun
müssen, ist Drehverzögerung auf das zu
setzen, was
wir wollen. also gleich nach der
Erstellung des Klons Lassen Sie uns also gleich nach der
Erstellung des Klons einen Satz von zwei Blöcken einfügen und die Schießverzögerung
auf etwa drei setzen. Wenn also das
Shoot-Laserskript im nächsten Frame erneut
ausgeführt wird, ist
die Schießverzögerung
größer als Null, sodass das Script nur die
Schießverzögerung reduziert und
dem Spieler nicht erlaubt, zu schießen. Das passiert immer wieder ,
bis die
Schießverzögerung Null wird . Ab diesem Zeitpunkt
kann der Spieler wieder schießen. All das können wir jetzt
zum Laser-Skript hinzufügen, und wenn wir das Spiel starten und die Leertaste
oder die Maustaste
gedrückt halten , feuern
die Laser mit einer viel
vernünftigeren Geschwindigkeit. Okay, jetzt, wo der
Spieler Laser abfeuern kann, müssen
wir ihm etwas geben,
auf das er tatsächlich schießen kann. In der nächsten Lektion
beginnen wir mit der Erstellung der Asteroiden.
37. Die Asteroiden-Kostüme zeichnen: Um mit der Erstellung der Asteroiden zu beginnen, erstellen
wir zunächst
den Asteroiden-Sprite indem wir auf die Schaltfläche „Sprite auswählen
“
klicken, auf Malen klicken und ihn klicken, auf Malen klicken Okay,
lassen Sie uns im Kostümeditor damit beginnen, das Kreiswerkzeug und ein
Hellbraun als Füllfarbe auszuwählen Dann nehmen
wir für den Umriss ein dunkleres Braun Und lassen Sie uns die Breite auf
etwa sechs festlegen. Lassen Sie uns nun
die Leinwand etwas vergrößern und einen Kreis zeichnen, der einen Durchmesser
von etwa 50 bis 55 Pixeln hat. Und wenn wir
einen perfekten Kreis erstellen möchten, können
wir beim Klicken und Ziehen die Umschalttaste
gedrückt halten. Dann können wir das Werkzeug zum
Umformen nehmen und den Kreis
umformen, bis er eher wie ein Asteroid
aussieht Okay, lassen Sie uns dem Asteroiden auch ein paar
Punkte hinzufügen. Dazu können wir erneut
das Kreiswerkzeug verwenden Füllfarbe auf das
Dunkelbraun der Kontur
einstellen Schalten Sie den Umriss und zeichnen Sie eine kleine Ellipse
auf den Asteroiden Jetzt können wir das SelegTol verwenden einige Duplikate
der Ellipse
zu erstellen Verwenden Sie dann das Reshape-Tool, um ihre Formen ein wenig zu ändern Und wenn das erledigt ist, stellen wir
sicher , dass alles auf der Leinwand
zentriert ist Lassen Sie uns nun noch ein
paar Kostüme kreieren , um den Asteroiden etwas Abwechslung
zu verleihen Dazu können wir
das erste Kostüm duplizieren und es
dann mit dem Reshape-Tool
ein wenig verändern Und wieder sollten wir sicherstellen, dass
alles zentriert ist. Dann lass uns noch
ein Kostüm kreieren. Okay? Jetzt, wo wir ein paar schöne Kostüme
für die Asteroiden haben, werden
wir als Nächstes daran arbeiten, sie zu spawnen und
sie die Bühne
hinunter zu bringen
38. Die Asteroiden spawnen: Um mit der Erstellung von Asteroiden zu beginnen und sie die Bühne nach unten zu verschieben, gehen
wir in den Code
für die Zuerst
werden wir dafür sorgen, die Asteroiden von Anfang an
größer als normal sind, und später werden wir sie in
immer kleinere Fragmente
zerlegen , wenn der Spieler sie
abschießt Eine Startgröße von etwa
200 sollte gut sein. Okay, also
lasst uns zu
Beginn des Spiels sicherstellen, dass der
Asteroiden-Sprite mit
einer Größe von 200 anfängt , indem wir zu Events
gehen, einen Block mit dem Startspiel einfügen,
dann zu Looks gehen und einen Block der Größe zwei hinzufügen, sodass er die Größe auf 200% festlegt Wir wollen auch, dass die Asteroiden unter allem
anderen auf der Bühne
erscheinen Dazu können
wir einen
Block „Gehe zu später “ hinzufügen und ihn
auf die hintere Ebene setzen Eine weitere Sache, die wir
tun wollen, ist das Sprite zu verstecken, weil wir es hauptsächlich zum Generieren von Klonen
verwenden werden Lassen Sie uns also einen Versteckblock einfügen. Okay, also
die Art und Weise, wie wir die Klone
erzeugen werden,
ist, dass sie bei zufälligen Expositionen
über dem oberen Rand
der Bühne beginnen bei zufälligen Expositionen
über dem oberen Rand
der Bühne Dann lassen wir sie die Bühne
hinuntergehen, bis
sie entweder vom Spieler zerstört werden oder
den unteren Rand
erreichen Und weil wir wollen, dass das
kontinuierlich passiert, sollten wir damit beginnen, die
Kontrolle zu übernehmen und einen
Block für immer einzubauen. Als Nächstes starten wir das Sprite über dem oberen Rand der Bühne Ein Problem dabei
ist allerdings, dass Scratch
es Sprites
eigentlich nicht erlaubt , einen der Kanten komplett zu
verlassen Die Gesamthöhe der
Bühne beträgt 360 Pixel, wobei der obere Rand an einer Position von
180 und der untere
an einer negativen Position von 180 Wir können das Sprite ganz einfach auf eine
Y-Position von 180 setzen. Aber wenn wir versuchen, es weit
über dem oberen Rand zu platzieren , etwa bei 300, verhindert
Scratch, dass es ganz so hoch
geht, und ein Teil des Sprites
bleibt sichtbar Und tatsächlich hängt es
sowohl von der Größe des aktuellen Kostüms
des Sprites als auch von der Größeneinstellung der Sprites ab, wie
weit der Sprite gehen darf des aktuellen Kostüms
des Sprites als auch von der Größeneinstellung der Sprites ab, wie
weit der Sprite . Wenn wir die Größe wieder auf 100 setzen, befindet sich das gesamte Sprite Aber sobald wir versuchen,
die Y-Position auf etwas
Hohes zu setzen , zum Beispiel wieder 300, wird
es wieder nach unten gedrückt, bis ein
Teil davon sichtbar ist, um all das zu
umgehen und die Klone
so zu gestalten, dass die Klone
über dem oberen Rand beginnen, können
wir einen
kleinen Kostüm-Hack um all das zu
umgehen und die Klone
so zu gestalten , dass die Klone
über dem oberen Rand beginnen, durchführen Gehen wir dazu zurück
zum Tab Kostüme. Lassen Sie uns nun ein
neues Kostüm unter
allen anderen erstellen , indem wir eine Kostümschaltfläche
auswählen
und Farbe auswählen. Und lassen Sie uns den Namen des
Kostüms in groß ändern. Als Nächstes zoomen wir auf der Leinwand
ganz heraus, was wir
ganz einfach tun können, indem wir auf diese Schaltfläche zwischen den
Lupentasten Lassen Sie uns ein
Rechteck erstellen,
das den gesamten
Bühnenbereich der Leinwand abdeckt das den gesamten
Bühnenbereich der Leinwand Lassen Sie uns
es auch auf der Leinwand zentrieren. Wenn der Sprite nun
ein
wirklich großes Kostüm wie dieses trägt, können
wir es viel
weiter vom Rand wegbewegen Wenn wir jetzt zu
einem anderen Kostüm wechseln, bleibt
der Sprite in derselben Position und befindet sich jetzt komplett
außerhalb der Bühne Im
Code bedeutet das also , dass wir
vorübergehend zum
großen Kostüm wechseln können , bevor das Sprite
über den oberen Rand
bewegen, dann zurück zu einem
der normalen Kostüme wechseln Und weil das alles
passieren wird , bevor die
Bühne aktualisiert wird, werden wir das
große Kostüm nicht wirklich auf der Bühne sehen Okay, also zurück im Code,
am Anfang des Forever-Blocks, lassen Sie uns zuerst
das Sprites-Kostüm gegen das große Kostüm austauschen,
indem wir nach Los gehen und ein Switch-Kostüm
in den großen Block bringen ein Switch-Kostüm
in Und jetzt können wir das Sprite über
dem oberen
Rand der Bühne starten über
dem oberen
Rand der Bühne Lassen Sie uns also loslegen
und zum XY-Block unter dem
Switch-Kostümblock wechseln Eine Y-Position von 250
sollte hoch genug sein. Um sicherzugehen, dass wir
zum großen Kostüm wechseln können, setzen Sie die
Y-Position der Sprites auf 250, wechseln Sie zu einem normalen Kostüm
und setzen Sie die Größe wieder auf 200 Wir sehen den
Sprite immer noch nicht, also geht es uns gut. In Ordnung, zurück im Code. Für die Ausstellung können wir
eine Zufallszahl zwischen dem linken und
dem rechten
Rand der Bühne verwenden eine Zufallszahl zwischen dem linken und
dem rechten
Rand der Bühne Gehen wir dazu zu Operatoren und fügen
einen Auswahlzufallsblock hinzu Wie wir bei der Kodierung der
Bewegung für das Spieler-Sprite gesehen haben, geht
die Stufe von
minus 240 auf der linken Seite auf positive
240 auf der rechten Wir wollen aber nicht, dass die
Asteroiden zu nahe an
den Rändern beginnen zu nahe an
den Rändern Nehmen wir also etwas
wie minus 230 bis 230. Als Nächstes können wir, nachdem
wir
die Sprites positioniert haben, zu
einem der normalen Kostüme zurückkehren Lass uns zu Looks gehen und einen weiteren
Switch-Kostümblock
reinbringen Und wir können einen
Pi-Zufallsblock verwenden, um
ein zufälliges Kostüm aus den
drei normalen Kostümen auszuwählen . Gehen wir zu den Operatoren, fügen dem Switch-Kostümblock einen zufälligen Auswahlblock hinzu und
wählen eine Zufallszahl 1—3 aus. Damit können wir
einen Klon des Sprites erstellen. Gehen wir also zu Control und fügen Block
zum Erstellen eines
Klons von mir selbst Im Moment
werden dadurch jedoch Dutzende
von Klonen pro Sekunde erstellt Lassen Sie uns also eine kleine Pause einlegen indem wir einen Gewichtsblock einbauen Für die Pis können wir zu den
Operatoren gehen und einen anderen
Pick Random Block verwenden Und lassen Sie uns etwas
zwischen 0,5 und 1 Sekunde wählen. Okay? Jetzt müssen wir den Klonen nur noch sagen, was sie
tun sollen, wenn sie anfangen Gehen wir also zurück zur Steuerung und fügen ein
, wenn ich anfange
als Klonblock Wie üblich wollen
wir als Erstes den Klon zeigen. Gehen wir also zu Looks und
bringen einen Show-Block rein. Und vorerst
lassen wir den Klon einfach die Bühne
hinuntergehen ,
bis er den Boden erreicht, dann löschen wir ihn. Gehen wir also zu Control und fügen
einen Block für immer ein. Um den Klon die Bühne
nach unten zu bewegen, gehen
wir zu Bewegung und
fügen eine Änderung Y für Block ein. Wir werden den
Klonen irgendwann zufällige Geschwindigkeiten
zuweisen, aber vorerst können wir
die Y-Position um
etwa minus drei ändern die Y-Position um
etwa minus drei Als Nächstes müssen wir überprüfen,
ob der Klon den
unteren Rand der Stufe unterschritten hat unteren Rand der Stufe unterschritten Da der Klon
derzeit jedoch eines
der Kostüme in normaler Größe verwendet, kann
er nicht unter
den unteren Rand der Stufe fallen. Damit es unter den Boden fallen
kann, müssen
wir das große Kostüm anziehen, bevor wir
den Klon
bewegen,
wie wir es bei der Positionierung der Sprites getan haben Gehen wir also zu Looks und bringen ein
Switch-Kostüm in den großen Block, und wir müssen es
über dem Change-Y-Block platzieren Nachdem wir
die Y-Position geändert
haben, können wir nun überprüfen, ob sich der Klon
unter dem unteren Rand befindet. Gehen wir also zur Steuerung und platzieren wir einen IT-Block
unter dem Change-Y-Block. wir uns für die Bedingung an die Operatoren und geben
einen Block kleiner als ein. Gehen wir dann zur Bewegung über
und überprüfen wir, ob die Y-Position kleiner als minus 250
ist, was das Gegenteil von dem ist,
was wir für die obere Position verwenden. Wenn der Klon unter minus
250 liegt, löschen wir ihn. Gehen wir also zu Control und fügen den delete this clone block in den
IN-Block ein. Wenn der Klon den Boden noch nicht
erreicht hat, wird
er nicht gelöscht, also müssen wir ihn
wieder in sein normales Kostüm umwandeln. Wir können aber nicht einfach zu einem
zufälligen Kostüm wechseln, weil der Klon
dann in jedem Frame ständig die Kostüme
wechselt, was seltsam aussehen wird. Stattdessen müssen wir
eine Variable erstellen, um das Originalkostüm des
Klons zu speichern, und
dann am
Ende des Forever-Blocks wieder zu
demselben Kostüm wechseln . Gehen wir dazu zu Variablen und klicken auf Variable
erstellen. Wir können es Kostüm nennen, und wir
möchten sicherstellen, dass wir uns
nur für diesen Sprite entscheiden , da jeder Klon ein eigenes Kostüm
haben wird Und lass uns weitermachen und die Variable
verstecken. Anstatt
das Sprites-Kostüm hier durch ein zufälliges
zu ersetzen, bringen
wir als Nächstes das Sprites-Kostüm hier durch ein zufälliges
zu ersetzen, zunächst ein
Set aus zwei Blocks hinzu platzieren es direkt über
dem Switch-Kostümblock Und lass uns den zufälligen
Auswahlblock in den Set-Block verschieben. Dann können wir das Kostüm
auf die Kostümvariable umstellen. Jetzt müssen wir nur noch am Ende
des Forever-Blocks
und wenn ich als Klon anfange, zum selben Kostüm wechseln . Lass uns den Block zwischen Kostüm und
Kostüm duplizieren. Werde diese zusätzlichen
Blöcke los und lege das Duplikat direkt
unter den ITN-Block und wenn ich als Klon anfange Ich denke, wir sind endlich bereit
, die Asteroiden zu testen, also lasst uns die grüne Flagge hissen In Ordnung, das
sieht ziemlich gut aus. Wir wissen jedoch nicht mit Sicherheit
, ob die Klone
gelöscht werden , wenn sie den Boden
erreichen Wir werden das also sicherstellen, indem wir einen Klonzähler
erstellen. Lassen Sie uns dazu zunächst eine neue Variable
erstellen. Wir können es Clone Total nennen, und diese Variable muss eine globale Variable
sein. Als Nächstes, vor dem Forever-Block
des Startspielskripts, bringen
wir eine festgelegte
Klonsumme auf Block Null. Wir wollen die Variable für die Gesamtanzahl der
Klone
jedes Mal erhöhen , wenn ein neuer
Klon erstellt wird. also oben in „Wenn
ich als Klon-Skript starte Lassen Sie uns also oben in „Wenn
ich als Klon-Skript starte“ eine Änderung der Gesamtanzahl der
Klone um einen Block eingeben. Schließlich wollen
wir, bevor wir einen Klon
löschen, die Variable verringern. Fügen wir
also einen weiteren Block zur
Änderung der Gesamtsumme hinzu, Fügen wir
also einen weiteren Block zur
Änderung der Gesamtsumme bevor
dieser Klonblock hier gelöscht wird, und lassen wir ihn die Gesamtsumme des
Klones um einen negativen Wert ändern. Wenn wir das Spiel jetzt ausführen, Klonzähler
jedes Mal,
wenn ein Asteroidenklon erstellt wird erhöht sich der
Klonzähler
jedes Mal,
wenn ein Asteroidenklon erstellt wird, um eins und er sinkt
jedes Mal, wenn ein Klon
unter den Boden fällt, um eins jedes Mal, wenn ein Klon
unter den Boden fällt Wenn dein Klonzähler
ständig ansteigt, anstatt bei sechs oder
sieben hängen zu bleiben, musst
du vielleicht versuchen, hier im ITN-Block, wo
wir
die Y-Position überprüfen, eine höhere Zahl zu
verwenden hier im ITN-Block, wo
wir
die Y-Position überprüfen Ordnung, jetzt, wo
unsere Asteroiden funktionieren, werden
wir
ihre Bewegungen als Nächstes
etwas zufälliger und weniger langweilig machen etwas zufälliger und weniger
39. Die Asteroidenbewegung verbessern: Es macht weder
viel Spaß noch ist es natürlich, wenn sich die Asteroiden alle mit
genau der gleichen Geschwindigkeit
direkt die Bühne hinunterbewegen weder
viel Spaß noch ist es natürlich, wenn sich die Asteroiden alle mit
genau der gleichen Geschwindigkeit
direkt .
Also lass uns das reparieren Und weil mit der
Einrichtung der Asteroidenklone eine Menge Code
verbunden sein
wird , werden
wir für Ordnung sorgen indem wir den Code
in einen benutzerdefinierten Block einfügen Gehen wir also zu mBLOXS
und erstellen einen neuen. Nennen wir es einen aufgestellten Asteroiden.
Und klicken Sie auf Okay. Wir können den definierten
Setup-Asteroidenblock hierher verschieben. Dann schnappen wir uns einen
Setup-Asteroidenblock und platzieren ihn über dem Forever-Block von Wenn ich
als Klon-Skript starte Ordnung, jetzt machen wir es so, dass jeder Klon eine zufällige Geschwindigkeit hat Gehen wir dazu zunächst zu Variablen und
erstellen eine neue. Und nennen wir es Geschwindigkeit. Jeder Klon
hat seine eigene Geschwindigkeit, also machen wir es nur für
dieses Sprite nun in Define-Setup-Asteroid Lassen Sie uns nun in Define-Setup-Asteroid einen Satz von zwei Blöcken einfügen und ihn
zur Geschwindigkeitsvariablen machen Später, wenn der Spieler auf einen Asteroiden
schießt, teilen
wir ihn in
kleinere Fragmente auf und sorgen dafür, dass sich
die kleineren Fragmente schneller bewegen
können Bei der Festlegung der Geschwindigkeit berücksichtigen
wir also die Größe
des Klons Gehen wir dazu zu Operatoren und fügen einen Divisionsblock
in einen leeren Raum ein. Für die erste Eingabe verwenden
wir 100 und für die zweite Eingabe gehen
wir zu Los und fügen
einen Größenblock ein. also die Größe kleiner wird, steigt
der Wert dieses
Blocks. Und jetzt multiplizieren wir den
Wert mit einer Zufallszahl. Gehen wir also zurück zu den Operatoren und fügen einen
Multiplikationsblock hinzu Verwenden wir den
Divisionsblock als erste Eingabe Für die zweite Eingabe fügen wir einen
Auswahl-Zufallsblock hinzu
und lassen ihn eine
Zufallszahl zwischen,
sagen wir, zwei und sechs auswählen sagen wir, zwei und sechs Eine Sache, die Sie über den Block „
Zufallsauswahl“ wissen sollten,
ist jedoch, dass, wenn wir
zwei ganze Zahlen verwenden, der Block nur ganze Zahlen
auswählt. Wenn wir möchten, dass
auch Dezimalzahlen ausgewählt werden, können
wir einfach einen Punkt
hinter eine der Zahlen setzen Okay. Jetzt können wir das alles in den eingestellten Geschwindigkeitsblock legen. Als Nächstes ändern
wir beim
Start als Klon-Skript Y nicht um minus drei,
sondern um
die Geschwindigkeitsvariable. Die Geschwindigkeitsvariable
wird jedoch immer positiv sein, aber um den Asteroiden nach unten zu bewegen, müssen
wir eine
negative Zahl verwenden Lassen Sie uns also zuerst
einen Subtraktionsblock einfügen. Wir können eine Null für die
erste Eingabe verwenden oder sie leer lassen. Und für die zweite Eingabe gehen
wir zu Variablen und fügen
einen Geschwindigkeitsblock ein. Wenn wir das Spiel jetzt ausführen, fallen
die Asteroiden mit unterschiedlichen
Geschwindigkeiten ab Und wenn wir
die Startgröße verringern und
das Spiel starten, fallen
sie noch schneller Ordnung, lassen Sie uns das Spiel beenden und die
Startgröße wieder auf 200 setzen. Jetzt machen wir es
so, dass jeder Klon die Bühne in
zufälliger Richtung
hinuntergeht . Dazu können wir zunächst eine neue Variable
erstellen. Nennen wir es Der für die Richtung und machen es nur
für dieses Sprite Und wir können weitermachen
und die Variable verstecken. Fügen wir nun dem
Setup-Asteroiden-Skript einen Block mit
zwei Sätzen hinzu und verwenden ihn
, um die Variable Der zu setzen Was nun die Richtung angeht, wollen
wir, dass sich die Asteroiden
immer auf der Bühne nach unten bewegen Wie wir an
der Richtungsanzeige
im Sprite-Fenster sehen können , bedeutet eine Richtung von 180
gerade nach unten nach rechts gehen wollen, können
wir eine
Mindestrichtung von etwa 1:40 zulassen nun nach links gehen, zeigt
Scratch
negative Zahlen Das liegt daran, dass bei Scratch Richtungen links von Null
, also geradeaus nach oben, negativ
behandelt werden. Wenn wir jedoch versuchen, eine Zufallszahl
zwischen einer negativen
und einer positiven Zahl
auszuwählen , schließt
sie die
Zahlen zwischen Null und der negativen Zahl und zwischen Null und der
positiven Zahl ein. Das ist das Gegenteil
von dem, was wir wollen. Aber glücklicherweise funktioniert
die Verwendung der üblicheren
Winkel von null bis 360 Grad zur Darstellung 360 Grad zur Darstellung
eines Kreises bei Scratch
genauso gut. Damit ist Null oben, 90 ist rechts, 180 ist unten,
270 ist links
und 360 ist Vollkreis, also wieder nach oben gerichtet, bedeutet das, wenn wir
eine Mindestrichtung von 140 verwenden wollen , 40 subtrahiert von 180, um die
maximale Richtung zu erhalten, müssen
wir nur 40
zu 180 addieren, was 220 ist. Also zurück im Code zum
Setzen der Dur-Variablen, gehen
wir zu Operatoren und
fügen einen Pick-Random-Block ein. Und lassen Sie uns eine
Zufallszahl 140-220 wählen. Und jetzt müssen wir die Richtung
der Sprites tatsächlich auf die Dur-Variable setzen Richtung
der Sprites tatsächlich auf die Gehen wir also an
einem Punkt- und Richtungsblock
nach dem eingestellten Dur-Block zur Bewegung über, gehen wir
dann zu Variablen und machen
daraus Punkt und Richtung dur Etwas später in der Lektion werden wir sehen, warum
wir uns die Mühe gemacht haben,
überhaupt eine der-Variable zu
erstellen , anstatt nur die Richtung des Sprites
direkt festzulegen Und wenn wir versuchen, das
Spiel jetzt auszuführen, funktioniert es nicht. Die Asteroiden
bewegen sich immer noch direkt nach unten. Der Grund dafür
ist, dass wir hier
den Block Change Y verwenden , um die Klone
zu verschieben Dieser Block ändert nur die Y-Position und kümmert
sich überhaupt nicht um die Richtung der
Sprites Um das zu beheben,
müssen wir den Block entfernen. Und lassen Sie uns ihn durch einen Bewegungsblock mit
zehn Schritten aus
der Kategorie Bewegung ersetzen . Dann können wir zu Variablen gehen und das Sprite mithilfe des
Werts des Geschwindigkeitsblocks
verschieben Wenn wir das Spiel jetzt
ausführen, erhalten wir das Ergebnis, nach dem
wir gesucht haben Ein Problem besteht jedoch
darin, dass
ein Asteroid, wenn er von
einer Seite der Bühne abfliegt, einfach
so lange weiterläuft, bis seine Y-Position schließlich unter den unteren Rand
fällt Da wir den Spieler auf der anderen
Seite herumlaufen lassen , denke
ich, dass es nur
fair wäre , die
Asteroiden dasselbe tun zu lassen Das ist ziemlich einfach
, weil wir fast den gleichen Code
verwenden können , den wir für
das Spieler-Sprite verwenden Der Code für den Bildschirmumbruch sind diese beiden, die ich dann
hier am Ende
des definierten Zuges blockiere hier am Ende
des definierten Um sie in
den Asteroidencode zu kopieren, können
wir
auf den ersten Code klicken und ihn gedrückt halten, sie
dann auf
den Asteroiden Sprite und das
Sprite-Fenster ziehen und loslassen Jetzt, zurück im Asteroidencode, holen
wir uns die neuen ITN-Blöcke und platzieren sie direkt über dem
Block „ Kostüm
zu Kostüm wechseln am unteren Rand des Skripts Wenn
ich als Um der Größe
der Asteroiden Rechnung zu tragen, sollten
wir ihnen
allerdings erlauben, etwas weiter von
der Bühne abzuweichen , bevor sie ihre Position wechseln Anstatt 235
und minus 235 können
wir also 300 und minus 300 verwenden Wenn wir nun das Spiel starten und
einige Asteroiden von
einer Seite der Bühne verschwinden lassen , werden
sie auf
der anderen Seite wieder auftauchen. Okay? Das alles sieht jetzt
ziemlich gut aus. Aber eine weitere Möglichkeit, die Bewegung
der Asteroiden zu verbessern , besteht darin, sie ein wenig zu drehen, während
sie durch den Weltraum schweben Dafür müssen wir eine weitere Variable
erstellen. Wir können es Spin nennen und
es nur für dieses Sprite machen. Und lass uns die Variable verstecken. Jetzt fügen wir dem Block einen weiteren
Satz hinzu, um den Setup-Asteroiden zu definieren und die Spin-Variable
festzulegen Wie bei allem anderen können
wir dafür einen
Zufallswert verwenden Gehen wir also zu den Operatoren und bringen einen
Pick Random Block rein. Und lassen Sie uns
etwas zwischen,
sagen wir, negativen drei
Grad und drei Grad wählen . Dadurch können sich
die Asteroiden entweder gegen den Uhrzeigersinn oder gegen den Uhrzeigersinn
drehen Ich möchte
jedoch sicherstellen, dass
auch Dezimalzahlen ausgewählt werden, also füge ich nach einem der Werte einen Punkt
hinzu Nun, um
die Spin-Variable tatsächlich zu verwenden, kommen
wir hier zu dem Zeitpunkt, an dem
ich als Klon-Skript anfange gleich nach dem Verschieben des Klons Lassen Sie uns gleich nach dem Verschieben des Klons zur Bewegung übergehen und
einen Turn-Block einfügen. Gehen wir nun zu Variablen und lassen sie sie
um Drehgrade drehen. Wenn wir das jetzt versuchen, die Asteroiden total verrückt Das liegt daran, dass der Turn-Block Richtung eines Sprites ändert Wenn also der
Move-Block das nächste Mal ausgeführt wird, bewegt sich
der Klon in
seine neue Richtung Um das zu umgehen, ist es hilfreich, genau zu verstehen,
wie der Move-Block funktioniert. Tatsächlich verwendet er Trigonometrie, um
sowohl die X- als auch die
Y-Position des Sprites zu ändern sowohl die X- als auch die
Y-Position des Es ändert die X-Position um den Sinus der
Sprites-Richtung und die Y-Position um den Kosinus der Anstatt also
einen Move-Block zu verwenden, können
wir diese
Berechnungen direkt selbst durchführen Gehen wir dazu zunächst zur Bewegung über und bringen sowohl einen X-Änderungs-Block einen Y-Änderungsblock in
einen leeren Raum. Gehen wir als Nächstes zu Operatoren und fügen wir
einen Block mit Bauchmuskeln hinzu. Neben ABS haben wir
auch Optionen für Sinus oder Sin und Kosinus oder
Groß- und Kleinschreibung Wählen wir also zuerst SN und fügen es in
den Change-X-Block Lassen Sie uns nun
den Block sin of duplizieren, ihn in den Change-Y-Block
einfügen
und ihn so einstellen, dass er
die Case-Funktion verwendet. Als Nächstes können wir zu Variablen gehen und sowohl für den SN
- Case-Block einen DR-Block einfügen. Diese beiden Blöcke
zusammen haben nun den gleichen Effekt wie die Verwendung eines Move-Blocks mit
einem Block für die Schritte. Wenn wir also weiterhin dieselbe Geschwindigkeit verwenden wollen , wenn wir
den Klon
bewegen, müssen
wir den Sin und
die verursachenden Blöcke mit der
Geschwindigkeitsvariablen
multiplizieren . Gehen wir also zunächst zu den Operatoren und fügen zwei
Multiplikationsblöcke hinzu Für einen der Eingänge
jedes Multiplikationsblocks können
wir zu Variablen gehen
und einen Geschwindigkeitsblock verwenden Jetzt können
wir die Blöcke für Sünde und Ursache
in die anderen Eingaben verschieben und
dann alles
in die Änderungsblöcke Wir können jetzt
den Move-Block hier loswerden. Lassen Sie uns den
Wendeblock auch vorübergehend abnehmen. Dann fügen wir die
Änderungsblöcke direkt nach dem
Wechsel
vom Kostüm zum großen Block zum Skript Wenn wir das Spiel jetzt ausführen, bewegen sich
die Klone
genauso wie
zuvor, als wir den Move-Block
verwendet haben Aber jetzt verwenden wir die
Variable der für die Bewegung. Anstelle der
tatsächlichen Richtung des Klons. diesem Grund mussten wir die Variable
der erstellen, da die Verwendung des
Turn-Blocks
den Klon
jetzt nicht mehr verrückt macht. Dadurch wird der Klon
zum Drehen gebracht, da wir sehen können, ob
wir den Block wieder in das Skript einfügen
und das Spiel ausführen. Hervorragend. Gut,
die Asteroiden bewegen
sich jetzt alle nett und
friedlich die Bühne hinunter,
aber darum geht es in
unserem Spiel nicht Wir wollen Chaos erzeugen, indem die Asteroiden
aus dem Weltraum jagen Fangen wir
also in der nächsten Lektion damit an.
40. Die Asteroiden schießen: Damit der Spieler die Asteroiden
abschießen kann, müssen
wir nach
Kollisionen zwischen
jedem Asteroidenklon
und jedem Laserklon suchen jedem Asteroidenklon
und jedem Laserklon Wenn es zu einer Kollision
kommt, löschen
wir vorerst einfach beide Klone Lassen Sie uns zunächst mit dem
Code für das Laser-Sprite beginnen. Im Moment, wenn ich als Klon-Skript
starte, bewegen
wir
den Laser kontinuierlich , bis er die Kante
berührt Dann löschen wir den Klon. Auf ähnliche Weise können
wir ein anderes erstellen, wenn ich als
Klonskript starte und es
warten lassen , bis der Klon einen Asteroiden
berührt Und sobald dies der Fall ist,
löschen wir den Klon. Um das zu tun, gehen wir zur Steuerung und fügen
eine weitere hinzu , wenn ich
als Klonblock anfange. Jetzt fügen wir dem Skript einen
Warte-Until-Block hinzu. Für die Bedingung
können wir zur Erkennung übergehen, einen sich berührenden Block einfügen und ihn auf einen berührenden Asteroiden einstellen Damit laufen alle Blöcke, die wir unter den
Warte-Block
legen, erst , wenn der
Klon einen Asteroiden berührt Und wenn der Klon einen Asteroiden
berührt, wollen
wir ihn löschen Also können wir den Block zum Löschen
dieses Klones duplizieren und ihn hier
ablegen. Wenn wir das Spiel jetzt starten
und mit dem Schießen beginnen, werden
die Laserklone
gelöscht, wenn sie
entweder einen Asteroiden oder
den oberen Teil der Bühne treffen entweder einen Asteroiden oder
den oberen Teil der Bühne Die Asteroidenklone werden
jedoch noch nicht gelöscht,
wenn sie getroffen werden. Lassen Sie uns also
das Spiel beenden und zum Asteroidencode
zurückkehren Im Forever-Block des Drehbuchs
Wenn ich als Klon anfange, werden
wir überprüfen, ob der Klon
einen Laser berührt, und das wollen wir tun bevor wir zum
großen Kostüm wechseln, sonst
füllt der Klon die gesamte Bühne aus
und wir werden so ziemlich immer von irgendwelchen Lasern auf der Bühne
getroffen. Um also die
Kollisionsprüfung durchzuführen, gehen
wir zur Steuerung und bringen einen ITN-Block vorerst
in eine leere Stelle Für diesen Zustand
können wir zur Erfassung übergehen, einen berührenden Block
hineinbringen
und prüfen lassen, ob er den Laser berührt Und der Code, der ausgeführt
wird, wenn das passiert, wird
irgendwann ziemlich lang werden. Gehen wir also zu Meine Blöcke und erstellen einen
benutzerdefinierten Block dafür. Wir können es
Asteroidenschlag nennen und auf Okay klicken. Wir können den definierten
Asteroiden-Trefferblock hierher verschieben. Und lassen Sie uns einen
Asteroiden-Trefferblock zum Block I Thin hinzufügen. Jetzt können wir den I-Thin-Block über alles andere
im Forever-Block Und jetzt löschen
wir, wann immer
ein Asteroid getroffen wird, einfach den Klon Wir wollen aber auch den Klonzähler
reduzieren. Gehen wir also zunächst zu Variablen, fügen dem Asteroiden-Treffer-Skript einen Block zur Änderung
der
Gesamtanzahl des Klones Asteroiden-Treffer-Skript einen Block zur Änderung
der und ändern die Klonsumme
um einen negativen Wert Jetzt können wir diesen Klonblock kontrollieren und
löschen. Übrigens, wenn
wir einen Klon löschen, alle seine Skripte nicht mehr ausgeführt. Die Dauerschleife
hier wird also aufhören, wenn der
Asteroiden-Trefferblock nicht mehr läuft Ordnung, wenn wir das Spiel
jetzt starten und ein paar Asteroiden abschießen, verschwinden
die Laser trotzdem, aber die Asteroiden Um zu verstehen, warum das passiert, müssen
wir zuerst verstehen, wie Scratch die
Skripte in einem Projekt ausführt Obwohl es den Anschein hat
, dass die Sprites ihre Skripte
genau zur gleichen Zeit
ausführen, liegt das nur daran, dass Scratch sie extrem schnell
ausführt Was aber tatsächlich
passiert,
ist, dass
sich die Sprites abwechseln und ihre Skripte
bei jedem Frame
ausführen Wenn wir zum
Laser-Sprite-Code zurückkehren, wird der Laserklon
sofort gelöscht, sobald
der Warte-Block hier erkennt sobald
der Warte-Block hier eine Kollision
mit einem Asteroidenklon Das bedeutet, dass zu
dem Zeitpunkt, zu dem der
Asteroidenklon sein Skript ausführt und nach Kollisionen
sucht, alle Laserklone, die
er möglicherweise
berührt hat, bereits gelöscht
wurden , sodass er Okay, um das zu beheben, zurück im Laser-Sprite-Code, müssen
wir, nachdem wir eine
Asteroidenkollision erkannt haben,
Scratch anweisen, nachdem wir eine
Asteroidenkollision erkannt haben,
Scratch anweisen, bis zum nächsten Frame zu warten, bevor der Um das zu tun, können
wir einen Warte-Block einfügen, ihn zwischen
den
Warte-Unit-Block platzieren und
diesen Klon-Block löschen, und wir lassen ihn
so einstellen, dass er 0 Sekunden wartet Der Warteblock zwingt
Scratch,
die folgenden Blöcke erst auszuführen , wenn die angegebene Zeit
verstrichen ist. Und mit der Wartezeit von 0 Sekunden weisen wir Scratch im Grunde an, nur einen einzigen Frame zu warten. Damit geben wir
dem Asteroidenklon
genügend Zeit, um auch eine Kollision zu erkennen und
sich selbst zu löschen , bevor der
Laserklon gelöscht wird Wenn wir das Spiel jetzt starten
und einen Asteroiden abschießen, sowohl der Laser- als auch der
Asteroidenklon gelöscht Bevor wir loslegen,
gibt es noch eine wichtige Sache, die Sie über
die
Kollisionserkennung wissen sollten Im Asteroidencode
haben wir uns entschieden, zu überprüfen, ob
der Klon zu Beginn
des Forever-Blocks hier
einen Laser berührt , aber nur, weil wir das
tun wollten , bevor wir
zum großen Kostüm wechseln Es ist jedoch auch
wichtig, dass wir
den Kollisionstest durchführen ,
bevor wir das Sprite bewegen Der Grund dafür
ist, dass, wenn wir den Asteroiden vor
der Kollisionsprüfung bewegen würden ,
es möglich ist, dass sich der Asteroid , nachdem ein Laserklon eine
Kollision mit einem Asteroiden entdeckt hat, gerade so
weit bewegt, dass er
den nicht
mehr berührt Das bedeutet, dass der Laserklon immer noch gelöscht
wird, der Asteroidenklon
jedoch nicht, da er keine
Kollision erkennt Ordnung, jetzt, wo der Spieler
die Asteroiden abschießen kann, machen
wir die Sache etwas
schwieriger , indem wir
den Asteroiden Gesundheit geben, sodass der Spieler sie mehrmals
abschießen muss
41. Den Asteroiden Gesundheit geben: Um die Zerstörung der
Asteroidenklone zu erschweren, geben
wir jedem von ihnen Lebenspunkte
und verwenden eine Variable, um die Gesundheit zu speichern also im Asteroiden-Sprite Gehen
wir also im Asteroiden-Sprite zu Variablen
und erstellen eine neue Wir können es Gesundheit nennen und es nur für diesen Sprite
machen. Und lass uns weitermachen und die Variable
verstecken. Alles klar, zu
Beginn des Spiels werden
wir die Gesundheitsvariable
auf einen Standardwert setzen. also im Skript für den Spielstart Lassen Sie uns also im Skript für den Spielstart einen Block mit zwei Sätzen nehmen und ihn irgendwo über
dem Block für immer
platzieren. Lassen Sie uns dafür sorgen, dass es
die Gesundheitsvariable setzt, und ein Standardwert von
drei sollte gut sein. Als Nächstes im
Asteroiden-Treffer-Skript überprüfen wir
zunächst, ob die
Gesundheit des Asteroiden größer als eins ist Gehen wir zur Steuerung und
bringen es dann
in ein leeres Feld Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block größer als ein. Gehen wir nun zu Variablen und überprüfen
wir, ob die Integrität größer als eins
ist. Wenn das der Fall ist, reduzieren
wir die Gesundheit um eins. Lassen Sie uns also
eine Änderung pro Block vornehmen und die Gesundheit
um eine negative Änderung vornehmen. Dann wollen wir
das
Asteroiden-Treffer-Skript beenden , damit der Klon
nicht gelöscht wird Gehen wir also zu Control und
fügen einen Stopp-Block
innerhalb des ITN-Blocks ein, damit er dieses Skript
stoppt Jetzt können wir uns
den ITN-Block schnappen und ihn direkt an der Spitze
des definierten Asteroideneinschlags
platzieren Okay, wenn wir das Spiel jetzt starten, müssten
genau drei Schüsse
nötig sein, um einen
Asteroiden zu zerstören Nett. Es
wäre jedoch besser, wenn es einen Hinweis
gäbe, der
den Spieler darüber informiert, wann er einen Asteroiden abgeschossen
hat Eine Sache, die wir tun können, ist den Asteroiden
kurz
komplett weiß zu machen Gehen wir dazu zu Looks
und setzen einen festgelegten
Effekt auf den Block
innerhalb des wenn-Dünn-Blocks des Asteroiden-Treffer-Skripts Und lassen Sie uns damit die Helligkeit auf 100
einstellen. Wenn wir jetzt einen Asteroiden abschießen, wird
er komplett weiß Damit er schnell
wieder zu seinen normalen Farben zurückkehrt, können
wir uns einen Block mit klaren
Grafikeffekten schnappen und ihn ganz oben auf
den Forever-Block als Klonskript ganz oben auf
den Forever-Block
und dann, wenn ich anfange Das muss geschehen, bevor wir
die Laserkollision durchführen. Wenn wir das Spiel jetzt starten
und ein paar Asteroiden abschießen, hat
das einen coolen Blinkeffekt Wir können auch dafür sorgen, dass sich die Asteroiden
ein wenig zurückbewegen , wenn der
Spieler Das nennt man Knock Back
und kann dem Spieler die Möglichkeit geben, und kann dem Spieler die Möglichkeit geben von
einem Asteroiden
wegzukommen. Dazu müssen wir nur Y-Position des Asteroiden ein wenig
erhöhen, und zwar mit
einer Gehen wir also zuerst zur Steuerung und bringen einen
Wiederholungsblock in einen leeren Bereich, und lassen wir ihn viermal
wiederholen Als Nächstes gehen wir zur Bewegung und fügen dem
Wiederholungsblock eine Änderung Y für Block hinzu. Wir möchten nicht, dass der
Rückstoß zu glatt abläuft, sodass wir die Y-Position jedes Mal
um eine Zufallszahl ändern können jedes Mal
um eine Zufallszahl Gehen wir dazu zu Operatoren und verwenden einen
Auswahlzufallsblock als Eingabe Um den Asteroiden auf der
Bühne vom Spieler weg nach oben zu bewegen, müssen
wir die
Y-Position um eine positive Zahl ändern, also sollte etwas 1—3 funktionieren Lassen Sie uns nun den Wiederholungsblock
in den wenn dünnen Block des
Asteroiden-Treffer-Skripts einfügen in den wenn dünnen Block des , kurz
bevor wir das Skript beenden Wenn wir das Spiel jetzt ausführen, springt
jedes Mal, wenn wir einen Asteroiden abschießen, dieser
die Bühne wieder ein wenig nach oben Und nur zum Spaß können
wir
die Asteroiden auch von einer Seite zur anderen wackeln lassen , wenn sie abgeschossen werden Dazu
müssen wir nur bei jeder Wiederholung auch die Position
der Klone um einen
kleinen Betrag ändern Position
der Klone um einen
kleinen Betrag Gehen wir also zur Bewegung und fügen wir dem Wiederholungsblock einen
Change-X-Biblock hinzu Gehen wir dann zurück zu den Operatoren, verwenden einen Pick Random
Block als Eingabe und wählen etwas zwischen
minus zwei und zwei Lassen Sie uns es jetzt versuchen. Fantastisch. In Ordnung. In der nächsten Lektion werden wir es noch
schwieriger
machen, die Asteroiden zu zerstören, indem wir
sie in Fragmente zerlegen
42. Die Asteroiden aufteilen: Als Nächstes werden wir also jedes Mal, wenn einem Asteroiden die Gesundheit
ausgeht, seine Größe verkleinern und zwei Klone
davon erstellen Dadurch wird es so aussehen, als ob sich der Asteroid in drei kleinere Fragmente aufgeteilt
hat Zu Beginn werden
wir also, sobald ein Asteroid keine Lebenspunkte mehr
hat, seine Größe um die Hälfte reduzieren Gehen wir zu Looks und
platzieren ein Set zwei Blöcken direkt unter dem Block,
falls die Lebenspunkte größer
als ein Block Gehen wir nun zu Operatoren und fügen dem Block mit der eingestellten Größe einen
Divisionsblock hinzu. Dann gehen wir zu
Looks und setzen die Größe auf die aktuelle
Größe geteilt durch zwei. Als Nächstes erstellen wir
zwei weitere Klone. also gleich nach dem Einstellen der Größe Gehen
wir also gleich nach dem Einstellen der Größe zu Control und zwei Blöcke
zum Erstellen eines
Klons von mir selbst Ordnung, wenn wir
die beiden neuen Klone erstellen, wird das beim Start
als Klonskript für
jeden neuen Klon ausgeführt als Klonskript für
jeden neuen Klon Dies wiederum führt das
Setup-Asteroiden-Skript aus und sortiert die jedes
Klons nach
dem Zufallsprinzip Die Attribute
des ursprünglichen Klons bleiben
jedoch bleiben
jedoch Wenn wir auch seine
Attribute wieder randomisieren wollen, müssen
wir nur zu M-Blöcken gehen
und einen Asteroidenblock einrichten nach den beiden
Klonblöcken Bevor wir das Spiel starten, löschen
wir eigentlich immer noch den ursprünglichen Außerdem setzen wir
kein Limit dafür, wie klein
die Klone werden können. Um diese beiden Probleme zu beheben, löschen
wir einen Klon, sobald er eine bestimmte Größe
unterschreitet Wir wissen, dass wir, wenn
wir einen Asteroiden zum ersten Mal aufteilen, die Größe auf 100 setzen, was der Hälfte der
Startgröße von 200 entspricht wir ihn das nächste Mal aufteilen, halbieren
wir ihn
wieder, sodass er 50 ist Das sollte klein genug sein. Sobald die Größe eines Klons unter 50
gefallen ist ,
löschen wir den Klon. Gehen wir dazu zu Control,
nehmen einen Block, wenn dünn, nehmen einen Block, wenn dünn, und wickeln wir ihn
sowohl um die Änderung der Gesamtsumme des Klones um einen negativen Block als auch
um
den Block „Diesen Klonblock löschen“. Gehen wir für die Bedingung zu den Operatoren und geben einen
Block mit weniger als ein. Dann gehen wir zu Looks und überprüfen, ob die Größe kleiner als 50
ist. Wir wollen das eigentlich tun, bevor wir
weitere Klone erstellen Lassen Sie uns den IT-Block
nach rechts unter den Block mit der
eingestellten Größe verschieben nach rechts unter den Block mit der
eingestellten Größe Wenn wir jetzt das Spiel starten
und einige Asteroiden abschießen, teilen sie sich, sobald sie keine Lebenspunkte mehr
haben, in drei
kleinere Fragmente Damit müssen wir allerdings
vorsichtig sein. Um zu sehen, was ich meine,
lassen Sie uns das Spiel beenden. Nehmen wir an, wir möchten, dass
die Klone auf eine Größe von 25
herunterkommen ,
bevor wir sie löschen. Lassen Sie uns nun das Spiel erneut ausführen, einige Asteroiden
abschießen, bis
sie wirklich klein und lassen Sie einige
der kleineren Klone das Ende der Stufe
erreichen Wenn wir
den Klonzähler im Auge behalten, nimmt
er nicht so ab,
wie er sollte Das liegt daran, dass
Scratch, wie
wir bereits
bei der Erschaffung
des Asteroiden-Sprites gelernt haben, die Größe
eines Sprites verwendet , um zu begrenzen, wie weit es sich von der
Bühne entfernen Wenn die Klone klein
genug werden, können
sie
das negative
Positionslimit von 250 Y, das wir festgelegt haben, nicht erreichen , sodass sie am Ende
irgendwo knapp unter
dem unteren Rand stecken bleiben irgendwo knapp unter Um das zu beheben, müssen wir, bevor
wir
zum großen Kostüm wechseln und
die Position hier oben ändern, zunächst
die Größe wieder auf 200% setzen Lassen Sie uns einen Block mit der
Größe 2 auskratzen, ihn über dem
Schalter Kostüm auf
großen Block
platzieren und
die Größe auf 200 setzen Nachdem wir hier unten jedoch wieder
zum
Originalkostüm gewechselt sind, müssen
wir jetzt auch
wieder zur Originalgröße wechseln Das bedeutet, dass
wir, wie
beim Kostüm, eine Variable
zum Speichern der Originalgröße erstellen müssen . Gehen wir also zu Variablen und erstellen wir eine
neue Variablen namens size. Nur für dieses
Sprite erstellen Nun, bevor wir hier die
Größe auf 200 setzen, wir einen Satz zum Blockieren hinzu und verwenden ihn, um die Größenvariable auf die aktuelle Größe
zu setzen Gehen wir zu Looks und verwenden
einen Größenblock als Eingabe. Nachdem wir das Kostüm
auf die Kostümvariable
umgestellt
haben, können wir schließlich auf die Kostümvariable
umgestellt
haben, die Größe auf die Größenvariable setzen, indem
wir einen Block mit der Größe 2 eingeben, dann zu Variablen gehen und einen
Größenvariablenblock als Eingabe
verwenden. Und wenn wir jetzt das Spiel starten
und ein paar Asteroiden abschießen, sollte sich
der Klonzähler auf etwa ein Dutzend
ausgleichen Ordnung, nachdem das
potenzielle Problem behoben ist,
beenden wir das Spiel und ich setze die Größenkontrolle
wieder auf 50 zurück. Okay, da wir einen Asteroiden
erst
teilen , wenn seine Gesundheit auf eins
gesunken ist, beginnen
die neuen Klone
mit einer Gesundheit von eins, sodass nur ein einziger
Schuss erforderlich ist, um sie aufzuteilen. Bevor wir die Größe ändern, können
wir also überprüfen, ob die Größe größer als 100
ist, und wenn ja, können wir die
Gesundheitsvariable auf zwei setzen. Es werden dann zwei Aufnahmen benötigt, um die Klone in der
ersten Fragmentgruppe
aufzuteilen Gehen wir also zuerst zur Steuerung und bringen einen dünnen Block
in einen leeren Raum Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block größer als ein. Gehen wir nun zu Los
und überprüfen wir, ob die aktuelle
Größe größer als 100 ist. im Block I thin Gehen
wir im Block I thin zu Variablen. Bring einen Block mit zwei ein
und setze Gesundheit auf zwei. Lassen Sie uns das alles nun direkt
über dem Block mit der eingestellten Größe platzieren. Wenn wir das Spiel jetzt
ausführen, sind immer noch drei Schüsse erforderlich,
um einen großen Asteroiden zu zerlegen, aber jetzt sind zwei Schüsse um einen mittelgroßen zu zerteilen, und ein Schuss zerstört
die kleinsten Fragmente In Ordnung, jetzt kommt definitiv
alles zusammen. Aber für riesige Felsen, die im Weltraum
explodieren, sieht
es immer noch ein bisschen zu zahm In der nächsten Lektion werden wir noch
ein paar Effekte hinzufügen ,
damit es noch besser aussieht
43. Explosionsblitze hinzufügen: Um das Erscheinungsbild
unseres Spiels zu verbessern, werden
wir einige
Explosionseffekte hinzufügen, wenn die Asteroiden teilen oder
zerstört werden diesen Effekten gehören Lichtblitze und
Partikeleffekte Okay, zu Beginn erstellen
wir ein neues
Sprite für die Effekte Gehen wir also runter zur Schaltfläche „Sprite auswählen “ und klicken auf Und nennen wir es Explosion. das erste Kostüm Benennen
wir das erste Kostüm in Flash um. Wir werden dieses Kostüm verwenden, um
bei der Explosion
einen Lichtblitz zu zeigen , und es ist ziemlich
einfach zu zeichnen. Nehmen wir zuerst das
Kreiswerkzeug und wählen Reinweiß als Füllfarbe
und schalten den Umriss aus. Lassen Sie uns nun die Leinwand ein
wenig vergrößern. Und während wir die Umschalttaste gedrückt halten, zeichnen
wir einen Kreis mit einem Durchmesser von etwa 14 oder 15
Blöcken. Lass uns weitermachen und den Kreis
zentrieren. Nehmen wir nun das
Sleck-Tool und duplizieren
den Kreis, indem wir die
Alt- oder Wahltaste gedrückt halten und
darauf klicken Halten wir dann die
Alt- oder Wahltaste erneut gedrückt, vergrößern
wir
den Wert etwas weiter Okay. Wenn wir uns nun den oberen Rand des Dialogfelds „
Füllfarbe“ ansehen, neben der Option „Volltonfarbe , die wir
bisher im Kurs verwendet haben, auch
Verlaufsoptionen, auch
Verlaufsoptionen glatte Farbverläufe
zwischen zwei verschiedenen Farben
erstellen Wir können einen
horizontalen Farbverlauf,
einen vertikalen Farbverlauf
oder einen radialen Farbverlauf anwenden einen vertikalen Farbverlauf
oder einen radialen Farbverlauf Was wir für den
Kreis verwenden wollen, ist ein radialer Farbverlauf. Klicken wir hier rechts auf die
Schaltfläche mit dem Radio-Farbverlauf. Wir haben jetzt zwei Farben
, die wir einstellen können. Der Farbverlauf geht von
der ersten Farbe in der Mitte zur zweiten
Farbe am Rand. Wir wollen, dass
der Farbverlauf von Weiß in der Mitte zu
transparent am Rand wechselt. Dazu können wir
die erste Farbe auf Weiß belassen und für die zweite Farbe auf den roten
Ford-Slash-Button klicken, um sie auszuschalten Auf der Leinwand können wir das nicht
gut erkennen, aber wenn wir
den Farbdialog schließen, können
wir auf der Bühne sehen, dass der kleinere Kreis dadurch einen schönen Leuchteffekt
erhält Lassen Sie uns nun weitermachen und sehen,
wie wir das nutzen können. Wir wollen, dass ein Blitz erscheint, wenn sich ein Asteroid entweder
aufteilt oder zerstört wird, und wir wollen, dass er an derselben Stelle
wie
der Asteroid erscheint derselben Stelle
wie
der Das bedeutet, dass wir mit der von uns erstellten Liste von
Treffern und einigen Maulwürfen eine
globale Variablenliste
erstellen müssen, eine
globale Variablenliste
erstellen müssen in der die Explosionsorte gespeichert werden. Gehen wir zunächst
zum Code für
den Asteroiden Sprite
und klicken
wir unter Variablen auf Liste wir Wir können es Explosionen nennen, und das muss
für alle Sprites gelten Okay. Jetzt wissen wir, dass sich ein
Asteroid entweder aufteilt oder zerstört wird, und das
definiert Asteroideneinschläge Immer, wenn die Lebenspunkte
größer als ein Block ,
ist es falsch und die verbleibenden
Blöcke haben eine Chance zu laufen Deshalb können wir den Standort der
Asteroiden irgendwann
danach zur
Explosionsliste hinzufügen irgendwann
danach zur
Explosionsliste , wenn die Gesundheit
größer als ein Block ist,
und das
tun wir innerhalb eines und das
tun wir innerhalb Gehen wir zu Mblocks
und klicken auf Mika-Block. Nennen wir es Explode
und klicken wir auf Okay. Wir können die Definition
Explode irgendwo
hier drüben platzieren und dann fahren wir fort und fügen dem Asteroiden-Treffer-Skript einen Explode-Block hinzu Unter dem I ist die Lebenspunktzahl
größer als ein Block. Jetzt fügen
wir in Define explode den Standort der Asteroiden
zur Explosionsliste Gehen wir zurück zu Variablen und fügen
zwei Explosionsblöcke hinzu Und wir
werden tatsächlich auch die Größe des Asteroiden verwenden , um
die
Größe der Explosion zu ändern Lassen Sie uns also noch
einen zusätzlichen Block hinzufügen. Für die ersten beiden Blöcke zum Hinzufügen können
wir zur Bewegung übergehen und einen Positionsblock für den ersten und
einen
Y-Positionsblock für den zweiten einfügen. Für den dritten gehen
wir zu Los und
bringen einen Größenblock hinein. Wenn wir das Spiel jetzt starten, jedes Mal, wenn wir einen Asteroiden aufteilen
oder zerstören, sein Standort und seine Größe zur Explosionsliste
hinzugefügt Jetzt müssen wir nur noch
die Gegenstände verwenden. Gehen wir also
zum Code für das Explosions-Sprite über. Da es wahrscheinlich mehrere Explosionen
gleichzeitig
geben wird, verwenden
wir zunächst mehrere Explosionen
gleichzeitig
geben wird, Klone
des Wie üblich bedeutet das, dass wir den Sprite selbst
verstecken werden. Lass uns zu den Events gehen und einen
Startspiel-Block mit W, den ich erhalte Dann lass uns nach Los gehen und einen Versteckblock
reinbringen. Als Nächstes wollen wir
die
Explosionsliste löschen , damit wir keine Gegenstände aus
dem vorherigen Spiel verwenden Gehen wir also zu Variablen und fügen den Block „Alle
Explosionen löschen Danach werden wir
kontinuierlich überprüfen, ob die Explosionsliste irgendwelche Elemente
enthält Und wenn ja, verwenden wir die Gegenstände, um
Lichtblitze zu erzeugen Gehen wir zur Kontrolle und
bringen einen Block für immer rein. Dann fügen wir einen
Wenn-Dann-Block hinzu. Für die Bedingung wollen
wir prüfen, ob die Länge der Liste größer als Null
ist. Gehen wir zu den Operatoren und
fügen einen Block größer als ein. Gehen wir dann zu Variablen
und überprüfen wir, ob die Länge der Explosionen größer als Null ist Okay. Jetzt verwenden wir die
Elemente aus der Liste , um die Position
und Größe des Klons festzulegen. Gehen
wir für die Position zu Motion und fügen dem Block I then einen Go
to XY-Block hinzu. Die ersten beiden Elemente
stehen jeweils für die X- und
Y-Positionen. Gehen wir also zu Variablen
und verwenden für jede
Eingabe des Blocks „Gehe zu XY“ einen Explosionsblock. Achten wir
darauf, dass Element
zwei für die Y-Position verwendet Für die Größe können wir nach Los gehen einen Block der Größe zwei zusammenstellen Gehen Sie dann zurück zu Variablen und
fügen Sie ein Blockelement hinzu, sodass es Element drei
aus der Explosionsliste verwendet Jetzt können wir die
drei Elemente aus der Liste entfernen. Lassen Sie uns also drei hinzufügen und ersten Punkt der
Explosionsblöcke löschen Endlich können wir einen Klon erstellen. Gehen wir also zu Control und fügen Block
zum Erstellen eines
Klons von mir selbst ein. Ordnung, jetzt müssen wir
den Klonen
nur noch sagen, was sie
tun sollen, sobald sie gestartet sind Also lass uns einen als Klonblock einbauen, wenn
ich anfange. Zuerst wollen wir
den Klon zeigen und ihn
auf die vordere Ebene bringen. Gehen wir also zu
Looks und fügen sowohl einen Show-Block als auch einen Block „
Gehe zur vorderen Ebene“ hinzu. Wir wollen auch
den Klonzähler erhöhen. Gehen wir also zu Variablen und fügen eine Änderung der
Klonsumme um einen Block hinzu. Als Nächstes möchten wir, dass der Flash
nur für einen kurzen
Zeitraum erscheint, sodass er
schnell ausgeblendet wird. Gehen wir dazu zu Control und fügen einen Wiederholungsblock und lassen ihn viermal
wiederholen. Um den Klon auszublenden, können
wir zu Looks gehen, Wiederholungsblock blockweise einen Änderungseffekt
hinzufügen und
den Ghost-Effekt um 25 ändern. Nachdem wir den Klon
ausgeblendet
haben, wollen wir ihn schließlich löschen Gehen wir also zunächst
zu Variablen und setzen einen Change-Clone-Gesamtblock
unter den Wiederholungsblock und ändern ihn
um einen negativen Wert Jetzt können wir zur Steuerung gehen und
diesen Klonblock löschen. Und das sollte alles sein, was wir brauchen. Also lass uns weitermachen
und es versuchen. Hervorragend. Die Blitze
erscheinen kurz über den Asteroiden, die sich
aufteilen oder zerstört werden, und ihre Größe hängt von
der Größe des Und jetzt, da wir wissen,
dass alles richtig funktioniert, können
wir die Liste ausblenden Okay, die Blitze sind fertig. In der nächsten Lektion werden
wir also an den
Partikeleffekten arbeiten
44. Partikeleffekte hinzufügen: Partikeleffekte
werden häufig in
Spielen verwendet , um Dinge
wie Explosionen,
Rauch, Blutspritzer und
sogar Wettereffekte
wie Regen und Schnee zu erzeugen Rauch, Blutspritzer und
sogar Wettereffekte
wie Regen und sogar Wettereffekte
wie Regen und Sie bestehen in der Regel mehreren Kopien eines
einzelnen Sprites, den so genannten Partikeln, auf die verschiedene Änderungen angewendet werden, um
sie zufälliger erscheinen zu lassen, beispielsweise durch Änderung der Farbe,
Geschwindigkeit, Richtung und
Größe Und in unserem Spiel haben wir drei verschiedene Arten
von Explosionspartikeln Für die Asteroiden werden wir Staubpartikel
haben. Und später, wenn der
Spieler zerstört wird, haben
wir Feuer- und
Rauchpartikel Und wir können all
diese Partikel innerhalb
des Explosionssprites erzeugen diese Partikel innerhalb
des Explosionssprites Ordnung, also wenn das
Explosions-Sprite ausgewählt ist, gehen
wir zum Tab Kostüme Lassen Sie uns ein neues
Kostüm erstellen, indem wir auf die
Schaltfläche „Kostüm auswählen“ klicken und auf „Malen und
den Namen in Staub ändern Das Kostüm für jedes Partikel wird ziemlich einfach sein. Lassen Sie uns zunächst
das Kreiswerkzeug nehmen. Und für die Füllfarbe kehren
wir zu einer festen Füllung zurück, kehren
wir zu einer festen Füllung zurück indem wir auf die Schaltfläche
hier oben links klicken
und eine braune Farbe wählen. nun sicher, dass der
Umriss deaktiviert ist, und erstellen
wir einen kleinen Kreis Durchmesser
von etwa vier Blöcken. Jetzt können wir uns das Werkzeug zum Umformen schnappen und die Form ein
wenig ändern . Und das sollte gut sein Achten wir darauf, die Form zu
zentrieren. Dann können wir an den
anderen beiden Kostümen arbeiten. Für die anderen beiden
Partikeltypen können
wir
hier tatsächlich dieselbe Form
verwenden und einfach die Farbe
ändern. Lassen Sie uns also zuerst
das Staubkostüm duplizieren und den Namen in Feuer
ändern. Dann können wir
die Form auswählen und die
Farbe in ein leuchtendes Gelb ändern. Schließlich können
wir für den Rauchpartikel eines
der aktuellen Kostüme duplizieren, den Namen in Rauch und die Farbe
in hellgrau ändern. Ordnung, wir sind
mit den Kostümen fertig, gehen
wir zurück zum Code. Für jede Explosion werden wir weiterhin
einen Flash-Klon erstellen. Aber jetzt wollen wir auch
einige Klone erstellen , die eines
der Partikelkostüme verwenden Um zu wissen, welches
Partikelkostüm wir verwenden sollen, benötigen
wir das explodierende
Objekt, das es uns sagt Das bedeutet, dass
das Objekt nicht nur den Ort und die Größe
zur Explosionsliste hinzufügen muss, sondern auch den Partikeltyp
hinzufügen muss Im Moment sind die
einzigen explodierenden Objekte, die wir haben, die Asteroiden Gehen wir zum
Asteroidencode über. Bei Defined Explode here müssen
wir der Explosionsliste
einen vierten Punkt hinzufügen, der angibt welches Partikelkostüm Gehen wir also zu Variablen und fügen einen weiteren
Block zum Hinzufügen von Explosionen
hinzu Und um die Dinge einfach zu halten, können
wir einen der Kostümnamen
aus
den Explosions-Sprites verwenden aus
den Explosions-Sprites Für die Asteroiden wollen wir das
Staubkostüm verwenden. Fügen wir der Liste das Wort
Staub hinzu. Jetzt können wir zum
Explosion-Sprite-Code zurückkehren. Okay, wir werden also weiterhin einen Klon für den Flash
erstellen, aber jetzt verschieben wir den Block zum
Erstellen eines Klones hierher über den Löschblock Und weil wir jetzt
zwischen verschiedenen Kostümen wechseln werden , um sicherzugehen, dass wir einen Klon
mit dem Flash-Kostüm erstellen, gehen
wir zu Looks und platzieren einen Switch-Kostüm-Block über
dem Block „Clone erstellen wechseln wir
zum Flash-Kostüm. Was nun die Partikel angeht, müssen
wir zunächst zu dem Kostüm
wechseln, dem Gegenstand Nummer vier
aus der Explosionsliste Lasst uns also einen weiteren
Switch-Kostümblock einfügen
und ihn unter den Block „Clone
erstellen Jetzt können wir zu Variablen gehen und ein Blockelement in
den Switch-Kostümblock
einfügen. Und wähle Punkt vier aus
der Explosionsliste. Und wir möchten sicherstellen
, dass der Artikel auch gelöscht wird. Lassen Sie uns also einen weiteren Block zum
Löschen eines Explosionsblocks hinzufügen. Okay? Und damit
alles leicht lesbar ist,
lassen Sie uns die
Partikelklone in einem benutzerdefinierten Block erstellen Gehen wir dazu zu Mblocks
und klicken auf Make a Block. Geben wir zunächst create ein und wir möchten auswählen können, wie
viele Partikel erstellt werden sollen Wir müssen also eine
dieser Eingabeoptionen hier unten verwenden . Wir haben eine Option für eine Zahlen- oder Texteingabe und
eine für eine boolesche Eine Partikelzahl ist eine Zahl, also wählen wir
die erste Wir können jetzt einen
Namen für die Eingabe eingeben. Nennen wir es also zählen. Schließlich können
wir nach
der Eingabe ein Label hinzufügen, indem wir hier auf Label hinzufügen klicken
und Partikel eingeben. Ordnung, der vollständige Titel des
schwarzen Felds lautet also Create Count Particles Klicken wir nun auf
Okay, um es zu erstellen. Wir können den definierten Block zum Erstellen von
Partikeln hierher nach unten bewegen Lassen Sie uns
einen
Block zum Erstellen von Partikeln aus der
Blockpalette nehmen und ihn
direkt unter dem
Kostüm platzieren , bis der Block Objekt 4 angezeigt wird und wenn ich „Spiel starten“
erhalte. Was die Anzahl der Partikel angeht, wollen
wir uns das nicht wegnehmen denn jedes Partikel
wird ein separater Klon sein, und obwohl die Klone nur für einen
kurzen Zeitraum existieren, können
sie sich ziemlich schnell summieren Ich denke, so etwas wie
zehn sollten gut sein. Als Nächstes verwenden
wir im Skript zum Erstellen von
Partikeln den Wert der Eingabe für die Anzahl
der zu erstellenden Klone als
Gesamtzahl der zu erstellenden Klone. Gehen wir dazu zunächst
zu Control und fügen
einen Wiederholungsblock hinzu . Für die
Anzahl der Wiederholungen können
wir hier tatsächlich einen Zählblock
aus dem definierten Block
verwenden aus dem definierten Block Jetzt müssen wir nur noch
einen Create-Clone meines
Blocks zum
Wiederholungsblock hinzufügen und fertig Aber wir müssen den
Partikelklonen immer noch
sagen , was sie tun sollen, wenn
sie erstellt wurden Kommen wir also zu dem Zeitpunkt, an dem
ich als Klonskript anfange. Wir wollen verschiedene
Dinge tun, je nachdem ob der Klon ein
Flash-Klon oder ein Partikelklon ist. Lassen Sie uns also zunächst
einen F-dünnen Else-Block
in einen leeren Raum bringen . Für den Zustand werden
wir überprüfen, ob der Klon
das Flash-Kostüm verwendet. Gehen wir also zuerst zu Operatoren und fügen einen Equals-Block ein Für die erste Eingabe können
wir zu Looks gehen und
einen Kostümblock einfügen Aber statt der Kostümnummer wollen
wir
den Kostümnamen überprüfen
und prüfen, ob der
Kostümname gleich Flash Jetzt können wir die
Gesamtanzahl der Klone ändern und
diese Klonblöcke
von hier unten löschen und
sie am unteren Rand
des I thinlsblocks anhängen sie am unteren Rand
des I thinlsblocks Wenn der Sprite das Flash-Kostüm
benutzt, blenden
wir es einfach aus, so wie wir es zuvor getan haben Nehmen wir den
Wiederholungsblock hier und fügen ihn in den I-Teil
des I-Thinlsblocks ein. Dann können wir
das Ganze am Ende
des When I
Starte als Klon-Skript hinzufügen am Ende
des When I
Starte als Klon-Skript Wenn der Klon nun nicht das Flash-Kostüm
verwendet, verwendet
er eines der
Partikel-Kostüme. Lassen Sie uns also entscheiden, was
die Partikelklone tun sollen. Zunächst beginnen alle Partikel an
derselben Position, und für einen Explosionseffekt bewegen
wir sie alle gleichzeitig
nach außen Dazu können wir jedem
Partikel eine zufällige Richtung
sowie eine zufällige Geschwindigkeit zuweisen, damit es chaotischer aussieht Gehen wir also zunächst zur Bewegung über und fügen dem Teil des Ins-Blocks
einen Punkt- und Richtungsblock
hinzu, und wir wählen eine
zufällige Richtung Gehen wir also zu Operatoren und fügen einen Block mit zufälliger
Auswahl hinzu. Wir lassen die Klone sich
in jede mögliche Richtung bewegen, sodass wir eine Zahl von 1 bis 360 auswählen können Als Nächstes müssen
wir für die Geschwindigkeit eine lokale Variable erstellen Gehen wir also zu Variablen
und erstellen eine neue. Wir können es Geschwindigkeit nennen und
es nur für dieses Sprite erstellen, und wir müssen die Variable nicht
anzeigen Jetzt können wir unter dem Punkt
- und
Richtungsblock einen Satz zum Blockieren hinzufügen , und wir werden dafür sorgen, dass die
Geschwindigkeitsvariable auf eine Zufallszahl gesetzt Geschwindigkeitsvariable auf eine Zufallszahl Gehen wir also zu Operatoren, bringen einen Pick Random Block rein
und wählen etwas 3-8 Als Nächstes verwenden
wir in einer kurzen Animation die
Geschwindigkeitsvariable, um
den Klon zu bewegen , und blenden ihn
auch aus Gehen wir also zur Steuerung und bringen einen Wiederholungsblock in einen
leeren Bereich, und wir belassen es
bei zehn Wiederholungen Um den Klon zu bewegen, können wir zur
Bewegung übergehen und
einen Bewegungsblock einfügen Gehen wir dann zu Variablen und verwenden einen
Geschwindigkeitsblock als Eingabe. Um den Klon auszublenden, gehen
wir abschließend zu Los und fügen blockweise
eine Änderung ein. Und lassen Sie uns den
Ghost-Effekt um zehn ändern. Ordnung, jetzt
nehmen wir den Wiederholungsblock und platzieren ihn direkt unter
dem eingestellten Geschwindigkeitsblock und probieren es aus. Okay, wir haben also ein
kleines Problem. dauert
zu lange, bis die Partikel auftauchen, also sieht es so aus, als ob sie aus dem Nichts
auftauchen. Der Grund, warum das passiert
, hat mit unserem
Crate-Partikel-Skript zu tun Da Scratch nur
eine einzige Wiederholung
eines Wiederholungsblocks während
eines einzelnen Frames oder einer
Bildschirmaktualisierung ausführt eines Wiederholungsblocks während , dauert
es insgesamt
mehrere Frames, bis
alle Partikelklone erstellt sind Bis dieser Vorgang abgeschlossen ist, der Asteroid, auf
dem der Klon
erscheinen sollte ,
schon eine Weile verschwunden Zum Glück
gibt es jedoch einen Weg, dies zu umgehen, und das ist einer der
Hauptgründe für die Verwendung von benutzerdefinierten Blöcken Wenn wir mit der rechten Maustaste auf den
definierten
Block „Partikel erstellen“ klicken und „Bearbeiten“ wählen, wird wieder das Dialogfeld „Block erstellen“ geöffnet
, in dem wir
Änderungen am Block
vornehmen , in dem wir
Änderungen am Block Am unteren Rand
des Dialogs befindet sich das Kontrollkästchen Ohne Bildschirmaktualisierung ausführen
“ Wenn wir es einschalten,
erzwingt es Scratch,
alle Blöcke innerhalb
des benutzerdefinierten Blocks in
einem einzigen Frame auszuführen alle Blöcke innerhalb . Wenn wir jetzt auf
Okay klicken und es erneut versuchen, erscheinen
alle Partikel gleichzeitig und sobald der Asteroid teilt
oder zerstört wird, und jetzt sieht er
viel Es gibt jedoch ein paar Verbesserungen
, die wir vornehmen können. Erstens erscheinen die Partikel
derzeit über dem Blitz,
aber ich denke, es könnte ein bisschen
besser aussehen , wenn der Blitz oben
erscheinen würde. Dazu müssen
wir lediglich die Reihenfolge ändern,
in der wir den Flash-Klon
und
die Partikelklone erstellen und
die Partikelklone Also schnappen wir uns das
Switch-Kostüm zum
Flash-Block und ziehen
all diese Blöcke heraus Jetzt können wir
das Switch-Kostüm von
Flash trennen und Klonblöcke
aus den anderen Blöcken erstellen und dann die beiden Blöcke
unter den Partikelblock legen. Jetzt können wir das alles wieder ganz unten
im Block I then platzieren . Und wenn wir es noch einmal versuchen, erscheint
der Blitz
über den Partikeln. Meiner Meinung nach sieht das besser aus, aber Sie können es gerne wieder
so machen, wie es vorher war. Okay? Und die Partikel sehen sich
auch ein bisschen zu ähnlich. Um das zu beheben, können wir einige der Partikel nach dem Zufallsprinzip dunkler
machen als die anderen. Und das
wollen wir eigentlich nur tun, wenn
das Partikel ein Staub
- oder Rauchpartikel ist. Wir werden etwas anderes
mit den Feuerpartikeln machen. Lassen Sie uns also zunächst zur Steuerung gehen und einen Wenn-Dann-Block
in einen leeren Raum bringen. Was den Zustand angeht, wollen
wir überprüfen, ob der Klon nicht
das Feuerkostüm benutzt. Gehen wir zu den Operatoren und
bringen einen Knotenblock rein. Dann füge auch
einen Equals-Block hinzu. Gehen wir jetzt zu Looks und
bringen einen Kostümblock rein. Und wir wollen überprüfen, ob Name des
Kostüms
nicht gleich Feuer ist. Okay, und um dem Klon eine zufällige
Menge an Dunkelheit hinzuzufügen , fügen
wir zuerst einen festgelegten Effekt zum Blockieren hinzu,
und dann legen wir den
Helligkeitseffekt fest. Gehen wir dann zu den Operatoren und fügen einen Block mit zufälliger
Auswahl hinzu. Wenn Sie einen negativen Wert für die
Helligkeit verwenden , wird
das Sprite dunkler Gehen wir also mit einem Wert
zwischen minus 30 und Null aus. Dadurch wird
die Helligkeit entweder überhaupt nicht verändert ,
wenn Null gewählt wird, oder der
Klon wird bis zu 30% dunkler. Jetzt können wir
das alles über den
Block mit zehn Wiederholungen legen und wenn ich
als Klon anfange, und es ausprobieren. Sehr nett. Auch wenn wir die Feuer- und
Rauchpartikel nicht
für die Asteroiden verwenden werden , können
wir sie trotzdem testen Gehen wir dazu in
den Sprite-Code der Asteroiden anstatt Staub zur
Explosionsliste hinzuzufügen ,
lassen Sie uns Lass es uns versuchen.
Rauch verhält sich genauso wie Staub, außer
dass er graue Partikel enthält Versuchen wir nun, Feuer hinzuzufügen. Und weil wir die Helligkeit
der Feuerpartikel nicht ändern, sind
sie alle gleich gelb. Etwas, das wir tun können, damit die Feuerpartikel besser aussehen,
ist, dass sie immer
roter werden , wenn sie sich ausbreiten. Gehen wir dazu zurück
zum Explosions-Sprite. Und hier
gehen wir zur Steuerung und bringen einen weiteren dünnen Block
in einen leeren Raum Dieses Mal wollen wir überprüfen, ob der Kostümname Feuer ist,
damit wir
den Kostümnamen
gleich Feuerblock
hier duplizieren den Kostümnamen
gleich Feuerblock und ihn für den
Zustand des ITN-Blocks verwenden nun innerhalb des Blocks I Thin Gehen
wir nun innerhalb des Blocks I Thin zu Looks und fügen dort blockweise eine Änderung der
Farbe hinzu Um von Gelb zu Rot zu wechseln, müssen
wir
den Farbeffekt reduzieren, und wir möchten, dass er subtil ist. Lassen Sie uns also etwas
Kleines wie negativ zwei verwenden. Jetzt können wir das
irgendwo in den Wiederholungsblechblock stecken
und es versuchen. Das sieht viel
besser aus. In Ordnung, wir sind jetzt fertig mit der Erzeugung der
Explosionspartikel. Stellen wir also sicher, dass wir zum
Asteroiden-Sprite zurückkehren und den
Partikeltyp wieder in Staub
ändern Und in der nächsten Lektion lassen
wir die Asteroiden Spaß
haben, indem wir den Spieler zerstören, und wir werden die Zerstörung des Spielers mit
mehreren Explosionen und einer Kombination aus
Rauch
- und Feuerpartikeln
ziemlich dramatisch gestalten Zerstörung des Spielers mit
mehreren Explosionen und einer Kombination aus
Rauch
- und Feuerpartikeln
ziemlich dramatisch mehreren Explosionen und einer Kombination aus
Rauch
- und Rauch
45. Den Spieler zerstören: Im Gegensatz zu den Asteroiden hat
der Spieler
keine Lebenspunkte und wird zerstört, sobald
ein Asteroid ihn trifft Später werden wir allerdings einen Schild
hinzufügen
, der den Spieler
vorübergehend unbesiegbar macht Und wenn ihr wirklich wollt, könnt ihr dem
Spieler auch etwas Gesundheit geben ähnlich wie wir
es mit den Asteroiden gemacht haben Wie dem auch sei, um loszulegen, gehen
wir in den Sprite-Code des
Players Wir wollen
in der Dauerschleife
des Startspielskripts überprüfen, ob der
Spieler getroffen wurde,
bevor
wir uns bewegen oder schießen , und wenn ja,
zerstören wir den Spieler zu überprüfen, ob der
Spieler getroffen wurde, gehen
wir zu Mblocks und
erstellen einen neuen benutzerdefinierten Block Wir können es Check
Hit nennen und auf Okay klicken. Lassen Sie uns weitermachen und
oben im Forever-Block
einen Check-Treffer-Block hinzufügen . Dann verschieben wir den
Define-Check-Hit in ein leeres Feld. Ordnung, also in
Define Check Hit müssen
wir zuerst überprüfen, ob der Spieler einen Asteroiden
berührt Um das zu tun, gehen wir zur Steuerung und geben ein Wenn-und-Block
ein Und was den Zustand angeht, gehen
wir zur Sensorik über, bringen einen sich berührenden Block hinein
und ändern ihn in einen
berührenden Asteroiden Wenn das der Fall ist, zerstören
wir den
Spieler, indem wir
eine Reihe von Explosionen
auf dem Sprite des Spielers erzeugen eine Reihe von Explosionen
auf dem Sprite des Spielers Wir wollen aber auch Dauerschleife
im Startskript des Spiels unterbrechen Andernfalls kann sich der Spieler
immer noch
bewegen und schießen, während sein Sprite explodiert Um das zu tun, muss der Block mit der
Check-Treffer-Taste dem Block für immer
mitteilen , ob der
Spieler getroffen wurde oder nicht Dafür können wir eine Variable
erstellen. Gehen wir also zu Variablen
und erstellen wir eine neue. Und nennen wir es ist tot. Nur das Spieler-Sprite
muss die Variable verwenden, also können wir sie nur für
dieses Sprite erstellen Und wir können weitermachen
und die Variable verstecken. Okay? Zu
Beginn des Spiels wollen
wir natürlich, dass der
Spieler nicht tot ist. Fügen wir also ein Set
hinzu, das irgendwo vor dem Forever-Block
im Startspiel-Skript blockiert werden soll. Und setzen wir Is dead auf false. Als nächstes zurück ins Define-Check-Kit. Wenn der Spieler einen Asteroiden
berührt, bringen
wir einen Satz von zwei Blöcken
rein und Set ist tot. Jetzt zurück im Startspiel. Nach dem Blockieren überprüfen
wir, ob der
Spieler tot ist, und wenn ja,
beenden wir das Script. Gehen wir also zu Control und bringen für den Moment
einen ITN-Block in eine
leere Stelle Und was die Bedingung angeht, gehen
wir zu den Operatoren und fügen einen Equals-Block ein Gehen wir nun zu Variablen
und überprüfen wir, ob es
tot ist, gleichbedeutend Wenn ja, beenden wir
das aktuelle Skript. Gehen wir zu Control, fügen dem ITN-Block einen Stopp-Block hinzu und sorgen
dafür, dass das Skript gestoppt wird Jetzt können wir hier den ITN-Block
direkt unter dem
Check-HIT-Block platzieren direkt unter dem
Check-HIT-Block Wenn wir das Spiel jetzt starten und von einem Asteroiden getroffen
werden, können
wir uns nicht mehr bewegen oder schießen Okay? Lasst uns jetzt an
den Spielerexplosionen arbeiten Dafür erstellen wir
einen weiteren benutzerdefinierten Block. Gehen wir also zu Mblocks, klicken auf Block erstellen und nennen wir es Explode Und wir möchten sicherstellen, dass hier nicht die
Option Ausführen ohne
Bildschirmaktualisierung aktiviert den
meisten Fällen ist dies optional, aber da wir
Animationen innerhalb des Blocks haben werden, sind mehrere
Bildschirmaktualisierungen
erforderlich um richtig zu funktionieren Klicken wir also auf Okay. Gehen Sie irgendwo hier drüben zu
Fine Explode Und lassen Sie uns weitermachen und einen Explode-Block
hinzufügen, um
Check-Treffer zu definieren, gleich nachdem wir ihn auf falsch
gesetzt haben Okay, um den Spieler explodieren zu lassen, machen wir
das so,
dass der Sprite
des Spielers
komplett weiß wird und langsam verblasst,
während wir gleichzeitig
mehrere Explosionen an
zufälligen Teilen des Sprites erzeugen mehrere Explosionen an
zufälligen Teilen Um das Sprite
komplett weiß zu machen, gehen
wir zunächst zu Looks, fügen dem Explode-Skript einen festgelegten Effekt
zum Blockieren hinzu
und setzen die und Da wir die Grafikeffekte der
Sprites ändern, müssen
wir sicherstellen, dass sie zu Beginn des Spiels
zurückgesetzt Kehren wir ganz schnell zum
Startskript
des Spiels zurück ganz schnell zum
Startskript
des Spiels und fügen wir vor dem
Block für immer einen klaren Block mit
grafischen Effekten vor dem
Block für immer einen klaren Block In Ordnung, zurück
im schönen Explode. Gehen wir zur Steuerung und
bringen einen Wiederholungsblock rein. Und lassen wir es 20 Mal
wiederholen. Vorerst
blenden wir den Sprite einfach aus. Gehen wir also zu Looks,
fügen einen Change-Effekt Block hinzu und ändern wir den
Ghost-Effekt um fünf Okay. Und gleich nach
dem Wiederholungsblock fügen wir einen Versteckblock hinzu. Der Grund, warum wir
das Sprite verstecken, ist, dass, obwohl der
Ghost-Effekt bei 100% sein wird, sobald der Wiederholungsblock beendet das Sprite für uns
unsichtbar wird, andere Sprites tatsächlich
immer noch mit ihm interagieren können Wenn Sie es andererseits verstecken, wird es auch vor
den anderen Sprites versteckt Das bedeutet aber auch, dass wir das Sprite zu Beginn
des Spiels erneut
zeigen müssen das Sprite zu Beginn
des Spiels erneut
zeigen Fügen wir also oben im
Startspielskript einen Show-Block oben im
Startspielskript Okay. Lassen Sie uns das jetzt ausprobieren, um sicherzustellen, dass es richtig
funktioniert. Wenn uns ein Asteroid trifft, werden
wir weiß und verblassen Es passiert allerdings ein bisschen
zu schnell, also gehen wir zur Steuerung und
fügen einen Warteblock zum Wiederholungsblock für
Check-Treffer-Skripte Wiederholungsblock für
Check-Treffer-Skripte nach dem
Change-Ghost-Effektblock Warten wir, sagen wir, 0,05
Sekunden und probieren es aus. Okay, das sollte funktionieren. Jetzt müssen wir
nur noch
ein paar Explosionen hinzufügen Dazu erzeugen wir
mehrere Explosionen an zufälligen Punkten auf den Sprites des
Spielers und geben
ihnen zufällige Größen wählen zufällig zwischen Feuer- und
Rauchpartikeln Das ist eine Menge Zufälligkeit. Lassen Sie uns zunächst zu Variablen gehen und drei Blöcke bei
zwei Explosionen an den
Anfang des Wiederholungsblocks setzen zwei Explosionen an den
Anfang des Wiederholungsblocks Zuerst müssen wir eine
Exposition für die Explosion hinzufügen. Dazu können wir
eine zufällige Position wählen, von
irgendwo etwas links von der
aktuellen Exposition des Spielers bis irgendwo etwas rechts Gehen wir zunächst zu den
Operatoren und setzen einen zufälligen Auswahlblock in
den ersten Block „Zwei hinzufügen Und tatsächlich können wir auch
weitermachen und
einen innerhalb der anderen
beiden Add-Blöcke platzieren . Okay, für die Belichtung wird
die erste Zahl
kleiner sein als die Belichtung des
Spielers Fügen wir also einen
Subtraktionsblock hinzu, und die zweite Zahl Lassen Sie uns also
einen Additionsblock einfügen. nun für die erste
Eingabe jedes Blocks Gehen
wir nun für die erste
Eingabe jedes Blocks zur Bewegung über und fügen einen
Expositionsblock hinzu Für die zweiten
Eingaben versuchen wir es mit 20. Und die Y-Position
wird so ziemlich dieselbe sein. Gehen wir zu den Operatoren fügen einen Subtraktionsblock für die erste Zahl und einen Additionsblock
für die zweite ein Gehen wir dann zurück zur Bewegung
und fügen zwei Blöcke mit
Y-Position hinzu Und versuchen wir diesmal, 30 zu subtrahieren
und zu addieren. Als Nächstes wählen
wir für die Größe etwas 50-100 Jetzt müssen wir nur noch
den Partikeltyp hinzufügen. Da wir dafür nach dem Zufallsprinzip
zwischen zwei Typen wählen, gehen
wir zunächst
zu Control und bringen einen dünnen Block
in einen leeren Bereich. Für die Bedingung gehen wir zu Operatoren und fügen einen
Gleichheitsblock ein, und für die erste Eingabe fügen wir einen
Pick Random-Block ein Lassen Sie uns überprüfen, ob eine
Zufallszahl 1—2 gleich eins ist. Dadurch hat jeder Typ eine Chance von
50%, ausgewählt zu werden. nun für jeden Teil
des Ich-Dhins-Blocks wir nun für jeden Teil
des Ich-Dhins-Blocks zu Variablen und einen
Block zum Hinzufügen von
Explosionen Für den ersten können wir
das Wort Feuer hinzufügen und
für den zweiten können
wir Rauch hinzufügen Nehmen wir nun den
Block I then und platzieren ihn direkt unter dem dritten
Block. Füge hier zwei hinzu. In Ordnung. Und sobald der Spieler komplett zerstört
wurde, werden
wir irgendwann den Titelbildschirm aufrufen. Aber vorerst beenden wir das Spiel
einfach. Dazu können wir zu Control gehen
und direkt
nach dem Block Hide den Block Stop All hinzufügen . Aber bevor wir das Spiel beenden, fügen wir eine kurze Pause hinzu,
indem
wir einen Block mit einer Wartezeit von
1 Sekunde einbauen. Lass es uns jetzt versuchen. Wir bekommen ein paar zufällige Explosionen
auf dem Sprite des Spielers, dann stoppt das Spiel. Fantastisch. Es würde allerdings noch
besser aussehen, wenn wir das
Sprite beim Explodieren zum Ende
der
Bühne bewegen würden Gehen wir dazu zu Motion und fügen am Anfang des Blocks zur Wiederholung von
Check-Treff-Skripten eine
Änderung Y für Block Wiederholung von
Check-Treff-Skripten Und lassen Sie uns das um
minus fünf oder so ändern. Lassen Sie uns es eigentlich auch
ein bisschen von einer Seite zur anderen bewegen. Dafür können wir auch eine Änderung X Byblock einfügen, dann zu Operatoren gehen, einen Pick Random Block einfügen und etwas zwischen
minus vier und vier wählen Lass es uns jetzt versuchen. Hervorragend. Das wird wirklich cool, wenn wir später
einige Soundeffekte hinzufügen. Es ist allerdings etwas zu einfach für einen Asteroiden,
den Spieler zu treffen Man muss nur kaum
einen Flügel abschneiden, um den Spieler zu
zerstören Es wäre vielleicht etwas weniger
frustrierend, wenn wir
einen kleineren Bereich auf dem Sprite des Spielers definieren würden einen kleineren Bereich auf dem ,
den
ein Asteroid treffen Wir werden
in der nächsten Lektion sehen, wie das geht.
46. Eine Spieler-Hitbox erstellen: Um es
für einen Asteroiden etwas schwieriger zu machen , den Spieler zu
treffen, können
wir
eine sogenannte Hitbox für den Spieler erstellen, mit der wir definieren können, welche Teile des
Sprites des Spielers Dazu müssen wir ein weiteres Kostüm
hinzufügen Nachdem das
Spieler-Sprite ausgewählt ist, gehen
wir zum Tab Kostüme Lassen Sie uns zunächst
eines der Kostüme duplizieren und es Hit-Box nennen Wir werden
das Raumschiff-Kostüm einfach
als Referenz für das
Zeichnen der Hitbox verwenden das Raumschiff-Kostüm einfach
als Referenz für das
Zeichnen der Hitbox Wir möchten jedoch sicherstellen, dass das Hitbox-Kostüm unter
allen anderen Kostümen liegt ,
damit es den
Kostümwechsel, den wir später
implementieren werden, nicht beeinträchtigt Kostümwechsel, den wir später
implementieren werden, Nehmen wir jetzt das
Rechteckwerkzeug mit
dem großen Kostüm, das wir
für den Asteroiden-Sprite entworfen Wir werden
das Hipbox-Kostüm nie wirklich
auf der Bühne sehen , die Farbe spielt keine Rolle Das Kostüm
muss allerdings eine Farbe haben, sonst können die Asteroiden
nicht damit kollidieren Für die Füllfarbe nehme ich
einfach Grau. Und dafür brauchen wir keine
Gliederung. Okay, lassen Sie uns jetzt ein Rechteck
zeichnen ungefähr den
Hauptkörper des Raumschiffs bedeckt Dann können wir uns das
umgeformte Werkzeug schnappen und dafür sorgen, dass es genau den Teil des Raumschiffs
bedeckt genau den Teil des Raumschiffs
bedeckt,
den wir treffen
wollen Das sollte funktionieren. Wenn also ein Asteroid
die Nasenspitze, die Flügel oder
das Triebwerk trifft , zerstört
er den Spieler nicht Okay? Jetzt, wo wir mit dem
Zeichnen der Hip-Box-Form fertig sind, müssen
wir
alle anderen Formen loswerden. Dazu können wir
das Auswahlwerkzeug nehmen und alles
auswählen. Halten Sie dann die Umschalttaste gedrückt und klicken Sie auf die
Hit-Box-Form,
um die Auswahl aufzuheben Jetzt können wir
die anderen Formen löschen Das war's für das
Hip-Box-Kostüm. Gehen wir also zurück zum
Code für den Spieler Sprite. Das erste, was wir tun
wollen, ist, den Spieler Sprite in
einem seiner normalen Kostüme anzufangen den Spieler Sprite in
einem seiner normalen Kostüme also vor dem
Dauer-Block im Startspiel-Skript Lassen Sie uns also vor dem
Dauer-Block im Startspiel-Skript zu Looks gehen und einen
Switch-Kostümblock einfügen, und ich setze meinen
auf Kostüm eins Kommen wir als Nächstes zum
Check-Treffer-Skript. Und hier, bevor wir überprüfen, ob
wir einen Asteroiden berühren, müssen
wir
zum Hitbox-Kostüm wechseln Dadurch wird eine
Kollision nur dann erkannt wenn ein Asteroid die Form
der Trefferbox berührt , die wir gerade Okay, also lass uns
ein Wechselkostüm zum
Trefferbox-Block einsetzen und es direkt
über dem
Asteroidenblock platzieren , falls es sich berührt Nachdem wir überprüft haben, ob es sich
um eine Kollision
handelt, wollen wir das Kostüm schließlich wieder auf das ursprüngliche Kostüm umstellen Fügen wir also ganz unten
im Drehbuch einen weiteren Block
für das
Switch-Kostüm hinzu. Und wieder wechsle ich
zu Kostüm eins. Okay, wenn wir das Spiel jetzt
starten, muss
ein Asteroid dem
Sprite
des Spielers etwas näher kommen , um ihn tatsächlich
zu zerstören Ein Problem, das
wir haben, ist jedoch, dass das Kostüm
des Spielers auf
dem
Hipbox-Kostüm bleibt dem
Hipbox-Kostüm Das liegt daran, dass all das Zeug
im Explode-Skript passiert bevor wir zum Originalkostüm zurückkehren Um das zu beheben, müssen wir auch
zum Originalkostüm zurückkehren, bevor wir
den Explode-Block hier
ausführen Also lasst uns den
Switch-Kostümblock
hier unten duplizieren und diesen direkt
über dem Explosionsblock platzieren Und jetzt
sollte alles richtig funktionieren. Okay, nachdem wir uns darum gekümmert
haben, werden wir dem Spiel als Nächstes
weitere Partikeleffekte
hinzufügen dem Spiel als Nächstes
weitere Partikeleffekte
hinzufügen indem wir eine Flamme
erzeugen die vom Triebwerk der Sprites
des Spielers ausgeht
47. Die Thruster-Flamme erstellen: Um mit der Erstellung einer
Triebwerksflamme für den Spieler zu beginnen, müssen
wir zunächst ein neues
Sprite erstellen Gehen wir also runter zur Schaltfläche „Sprite auswählen “ und klicken auf „Malen“ Und nennen wir es Flamme. Das Kostüm für den Sprite
wird sehr
einfach sein und
nur aus einem kleinen gelben Kreis Also schnappen wir uns das Kreiswerkzeug. Wählen Sie ein Gelb als Füllfarbe. Und nichts für die Gliederung. Dann zoomen wir ein wenig hinein, halten die Umschalttaste gedrückt und erstellen einen Kreis mit einem Durchmesser von etwa vier
Blöcken. Und stellen wir
sicher, dass wir ihn zentrieren. Und jetzt können wir
in den Code-Tab gehen. Okay? Also, wenn wir dem
Spieler Sprite auf der Bühne zeigen, wollen
wir, dass die Flamme vertikal auf dem Sprite
des Spielers
zentriert ist, aber hier unten in der Nähe des Triebwerks, also
lassen Sie uns im Code für
das Flammen-Sprite ein
Startspiel-Skript beginnen, indem wir zu
Events gehen und einen Gewinn einspielen, den
ich erhalten habe Wir wollen, dass die Flamme
kontinuierlich dem Spieler-Sprite folgt Gehen wir also zu Control und
fügen einen Block für immer ein. Dann gehen wir zur Bewegung über, fügen dem Block für immer einen Block „Gehe zu zufälliger
Position “ hinzu und
stellen ihn so ein, dass er an den Spieler geht. Dadurch wird er jedoch direkt in der Mitte
des Spielers Um ihn ein wenig nach unten zu bewegen, platzieren
wir einen Y-Block unter
dem Block „Gehe zum Spieler“
und versuchen wir, ihn um minus 30 zu ändern. Lass es uns jetzt versuchen. Ich würde sagen, das sieht ziemlich gut aus. Wenn der Spieler
jedoch zerstört wird , geht die Flamme noch
nicht weg. Aber das werden wir gleich beheben. Okay, um den Rest
der Flamme zu erzeugen , verwenden wir Klone. Im Gegensatz zu
den anderen Sprites, die
wir bisher
für Klone verwendet haben, werden
wir jedoch wir bisher
für Klone verwendet haben, auch
das Original-Sprite verwenden, sodass wir es zu
Beginn des Spiels nicht verstecken werden Ordnung, um also mit der Erstellung von
Klonen des Flame-Sprites zu beginnen , gehen
wir zur Steuerung und fügen am Ende
des Forever-Blocks einen Klon von mir selbst hinzu Jetzt fügen wir einen Block hinzu, wenn
ich als Klon anfange. Zuerst werden wir weitermachen und den Klonzähler
erhöhen. Gehen wir also zu Variablen und fügen eine Änderung der
Klonsumme um einen Block hinzu. Als Nächstes erstellen wir
eine Animation für den Klon, in der wir ihn
nach unten bewegen und gleichzeitig seine
Größe reduzieren und seine Farbe ändern, sodass er sich Rot immer mehr annähert. Wie wir sehen werden, erhalten
wir einen cool
aussehenden Feuereffekt, da wir dabei ständig Klone des
Flammengeistes
erstellen Klone des
Flammengeistes Okay,
lassen Sie uns zunächst zur Steuerung gehen und
einen Wiederholungsblock einfügen, und lassen Sie uns das 20 Mal wiederholen Nun, um den
Klon die Bühne nach unten zu bewegen, gehen
wir zur Bewegung über und fügen dem Wiederholungsblock
eine Änderung Y-weise
hinzu. Wir werden die
Bewegung ein wenig randomisieren. Gehen wir also zu den Operatoren und bringen einen
Pick Random Block rein Um nach unten zu gehen, müssen wir Y um eine negative Zahl
ändern. Gehen wir also von etwas wie minus drei bis
minus vier aus und achten
darauf, dass nach
einer der Zahlen
ein Punkt steht, um
auch Dezimalzahlen zu verwenden Okay. Und weil
wir die Größe des
Klons
reduzieren werden, wenn er sich nach unten bewegt, wollen
wir auch, dass die Größe
des Klons beeinflusst wie weit er sich
bei jeder Wiederholung nach unten bewegen kann Je kleiner er wird, desto kürzer ist die Entfernung, über
die er sich bewegen Andernfalls entstehen
immer größere Lücken zwischen den Klonen. Um also den
Betrag der Änderung Y basierend auf der Klongröße zu reduzieren, bringen
wir zunächst einen
Multiplikationsblock in einen leeren Bereich Für die erste Eingabe fügen wir einen Divisionsblock ein und verwenden hier den Pick
Random Block als zweiten Eingang
des Multiplikationsblocks Für den Divisionsblock teilen
wir nun die Größe
des Sprites durch 100 Gehen wir also zu Looks und verwenden einen Größenblock als erste Eingabe Und lass es uns durch 100 teilen. Jetzt können wir all das
in den Change-Y-Block einfügen. der Klon jetzt kleiner
wird, wird
er sich auch um kleinere Beträge
nach unten bewegen. Als Nächstes werden wir dafür sorgen, dass sich
die Farbe des Klons immer
mehr an Rot annähert. Fügen wir dazu Wiederholungsblock
einen
Block mit dem Effekt „Farbe ändern“ hinzu. Und um zu Rot zu wechseln, müssen
wir
den Farbeffekt reduzieren. Gehen wir also zu etwas
Niedrigem wie minus Zwei. Schließlich werden wir
die Größe ein wenig reduzieren. Lassen Sie uns also eine
Änderung der Größe für Block vornehmen. Und es um minus
fünf zu ändern, sollte funktionieren. In Ordnung. Und nachdem das alles erledigt ist, löschen
wir den Klon. Gehen wir also zuerst zu Variablen, setzen einen
Change-Clone-Gesamtblock hinter den Wiederholungsblock und
ändern ihn durch einen negativen Wert. Dann gehen wir zu Control
und fügen einen Block zum Löschen
dieses Klones hinzu. Okay, nur um
dir zu zeigen, wie das alles funktioniert, füge ich einen
Gewichtsblock hinzu und füge ihn nach
dem Block Create Clone in das Skript W I receive
Start Game ein. Eine Wartezeit von einer halben
Sekunde sollte
lang genug sein , um
jeweils nur einen Klon anzuzeigen. Wenn ich das Spiel jetzt starte, können
wir sehen, wie sich ein Flammenklon die Bühne
hinunterbewegt, immer kleiner wird
und sich Rot nähert. Wenn ich die Wartezeit verkürze, können
wir mehr Klone gleichzeitig sehen Und wenn ich den Gewichtsblock komplett
entferne, erscheinen
die Klone so nah
beieinander , dass es einer Flamme
ähnelt Es gibt jedoch ein paar Verbesserungen
, die wir vornehmen können. Erstens
hören die Klone auf, an
Größe zu verlieren, sobald sie einen bestimmten
Punkt in der Nähe des Bodens erreichen Wenn wir das Sprite
des Spielers an
den unteren Rand der Stufe bewegen, werden
die Klone außerdem Sprite
des Spielers an
den unteren Rand der Stufe bewegen, nach oben gedrückt und
bleiben
am unteren Rand der Beide Probleme
können tatsächlich durch eine geringfügige Änderung
am Kostüm des Sprites
gelöst werden durch eine geringfügige Änderung
am Kostüm des Sprites
gelöst Okay, also lasst uns das Spiel beenden und zum Tab Kostüme gehen Wie wir bereits wissen,
beeinflusst die Größe des Kostüms
eines Sprites sowohl, wie weit der Sprite von
einem Bühnenrand weggehen kann , als auch, wie klein
wir den Sprite machen können Wir hatten ein ähnliches Problem
mit dem Asteroiden-Sprite, das wir gelöst haben, indem wir
ein großes Kostüm kreiert haben, zu
dem wir
gewechselt sind, bevor wir den Sprite wir gelöst haben, indem wir
ein großes Kostüm kreiert haben, zu
dem wir gewechselt sind, bevor wir gewechselt Wir könnten dasselbe
für den Flammengeist tun, aber da der Sprite
nur ein einziges Kostüm hat, wäre es einfacher, das aktuelle Kostüm zu vergrößern Und dazu müssen wir nicht einmal den
Kreis berühren. Stattdessen können wir
ein großes unsichtbares Rechteck
um den Kreis herum erstellen . Nehmen wir also das
Rechteckwerkzeug wählen
sowohl für die Feldfarbe als auch für die Umrissfarbe nichts und
wählen
sowohl für die Feldfarbe als auch für die Umrissfarbe nichts aus. Dann lassen Sie uns die Leinwand
verkleinern. Und lassen Sie uns ein
transparentes Rechteck
über den gesamten
Bühnenbereich der Leinwand erstellen . Ordnung, lassen Sie
uns das Rechteck abwählen ,
damit wir es nicht
versehentlich verschieben Und wenn wir das Spiel jetzt starten, sieht
die Flamme besser aus und sie wird auch nicht am
unteren Rand der Bühne
hochgeschoben Es sieht aber immer noch ein
bisschen zu glatt aus. Eine letzte Möglichkeit
, es zu verbessern besteht darin, die Klone
ein wenig von einer Seite zur anderen zu bewegen Gehen wir dazu
zurück zum Code-Tab
und zum Wiederholungsblock, in dem ich als
Klon anfange Gehen wir zur Bewegung über und bringen
die Änderung X für Block ein. Und wir werden es mit
kleinen zufälligen Beträgen ändern. Gehen wir also zu den Operatoren und bringen einen
Pick Random Block rein. Etwas wie
minus 0,2 bis 0,2 sollte funktionieren. Lass es
uns versuchen. Da haben wir's. Da
sieht es viel besser aus. Jetzt müssen wir es nur noch so machen, dass die Flamme erlischt
, wenn der Spieler stirbt. Dazu senden
wir, wenn der Spieler von einem Asteroiden getroffen
wird, eine Nachricht, die der
Flammengeist erhält Gehen wir also zuerst in
den Sprite-Code des Players
und definieren, ob Hit nach der
Einstellung tot auf wahr ist. Gehen
wir zu Events und fügen einen
Broadcast-Block ein Und lass uns
eine neue Nachricht senden, die wir
Player Dide nennen können. Okay,
jetzt, zurück im Flame-Sprite,
lass uns reinkommen, wenn ich Player died Block
erhalte Die Nachricht wird von allen Klonen
sowie vom Flammensprite selbst
empfangen sowie Denn der Flammengeist
muss ihn verstecken. Also lass uns zu Looks gehen und einen Versteckblock
reinbringen. Das bedeutet auch, dass wir das Sprite
am Anfang wieder
zeigen müssen das Sprite
am Anfang wieder
zeigen Fügen wir also oben im Skript „Spiel
starten“ einen Show-Block oben im Skript „Spiel
starten Wir wollen auch
die anderen Skripte im
Sprite stoppen , damit der Forever-Block
im Startspiel-Skript nicht weiter läuft
und Klone erstellt Gehen wir also zu Control,
fügen einen Stopp-Block zu dem
Zeitpunkt hinzu, an dem ich
Player-Dide erhalten habe , und stellen wir ihn so ein, dass
andere Skripte in Sprite gestoppt Okay. Und wenn ein Klon
die Nachricht erhält, dass der Spieler gestorben ist, wollen
wir ihn löschen. Lassen Sie uns also
diesen Klonblock löschen. Das ursprüngliche Flame-Sprite
ignoriert den Block einfach. Wir wollen aber auch den Klonzähler
verringern. Bevor wir also den Klon löschen, gehen
wir zu Variablen, fügen einen
Change-Clone-Gesamtblock hinzu und ändern
ihn um einen negativen Wert. Das Problem dabei
ist jedoch, dass das Flame-Sprite selbst
den Klonzähler ebenfalls um eins senkt, obwohl es sich nicht um einen Klon Der Klonzähler wird also nicht
mehr korrekt sein. Um dies zu verhindern,
müssen wir zuerst überprüfen, ob das aktuelle Sprite tatsächlich
ein Klon ist , bevor wir
den Klonzähler verringern Leider
bietet
Scratch keine einfache Methode, um zu überprüfen,
ob es sich bei einem Sprite um einen Klon handelt, aber wir können dies
mithilfe einer lokalen Variablen tun Lassen Sie uns also einen erstellen. Wir können es „Ich klone“ nennen und es nur
für dieses Sprite machen Und lass uns die Variable verstecken. Standardmäßig
setzen wir I clone auf Foss, und wir müssen das nur einmal
tun,
nicht jedes Mal, wenn wir ein neues Spiel
starten. Anstatt es also im Startskript des Spiels zu tun, gehen
wir zu
den Events und fügen einen Block hinzu, auf den mit der grünen Flagge
geklickt wurde Gehen wir nun zurück zu den Variablen, fügen dem Skript mit
der grünen Flagge einen Block mit zwei und setzen wir I clone auf Foss Als Nächstes, und wenn ich als Klon
anfange, setzen wir
vor dem Wiederholungsblock einen weiteren Satz auf Block, und dieses Mal
wird Clone auf true gesetzt. Wenn ich zum Schluss die
Spielernummer erhalte, gehen
wir zu Control, nehmen einen Block, den ich dünn finde,
und wickeln ihn
sowohl um den Block „Clone
insgesamt ändern “ als auch um den Block „Diesen Clone
löschen Für die Bedingung gehen wir zu den Operatoren und fügen einen
Gleichheitsblock hinzu. Gehen wir dann zurück zu den Variablen
und überprüfen wir, ob
Clone gleich true ist Jetzt verringern wir also nur noch den Klonzähler und löschen
den Klon wenn es sich bei dem Sprite tatsächlich um einen Klon
handelt In Ordnung, jetzt lass uns das Spiel starten. Und dieses Mal, wenn uns
ein Asteroid trifft, erlischt
die Flamme Und sie kommt zurück,
wenn wir noch einmal anfangen. Ich habe jedoch gerade festgestellt, dass unser Klonzähler
immer noch nicht ganz genau ist, weil wir die Laserklone derzeit nicht zählen Wenn wir schon dabei sind,
lassen Sie uns weitermachen und das beheben Gehen wir dazu in
den Laser-Sprite-Code und setzen wir eine Änderung der
Klonsumme
um einen Block an den Anfang eines Skripts, wenn
ich als Klon anfange Und wir wollen es vor
jedem Block zum Löschen
dieses Klones
verringern jedem Block zum Löschen
dieses Klones Lassen Sie uns einen weiteren Block mit der Änderung des
Klongesamtblocks in
einen leeren Bereich bringen Block mit der Änderung des
Klongesamtblocks in
einen leeren Bereich und ihn
um einen negativen Wert ändern. Jetzt können wir
den Block duplizieren und ihn hier vor dem Block „
Diesen Klonblock löschen“ platzieren, dann den anderen Block vor
dem Block „Diesen
Klonblock löschen“ hier unten platzieren. Und jetzt
sollte der Klonzähler absolut genau sein. Jetzt, wo der Spieler
ziemlich gut aussieht, werden
wir als Nächstes daran arbeiten,
seine
Überlebenschancen oder ein bisschen zu erhöhen . Dafür werden wir der Bühne einige
Pickups hinzufügen, die ihnen helfen werden
, die Asteroiden
leichter zu zerstören
48. Zeichne die Pickup-Kostüme: Um einige Pickups zu erstellen
, die der Spieler verwenden kann, müssen
wir zunächst ein
weiteres Sprite erstellen Wählen wir also ein Sprite aus, klicken auf Paint und nennen
wir es Pickup Ordnung, wir werden also drei verschiedene
Pickups erstellen Eine davon wird ein Laser-Power-up sein, dem der Spieler vorübergehend Laser in drei
verschiedene
Richtungen abfeuern Eine andere wird eine Bombe sein, die alle Asteroiden
innerhalb einer bestimmten Entfernung zerstört innerhalb einer bestimmten Entfernung Und zu guter Letzt werden
wir einen Schild aufsammeln
, der den Spieler vorübergehend unbesiegbar macht und ihn
Asteroiden zerstören lässt, indem er sie einfach berührt Okay, das bedeutet also, dass wir
drei verschiedene Kostüme benötigen. Für den ersten nennen
wir ihn Laser. Jedes Kostüm wird aus
einem leuchtend weißen Ring bestehen einem leuchtend weißen Ring etwas
umgibt, das auf den Pickup-Typ hinweist Fangen wir also mit der
Erstellung des Rings an. Nehmen wir zunächst
das Kreiswerkzeug, schalten die Füllfarbe und geben wir ihm einen dicken
weißen Umriss. Eine Breite von neun oder
zehn sollte gut sein. Lassen Sie uns jetzt ein bisschen heranzoomen. Halten Sie die Umschalttaste gedrückt und zeichnen Sie einen Ring mit einem Durchmesser von etwa 12
Blöcken. Und stellen wir sicher, dass
es zentriert ist. Ordnung. Und damit wir dabei alles besser
sehen können,
nehmen wir das Rechteckwerkzeug, geben ihm eine schwarze Füllung schalten den Umriss aus. Und zeichne ein großes Rechteck
über die Leinwand. Und lass es uns
unter den Ring schicken. Als Nächstes fügen wir dem Ring einen
Leuchteffekt hinzu. Dazu
greifen wir zunächst zum Auswahlwerkzeug, halten
dann die Alt- oder
Wahltaste gedrückt und klicken auf den
Ring, um ihn zu duplizieren. In diesem Fall
schalten wir die Gliederung aus. Und für die Füllfarbe geben
wir ihr einen radialen Farbverlauf. Wir wollen in
der Mitte weiß beginnen und dann immer transparenter
werden. Also können wir zuerst auf diese
Schaltfläche klicken, um die Farben zu vertauschen und Weiß in die Mitte zu
setzen. Wählen wir nun die zweite
Farbe und schalten sie aus. Okay, jetzt lassen Sie uns
Alt oder die Wahltaste gedrückt halten und
den Kreis ein wenig vergrößern , bis wir
einen schönen Heiligenschein an der
Außenseite des Rings haben einen schönen Heiligenschein an der
Außenseite des Jetzt müssen wir nur noch den Teil
des Kreises ausschneiden , der sich innerhalb des Rings befindet Um dies zu tun, nehmen
wir, während der
Kreis noch ausgewählt ist, das Radiergummi und machen die Breite
ziemlich groß, etwa 90. Und jetzt können wir auf
die Mitte des Kreises klicken. Und damit ist unser
leuchtender Ring fertig, sodass wir
das schwarze Rechteck loswerden können Und weil wir denselben Ring für
die
anderen beiden Kostüme verwenden werden , wir weiter und duplizieren
das Kostüm zweimal Wir können den zweiten
Schild und den dritten Bombe nennen. Okay? Zurück im Laserkostüm der Mitte des Rings fügen
wir drei Laser hinzu, die
in verschiedene Richtungen zeigen. Und wir können
dieselbe Laserform verwenden , die wir für
das Laser-Sprite verwenden Gehen wir also zu den Kostümen
für den Laser-Sprite. Wir können die
Form auswählen und kopieren. Gehen Sie dann zurück zum
Pickup-Sprites-Laserkostüm und fügen Sie es ein Lassen Sie uns die Form drehen, sodass sie nach
oben und unten zeigt. Wenn wir
beim Drehen die Umschalttaste gedrückt halten, können
wir sie in Schritten von 45
Grad drehen Und lassen Sie uns
es auch etwas verkleinern, während Alt- oder Wahltaste
gedrückt halten
, damit es Ich werde
es auch leicht zum Abendessen machen. Okay? Halten wir nun die Alt- oder Wahltaste erneut
gedrückt und ziehen die Form nach rechts, um hier ein
Duplikat zu erstellen. Dann drehen wir es um etwa
15 Grad im Uhrzeigersinn. Halten wir nun die
Alter-Option
noch einmal gedrückt und klicken Sie auf diese, um sie
zu duplizieren Dann drehen wir es horizontal und bewegen es nach
links, während wir die Umschalttaste gedrückt halten. Und das ist für
den Laser-Tonabnehmer vorbereitet. Lext wird an dem
Schildkostüm arbeiten. Nehmen wir dazu
das Rechteckwerkzeug wählen ein durchgehendes Rot
für die Füllfarbe ein Gold für die Konturfarbe Stellen Sie die Breite auf
etwa vier und lassen Sie uns ein
Quadrat innerhalb des Rings erstellen. Und lassen Sie uns weitermachen
und es zentrieren. Okay? Lassen Sie uns nun
das Umformen-Werkzeug verwenden und es so umformen, dass es
eher wie ein Schild aussieht Ich füge einen Knoten in der
Mitte der oberen Kante hinzu, mache ihn spitz und
verschiebe ihn ein wenig nach oben Dann füge ich hier einen Knoten zwischen den beiden Knoten hinzu und
ziehe ihn etwas nach unten, und ich mache dasselbe
auf der anderen Seite. Als Nächstes füge ich in der
Mitte der unteren Kante einen Knoten hinzu, mache ihn spitz
und ziehe ihn nach unten. Dann bewege ich diesen ein wenig nach oben und nach innen und
diesen auch Und ich füge noch ein paar Knoten damit ich die Kanten etwas krümmen kann Okay, jetzt setze
ich mit
dem Kreiswerkzeug die Füllfarbe auf
die Goldfarbe des Schildes,
deaktiviere den Umriss und erstelle einen kleinen Kreis auf
dem Schild und zentriere ihn. Okay, jetzt müssen
wir nur noch das Bombenkostüm kreieren. Es wird dem Kostüm ähneln, das wir für
den Kumpel
Sprite und Smasks Maulwürfe
kreiert haben für
den Kumpel
Sprite und Smasks Maulwürfe
kreiert Um mit der Verwendung des Kreiswerkzeugs zu beginnen, wählen
wir ein Gelb
für die Füllfarbe ein Orange für die Eine Breite von vier für den Umriss, und lassen Sie uns einen Kreis
innerhalb des Rings zeichnen. Mit dem Werkzeug zum Umformen können
wir nun drei
Knoten nahe beieinander platzieren, den mittleren
herausziehen und den Vorgang wiederholen In Ordnung, jetzt möchte ich
alle Knoten spitz machen. Um das ganz einfach zu machen, kann
ich die Form herausziehen, alle Knoten
auswählen und auf die Schaltfläche mit der Spitze klicken. Jetzt lege ich es wieder
in die Mitte
des Rings und passe
die Knoten ein wenig Okay, wir sind fertig mit
den Pickup-Sprite-Kostümen. Jetzt können wir
zum Code-Tab gehen und in
der nächsten Lektion werden
wir alles zum Laufen bringen
49. Die Pickups spawnen: Bei der Abholung zeigen
Sprites nur Klone des Sprites auf
der Bühne an Gehen wir also zunächst zu den
Ereignissen und fügen einen Block hinzu, wenn ich erhalte, setzen ihn auf „Wenn ich Und lasst uns die
Sprites verstecken, indem wir nach
Los gehen und einen Versteckblock
reinbringen Als Nächstes entscheiden
wir kontinuierlich
während des Spiels nach dem Zufallsprinzip, ob wir für jeden
der drei verschiedenen Typen einen Pickup
erstellen oder nicht für jeden
der drei verschiedenen Typen einen Pickup
erstellen Gehen wir also zunächst zur Steuerung über und fügen einen
Block für immer ein. dann innerhalb des Forever-Blocks Lassen Sie uns dann innerhalb des Forever-Blocks drei separate
IN-Blöcke für jeden der
drei Tonabnehmertypen einfügen. Und für jede Bedingung gehen
wir zu den Operatoren und fügen
einige Equals-Blöcke hinzu Dann fügen wir jedem Block einen
zufälligen Auswahlblock hinzu. Wir werden alle
Zufallszahlen
etwas später anpassen , damit
die Pickups nicht zu oft erstellt
werden, und wir werden auch unterschiedliche
Werte für jeden Typ verwenden Aber zu Testzwecken nehmen wir einfach die Zahlen
1—100 für alle Außerdem ist es nicht wirklich wichtig, welche Zahl wir als
zweite Eingabe
der Equals-Blöcke verwenden ,
solange sie irgendwo
zwischen den beiden Werten liegt, aber ich setze einfach
alle meine auf eins Ordnung. Nun, um die Tonabnehmer tatsächlich zu
erstellen, da wir
im Grunde für jeden den gleichen
Code verwenden werden , fügen wir den Code
in einen benutzerdefinierten Block ein Gehen wir also zu Mblocks
und erstellen einen neuen. Geben wir zuerst create ein und fügen
dann eine Text- oder
Zahleneingabe namens type Und zum Schluss
fügen wir noch die Bezeichnung Pickup hinzu. Klicken Sie dann auf Okay. Wir können den definierten
Kistenaufnahmblock hier nach unten verschieben und der Ein-Blöcke einen Kisten-Pickup-Block
einfügen jeden der Ein-Blöcke einen Kisten-Pickup-Block
einfügen. Für den ersten
erstellen wir einen Laser-Tonabnehmer. Für den zweiten
erstellen wir einen Shield-Pickup. Und schließlich werden
wir einen Bombenabscheider einrichten. Und wir wollen sicherstellen, dass
die Wörter, die wir in
diesen Blöcken verwenden , mit den Namen
der Pickup-Sprites-Kostüme übereinstimmen der Pickup-Sprites-Kostüme Okay, jetzt bewegen
wir das
Sprite im
Create-Pickup-Skript zuerst ganz nach oben
auf der Bühne und stellen
es nach dem Zufallsprinzip Lassen Sie uns also zunächst zur
Bewegung übergehen und
einen Go-to-XY-Block einfügen Bei der Y-Position wollen
wir nicht ganz oben
auf der Bühne beginnen
, also bei Position 180. Etwas wie 175 sollte funktionieren. Für die Position gehen wir zu den Operatoren und fügen
einen Auswahl-Block hinzu. Auch hier wollen wir
den Tonabnehmer nicht direkt an den
Rändern platzieren . Nehmen wir also etwas
zwischen minus 22220. Als Nächstes wollen wir
das Sprites-Kostüm auf den
Wert des Typs input setzen das Sprites-Kostüm auf den
Wert des Typs Gehen wir also zu Looks, fügen einen Switch-Kostümblock hinzu und verwenden einen
Typblock als Eingabe Schließlich erstellen wir
einen Klon des Sprites. Gehen wir also zu Control und fügen Block
zum Erstellen eines
Klons von mir selbst Okay, jetzt müssen wir
den Klonen sagen, wie sie sich verhalten sollen. Lassen Sie uns also einen einbauen, wenn
ich als Klonblock anfange. Zuerst wollen wir den Klon
zeigen. Gehen wir also zu Looks und
bringen einen Show-Block rein. Wir möchten auch, dass der Klon über allem anderen
erscheint. Lassen Sie uns also einen Block mit dem Titel „Go
to Front Later“ einbauen. Und natürlich wollen wir den Klonzähler
erhöhen. Gehen wir also zu Variablen und fügen eine Änderung der
Klonsumme um einen Block hinzu. Und vorerst bewegen wir
den Tonabnehmer einfach die Bühne runter. Um das zu tun, gehen wir zur Steuerung und fügen einen
Block für immer ein. Dann gehen wir zur Bewegung über und
bringen eine Änderung Y für Block ein. Und lassen Sie uns das um
minus fünf oder so ändern. Lass es uns jetzt versuchen. Okay, wir haben unsere drei
Pickup-Typen, die zufällig oben auf
der Bühne erscheinen und sich
dann nach unten bewegen Jetzt müssen wir nur noch
die Klone löschen, wenn sie entweder das Ende der
Stufe erreichen oder den Spieler berühren Fangen wir damit an, den Spieler
zu berühren. Gehen wir dazu zu Control und bringen einen ITN-Block
in einen leeren Bereich Nun zur Bedingung:
Wir wollen überprüfen, ob der Klon
das Sprite des Spielers berührt Wir wollen aber auch
sicherstellen, dass der Spieler derzeit
nicht tot ist Andernfalls kann der Spieler
die Pickups einsammeln , auch wenn sie explodieren, was seltsam
wäre Okay, also um nach diesen
beiden Bedingungen zu suchen, gehen
wir zuerst zu den Betreibern
und bringen einen AND-Block Als Nächstes können wir zur Erkennung übergehen und einen Berührungsblock
als eine der Bedingungen verwenden. Und wir wollen überprüfen,
ob das Berühren des Spielers aufgrund der anderen Bedingung, wir wollen überprüfen, ob
die Variable Sprites ist tot auf False gesetzt
ist Gehen wir dazu zunächst zu Operatoren und fügen dort einen
Equals-Block ein Wenn wir nun zur Sensorik zurückkehren, können
wir einen dieser Blöcke hinzufügen,
der
aktuell die Hintergrundnummer der Stufe angibt. Wenn wir die Stufe zu „Spieler“ wechseln, können
wir jetzt die Variable „
Spieler ist tot“ wählen. Und lassen Sie uns überprüfen, ob
sie gleich falsch ist. Ordnung. Vorerst löschen
wir einfach den Klon. Gehen wir zuerst zu Variablen,
fügen einen
Change-Clon-Gesamtblock hinzu und ändern
ihn durch einen negativen Wert. Dann gehen wir zur Steuerung und fügen
diesen Klonblock zum Löschen ein. Um nun zu überprüfen, ob der Klon das
Ende der Stufe erreicht
hat, werden
wir fast dasselbe tun. Lassen Sie uns also zuerst
den ITN-Block duplizieren und diesen
am Ende des anderen platzieren, und wir können
den gesamten UND-Block loswerden den Zustand dieses Blocks herauszufinden, wenden wir uns an die Operatoren und
geben einen Block kleiner als Gehen wir dann zur Bewegung über und verwenden einen Y-Positionsblock
als erste Eingabe. Und wir werden prüfen, ob die
Y-Position kleiner
als eine Zahl am unteren Rand
der Bühne ist . Etwas wie minus
175 sollte gut sein. Jetzt können wir uns beide IN-Blöcke schnappen und
sie
in den Forever-Block legen,
bevor wir sie
in den Forever-Block die Y-Position ändern. Okay? Und wenn wir das Spiel jetzt
starten, sollten
die Pickups
verschwinden, entweder wenn sie den Boden erreichen
oder den Spieler berühren. In den nächsten Lektionen werden
wir dafür sorgen, dass einige Dinge tatsächlich passieren, wenn der Spieler einen Pickup
einsammelt. Aber vorerst können wir dafür sorgen, dass die
Tonabnehmer etwas besser aussehen indem wir ihnen eine
pulsierende Animation
geben wenn sie die Bühne hinuntergehen Wir werden das separat machen wenn ich als Klonskript anfange Gehen wir also zu Control und fügen ein weiteres hinzu, wenn ich
als Klonblock anfange. Und weil die Animation kontinuierlich ablaufen
wird, fügen wir einen Block für immer hinzu. Ordnung, also zuerst,
nach ein paar Wiederholungen, werden
wir die
Klongröße etwas verkleinern Dann werden
wir bei der gleichen
Anzahl von Wiederholungen seine Größe wieder erhöhen Lassen Sie uns also weitermachen und
dem Block für immer
zwei Wiederholungsblöcke hinzufügen , und wir wiederholen dies jeweils
fünfmal Als Nächstes gehen wir zu Looks und fügen jedem Wiederholungsblock einen Block der Größe zwei festgelegte Blöcke
hinzu. Und wir wollen eine kurze Verzögerung
zwischen jeder Wiederholung
haben zwischen jeder Wiederholung Gehen wir also zurück
zur Steuerung und fügen am Ende
jedes Wiederholungsblocks
einen Gewichtsblock hinzu, und wir machen jede
Verzögerung so
kurz wie 0,05 Sekunden Lassen Sie uns auch
wieder einen Gewichtsblock
nach dem zweiten Wiederholungsblock platzieren und 0,05 Sekunden warten Dadurch wird eine kurze
Pause hinzugefügt, nachdem der Klon wieder
seine normale Größe erreicht bevor er wieder schrumpft Für den ersten Wiederholungsblock werden
wir also die Größe
der Klone um einen kleinen Betrag verkleinern Wir könnten das tun, indem wir jedes Mal einfach eine kleine Zahl
von der Größe
subtrahieren, aber damit es glatter aussieht, teilen
wir stattdessen die Gehen wir also zu Operatoren und fügen wir dem ersten Block mit der eingestellten Größe einen Divisionsblock hinzu Für den zweiten Wiederholungsblock machen
wir das Gegenteil, machen
wir das Gegenteil indem wir die Größe mit
derselben kleinen Zahl
multiplizieren Fügen wir also dem zweiten Block mit festgelegter Größe einen
Multiplikationsblock zweiten Block mit festgelegter Größe Okay, jetzt für die erste
Eingabe jedes einzelnen, gehen
wir zu Looks und fügen
einen Größenblock ein Für die zweiten Eingaben wollen
wir dieselbe Zahl verwenden. Sie muss größer als eins sein, aber ansonsten ziemlich klein. Versuchen wir es mit 1.05. Wenn wir das Spiel jetzt starten, haben
die Tonabnehmer einen
schönen pulsierenden Effekt Ordnung, jetzt
werden wir daran arbeiten die Tonabnehmer tatsächlich
etwas tun , wenn der
Spieler sie berührt, und wir werden in der nächsten Lektion damit beginnen, dass
der Laser aktiviert in
50. Das Laser-Powerup erstellen: Wenn der Spieler einen Pickup
einsammelt, aktivieren
wir diesen
speziellen Pickup-Typ, aber das wollen wir nur vorübergehend
tun Das bedeutet, dass wir verfolgen
müssen wie lange eine bestimmte
Abholung schon aktiv war, was wir mithilfe
globaler Variablen tun können. Ordnung. Vorerst arbeiten wir
nur an der Laserleistung. Gehen wir also zu Variablen und
erstellen eine neue dafür. Wir können es
Laserstartzeit nennen. Und wir wollen, dass
es für alle Sprites gilt, da sowohl das Pickup-Sprite das Laser-Sprite Zugriff darauf
benötigen In der ersten Phase starte ich mit einem Klon-Skript
des Pickup-Sprites,
nachdem ich erkannt habe, dass
der Klon den Spieler berührt, und bevor ich
den Klon lösche, prüfen
wir, ob es sich bei dem Klon um einen Laser-Pickup
handelt Ist dies der Fall, legen wir den Wert der Variablen für die
Einschaltdauer des Lasers Ordnung, um
den Tonabnehmertyp zu überprüfen, gehen
wir zunächst
zur Steuerung und bringen einen dünnen Block
in eine leere Stelle. Für die Bedingung gehen wir zu den Operatoren und fügen einen
Gleichheitsblock hinzu Für die Überprüfung der Art der Abholung können
wir den Namen des
Klonkostüms verwenden Gehen wir also zu Looks. Verwenden Sie einen Kostümblock als ersten Eingang
des Equals-Blocks Und lassen Sie uns überprüfen, ob der
Kostümname mit Laser übereinstimmt. Wenn ja, stellen wir die Betriebszeit des
Lasers variabel ein. Gehen wir also zu Variablen und fügen
einen Satz zum Blockieren hinzu. Und lassen Sie uns die Betriebszeit des Lasers
einstellen. Vorerst können
wir Frames verwenden. Scratch läuft mit etwa 30 Bildern
pro Sekunde, mehr oder weniger. Das bedeutet, dass
Scratch den
Bildschirm jede Sekunde etwa 30 Mal aktualisiert Wenn wir also die Laserleistung beispielsweise für 10 Sekunden aktiv
machen wollen , können
wir die Variable auf
zehn mal 30 setzen, was 300 ist Okay, jetzt können wir uns
den ITN-Block schnappen und ihn ganz oben auf den Plattenblock
legen, an
dem ich mich berührte. Und jetzt gehen wir zum
Laser-Sprite-Code. Im Startskript des Spiels wollen
wir hier kontinuierlich überprüfen, ob Laserleistungszeit einen
Wert größer als Null hat, und wenn ja,
reduzieren wir den Wert um eins Um jedoch sicherzustellen, dass die Laserleistung
nicht von Anfang an aktiv ist, fügen
wir dem Startskript des Spiels einen Satz von zwei Blöcken hinzu
und setzen die
Laserbetriebszeit auf Null. Alles klar, gehen wir zur Steuerung und fügen einen
Block für immer ein. Dann fügen wir einen
I-Thin-Block hinzu. Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block größer als ein. Gehen wir dann zu den Variablen
und überprüfen wir, ob die
Betriebszeit des Lasers größer als Null ist. Ordnung. Nun,
im Block „Ich dann“, lassen Sie uns eine Änderung für Block vornehmen
und die Betriebszeit des Lasers
um einen negativen Wert ändern. Dadurch wird nur sichergestellt, dass der Laser nur so lange aktiv
bleibt, bis die Zeit abgelaufen ist, bis die Zeit abgelaufen ist, um
den Laser tatsächlich zu nutzen und
den Spieler in drei
verschiedene Richtungen schießen zu lassen . Das machen
wir in der ersten, abgelaufen ist, bis die Zeit abgelaufen ist, um
den Laser tatsächlich zu nutzen und
den Spieler in drei
verschiedene Richtungen schießen zu lassen. Das machen
wir in der ersten, wenn
ich als Klon-Skript starte. Hier überprüfen wir vor der Wiederholung,
bis
wir den Kantenblock berühren , erneut,
ob die Einschaltdauer
des
Lasers größer als Null ist. Ist dies der Fall, erstellen wir
zwei zusätzliche
Laserklone, von denen einer 15 Grad nach links und einer 15
Grad nach rechts zeigt. Also zuerst können wir die Betriebszeit
des Lasers duplizieren, Betriebszeit
des Lasers hier
blockweise größer als Null ist, und lassen Sie uns sie
vorerst in einen leeren Raum legen und wir können die Änderung blockweise
loswerden. Als Nächstes drehen
wir innerhalb des Wenn-Dann-Blocks zuerst den aktuellen
Klon um 15 Grad gegen den Uhrzeigersinn 15 Grad erstellen
dann einen Klon davon Gehen wir also zur
Bewegung über und führen
eine Drehung gegen den Uhrzeigersinn um 15 Grad
durch Gehen wir dann zur Kontrolle über und bringen einen kritischen Klon
von mir Als Nächstes richten wir die Fläche des Klones um 15 Grad nach rechts aus und
erstellen einen weiteren Klon Gehen wir dazu zurück zur Bewegung und fügen einen Block im
Uhrzeigersinn ein Um 15 Grad machen wir
es wieder mit der Vorderseite nach oben. Also müssen wir es
um insgesamt 30 Grad drehen. Jetzt wollen wir wieder die Kontrolle übernehmen und einen weiteren kritischen
Klon von mir selbst einbauen. Schließlich müssen wir
den Originalklon wieder mit der
Vorderseite nach oben zeigen. Dazu können wir ihn
entweder wieder um
15 Grad gegen den
Uhrzeigersinn drehen , oder wir können zur Bewegung übergehen, einen Punkt
- und Richtungsblock einfügen und ihn in
Richtung Null zeigen lassen, also Okay, lassen Sie uns das alles in den ersten
Teil einbauen, wenn ich
als Klon-Skript direkt über
dem Block repeat-until starte als Klon-Skript direkt über
dem Block repeat-until Und lass es uns versuchen. Im Moment gehen die Laser
nur direkt nach oben. Aber wenn wir
einen Laser-Tonabnehmer einsammeln, scheint
nichts zu passieren. Wenn wir uns jedoch den Klonzähler
ansehen, treffen
wir
jedes Mal, wenn wir schießen, auf 300 Klone Was hier passiert ist
, dass die beiden neuen Klone, die
wir erstellen, auch das Skript „Wenn
ich starte“ als Klonskript ausführen, wodurch zwei weitere
Klone Die Anzahl der Klone
wächst also exponentiell. Und der Punkt- und
Richtungs-Block hier sorgt dafür, dass alle
Klone direkt nach oben zeigen, erscheinen sodass sie
auf der Bühne meistens einfach
übereinander Um das zu beheben, wollen wir
diese Blöcke nur ausführen , wenn
es sich beim aktuellen Klon einen nach oben gerichteten Klon
handelt Das bedeutet, dass wir die Bedingung für ITN-Blöcke
erweitern und
auch prüfen müssen , ob die Richtung des
Klons Null ist Ordnung, also
gehen wir zu den Operatoren In Ordnung, also
gehen wir zu den Operatoren
und bringen einen UND-Block rein Und nehmen wir als eine der Bedingungen an, dass die Betriebszeit des
Lasers größer
als Nullblock ist. Für die andere Bedingung fügen wir einen Gleichheitsblock ein Gehen wir dann zur Bewegung über
und überprüfen wir, ob
Richtung gleich Null ist Jetzt können wir das und Block
als Bedingung für
den Wenn-Dann-Block verwenden als Bedingung für
den Wenn-Dann-Block verwenden Und wenn wir das Spiel jetzt starten
und den Laser-Pickup einsammeln, kommen drei Laser gleichzeitig in drei verschiedene
Richtungen und der Klonzähler
läuft nicht mehr so verrückt wie früher. Wir können auch sehen, dass die Variable
für die Einschaltdauer des
Lasers jedem Frame um
eins abnimmt. Und wenn wir
keine weiteren Laser-Power-Ups sammeln, der Laser zum Normalzustand zurück,
sobald
der Wert Null erreicht kehrt der Laser zum Normalzustand zurück,
sobald
der Wert Null erreicht. Fantastisch. Eine weitere
Sache, die Sie beachten sollten , ist, dass wir die Klone
löschen wenn sie einen
Rand der Bühne berühren, sie auch gelöscht werden, wenn sie den linken
und rechten Rand berühren Wenn wir wirklich wollten, könnten
wir auch
Siebdruck auf die Laser auftragen,
aber ich denke, das würde
verwirrender aussehen als alles andere, also lasse ich meinen so, wie er ist Okay, jetzt können wir zu Variablen
gehen und die Variable für die
Einschaltzeit des Lasers ausblenden Und in der nächsten Lektion werden
wir am Schild arbeiten
51. Den Schild erstellen: Wenn der Spieler
einen Schild sammelt, machen wir ihn vorübergehend unbesiegbar und
machen ihn
so, dass er
alle Asteroiden zerstören kann , mit denen er in Kontakt
kommt Und genau wie bei
eingeschaltetem Laser erstellen
wir eine globale
Zeitvariable, mit der wir
verfolgen können, wie lange der
Schild aktiv war Lassen Sie uns also zunächst eine neue Variable
erstellen. Wir können es Shield Time nennen
und es für alle Sprites erstellen. Als Nächstes gehen wir zum
Pickup-Sprite-Code. Und wie wir es bei
der Laserabnahme getan
haben, werden wir nach
der Schildaufnahme suchen und die
Schildzeit variabel einstellen Also können wir zuerst den Wert für
den Fall, dass der Name des Kostüms gleich
Laserblock ist, duplizieren und
ihn für den Moment an eine
leere Stelle bringen , und wir können die zusätzlichen Änderungen an der Gesamtsumme
des
Klones loswerden und
die Klonblöcke löschen Lassen Sie uns in diesem Fall überprüfen, ob
Kostümname gleich Schild ist. Und wenn ja, setzen wir die
Shield-Zeitvariable. Ich lasse meins bei 300
Bildern oder etwa 10 Sekunden. Jetzt setzen wir den Block
Ich dann direkt unter dem Ich, der
Name des Kostüms entspricht Laser eins Als Nächstes gehen wir zum
Spieler-Sprite-Code. Im Check-HIT-Skript überprüfen wir, bevor
wir irgendwas von diesen Sachen machen, zuerst, ob die
Shield-Zeitvariable größer als Null ist, und wenn ja,
beenden wir einfach das Skript und führen diese Blöcke
nicht aus Gehen wir also zuerst zur Steuerung und bringen einen IN-Block
in eine leere Stelle. Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block größer als ein. Gehen wir dann zu Variablen
und überprüfen wir, ob die
Shield-Zeit größer als Null ist. Wenn ja, beenden wir
das aktuelle Skript. Gehen wir also zu Control, fügen einen Stopp-Block ein
und beenden dieses Skript. Jetzt können wir den
ITN-Block an die Spitze des
definierten Check-Kits setzen . Okay. Als Nächstes erstellen wir
den eigentlichen Schild. Dafür legen wir einen
pulsierenden, leuchtenden Ring um das Sprite des Spielers, ähnlich wie wir es mit den Pickups
machen Und tatsächlich können wir mit demselben leuchtenden Ring beginnen, den wir für die
Pickup-Sprite-Kostüme verwenden Wählen wir also
das Pickup-Sprite und gehen Und jetzt verwenden
wir das Auswahlwerkzeug, klicken und ziehen
von hier aus und wählen sowohl das Leuchtobjekt als auch den
Ring aus und kopieren sie Lassen Sie uns nun ein neues
Sprite für den Schild erstellen, indem auf die Schaltfläche „Sprite auswählen “
klicken und auf „Malen“ klicken Nennen wir es Für das Kostüm
fügen wir zunächst die Objekte ein, die wir
gerade vom
Pickup-Sprite kopiert Wir wollen aber, dass es
ziemlich groß ist, sodass es das Sprite des Spielers vollständig
umgibt, auch wenn der Ring während der pulsierenden Animation kleiner während Wenn die Objekte ausgewählt sind, wir die Alt- oder
Wahltaste gedrückt und skalieren sie auf etwa das Doppelte der aktuellen Größe.
Das sollte funktionieren. Okay, jetzt gehen wir
in den Code-Tab. Im Gegensatz zu vielen anderen
Sprites im Spiel werden
wir das
eigentliche Shield-Sprite anzeigen, anstatt Klone zu verwenden Und weil es möglich ist
, dass der Spieler das Spiel beendet , solange
der Schild aktiv
ist und das Sprite sichtbar ist, dann klickt er erneut auf die Als Erstes stellen
wir sicher, dass das Sprite ausgeblendet ist, wenn auf
die grüne Flagge geklickt wird Gehen wir also zu den Events und bringen einen Block rein, auf den die windgrüne
Flagge geklickt wurde Dann lass uns zu Looks gehen und einen Versteckblock
reinbringen. Wir wollen den
Sprite auch auf die vordere Ebene bringen. Lassen Sie uns also einen Block mit dem Titel „Go
to Front Layer“ einbauen. Jetzt wollen
wir jedes Mal, wenn das
Spiel tatsächlich startet, sicherstellen, dass
die
Schildzeitvariable auf Null zurückgesetzt wird. Gehen wir also zunächst
zurück zu den Ereignissen, fügen einen
Block ein, wenn ich erhalte und das Spiel starten. Dann gehen wir zu Variablen, fügen dem Skript ein Set zum Blockieren hinzu und setzen
die
Shield-Zeit auf Null. Als Nächstes überprüfen wir
kontinuierlich, ob Schildzeit größer
als Null ist, und wenn ja, zeigen
wir den Schild
und bewegen ihn so lange an
die gleiche Position wie
das Spieler-Sprite, bis
die Schildzeit abgelaufen ist zeigen
wir den Schild
und bewegen ihn so lange an die gleiche Position wie
das Spieler-Sprite, bis
die Schildzeit abgelaufen Gehen wir also zunächst zu Control und fügen einen Block für immer ein Fügen Sie dann einen I-Thin-Block hinzu. Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block größer als ein. Gehen wir dann zu Variablen
und überprüfen wir, ob die
Shield-Zeit größer als Null ist. Wenn ja, zeigen wir es dem Sprite. Also lass uns zu Looks gehen und einen Showblock
reinbringen. Da die
pulsierende Animation außerdem die
Größe des Sprites verändern
wird,
setzen
wir die Größe zurück,
indem wir eine festgelegte
Größe auf wir nun zur Steuerung zurück
und fügen nach dem Block mit der eingestellten Größe eine Wiederholung bis zum Block Wir wollen das so lange wiederholen, bis Schildzeit nicht mehr
größer als Null ist. Dazu können wir zu den
Operatoren gehen und einen Knotenblock
reinbringen Dann können wir
hier
die Schildzeit, die
größer als Null ist, duplizieren und
zum Knotenblock hinzufügen Eine Sache, die wir in
der Wiederholung bis zum Block tun wollen, ist das Schild-Sprite an die gleiche Position wie
das Spieler-Sprite zu
bewegen gleiche Position wie
das Spieler-Sprite Gehen wir also zur Bewegung über, bringen einen Block „Gehe zu einer
zufälligen Position“ hinein und stellen ihn so ein, dass er zum Spieler geht Und natürlich würde die
Schildzeitvariable niemals nicht größer als
Null sein, wenn wir sie nicht verringern. Gehen wir also zu den Variablen, fügen eine blockweise Änderung
zur Wiederholung bis zum
Block hinzu und ändern die Shield-Zeit um minus eins. Und vorerst, nach der
Wiederholung, bis der Block fertig ist, verstecken
wir
das Sprite einfach wieder Gehen wir also zu Looks und fügen direkt nach der Wiederholung bis zum Block
einen Block
zum Ausblenden hinzu. Dabei achten wir
darauf, dass er sich immer noch
im Wenn-Dann-Block Okay, wenn wir das Spiel jetzt starten
und ein Schild einsammeln, erscheint das Schild-Sprite neben
dem Sprite
des Spielers und
wir sind jetzt Und wenn wir keine Schild-Pickups mehr einsammeln
, verschwindet der Schild nach etwa 10 Sekunden nach etwa 10 Sekunden. Jetzt müssen wir nur noch
die pulsierende Animation hinzufügen und dafür sorgen, dass der Schild die Asteroiden
zerstört Für die Animation können
wir im Grunde
den gleichen Code verwenden, den wir
für das Pickup-Sprite verwenden Gehen wir also zum
Pickup-Sprite-Code. Der pulsierende Animationscode ist der gesamte Forever-Block hier in der Sekunde, wenn ich
als Klonskript anfange Also lasst uns den
Forever-Block in den Shield Sprite kopieren. Jetzt, zurück im
Shield-Sprite-Code, müssen
wir
den neuen
Forever-Block in ein separates
Startspiel-Skript einfügen Forever-Block in ein separates
Startspiel-Skript Gehen wir also zu den Ereignissen und fügen einen Block hinzu, wenn
ich erhalte, hängen ihn an den Block für immer an
und setzen ihn auf, wenn ich das Startspiel
erhalte Wir wollen
die Animation jedoch nur machen , wenn der
Schild tatsächlich aktiv ist. Gehen wir also zur Steuerung und wickeln wir einen ITN-Block um alles innerhalb
des Forever-Blocks Für die Bedingung wollen wir
überprüfen, ob die Shield-Zeit größer als Null
ist, damit wir einen der Blöcke aus
den anderen Skripten duplizieren können Blöcke aus
den anderen Skripten Ich werde
hier auch
den letzten Warteblock entfernen , damit es keine Verzögerung zwischen den Animationen zum Vergrößern
und Verkleinern Wenn wir jetzt das Spiel starten und erneut einen Schild
einsammeln,
erscheint eine pulsierende Animation Okay? Jetzt machen wir
es so, dass der Spieler den Schild
benutzen kann, um Asteroiden zu
zerstören Gehen wir dazu in den
Asteroiden-Sprite-Code ein. Und wenn ich mit einem Klon-Skript anfange
, überprüfen
wir gerade, ob der Asteroid einen Laser
berührt,
und wenn ja, lassen wir
den Asteroiden-Trefferblock laufen Wir wollen hier auch überprüfen,
ob der Asteroid
den Schild berührt oder nicht Gehen wir dazu zu Operatoren
und lassen Sie uns einen OR-Block
in ein leeres Feld einfügen Wir können den
berührenden Laserblock
in einen der Oder-Block-Eingänge bewegen ,
dann den Block duplizieren und ihn zu den anderen Eingängen
hinzufügen, sodass er so
eingestellt ist, dass er Shield berührt. Jetzt können wir all das als Bedingung für
den Block I then verwenden. Und wenn wir das Spiel starten
und den Schild aktivieren, können
wir jetzt
die Asteroiden zerstören , indem wir
sie mit unserem Schild berühren Nachdem die Schildzeit abgelaufen ist, verschwindet der Schild
allerdings
etwas zu abrupt Wir sollten den Spieler wahrscheinlich kurz vor dem
Verschwinden
des Schildes warnen,
damit er weiß, dass es an der Zeit ist, die Asteroiden nicht mehr zu durchpflügen Gehen wir dazu zurück zum
Shield-Sprite-Code. Im Block „Bis wiederholen“ können
wir überprüfen, ob die Shield-Zeit bis zu den letzten paar
Sekunden oder so
gesunken ist ,
und wenn ja, können wir damit beginnen, die
Shield-Sprites auszublenden Gehen wir dazu zur Steuerung und fügen am Ende des
Wiederholungsblocks einen dünnen Block hinzu. Gehen
wir für die Bedingung zu Operatoren und fügen wir
einen Block mit weniger als ein. Gehen wir dann zu Variablen und verwenden einen Shield-Time-Block
als erste Eingabe. Wenn die Shield-Zeit unter 50 liegt, noch etwas weniger als
2 Sekunden übrig, und jetzt fangen wir an, die Sprites
auszublenden,
was wir tun können, indem wir zu Looks
gehen dem Block I thin einen Änderungseffekt für
Block
hinzufügen Und wir ändern den
Ghost-Effekt um zwei. Das bedeutet auch, dass wir
den Geistereffekt zurücksetzen müssen , wenn der Schild
das nächste Mal aktiv wird Nehmen wir einen
Block mit
durchsichtigen Grafikeffekten und platzieren ihn über
dem Wiederholungsblock. Lass es uns jetzt versuchen. Sobald wir den Schild aktivieren und der Wert der
Schildzeit auf 50 gesunken ist, beginnt
der Schild zu verblassen , bevor er vollständig verschwindet Ein Problem, das wir haben,
ist jedoch, dass, wenn wir zufällig
einen weiteren Schildaufnehmer einsammeln , während
der Schild verblasst, dieser teilweise verblasst bleibt Der Grund dafür ist, dass, obwohl das Sammeln
eines weiteren Schild-Pickups Schildzeit auf 300
zurücksetzt, weil sie nie auf Null fällt, die Wiederholung, bis der Block
weiterläuft und die Grafikeffekte
nie gelöscht werden Um das Problem zu beheben, können
wir, anstatt
die Grafikeffekte vor
der Wiederholung bis zum Block zu löschen , dies immer dann tun, wenn die
Schildzeit nicht unter 50 liegt. Das bedeutet, dass wir hier
den
Wert I Shield Time
von weniger als 50 Blocks durch einen I Thin LS-Block ersetzen müssen . Gehen wir also zur Steuerung
und bringen wir einen, glaube ich,
LS-Block in einen leeren Raum. Für die Bedingung nehmen wir den Schild, die Zeit beträgt
weniger als 50 Blocks. Dann verschieben wir den Block mit dem
Change-Ghost-Effekt in den I-Teil
des I-Dünn-Blocks, und jetzt können wir
den leeren I-Dünn-Block loswerden Schließlich können wir den Block mit
den transparenten
Grafikeffekten von
hier herausholen Block mit
den transparenten
Grafikeffekten von und ihn in den
Teil des ITN-S-Blocks Dann können wir all das bis zum Ende
des
Wiederholungsblocks hinzufügen bis zum Ende
des
Wiederholungsblocks Wenn wir jetzt das Spiel starten
und den Schild aktivieren und
während der Ausblendung des Schildes
einen weiteren Schild einsammeln , ist er wieder vollständig undurchsichtig Okay, jetzt können wir zu den
Variablen gehen und die
Schildzeitvariable verstecken, und damit sind zwei Tonabnehmer fertig Die letzte, die wir erstellen
müssen, ist die Bombe, und das werden wir in
der nächsten Lektion tun
52. Die Bombe erstellen: Wie bei den anderen Pickups beginnen
wir mit der Arbeit an
der Bombe, beginnen
wir mit der Arbeit an indem wir eine
globale Variable dafür erstellen, die in
den Pickup-Sprite-Code gesetzt wird , wenn der Spieler
eine Bombe einsammelt Bei der Bombe werden
wir jedoch einfach eine kurze Animation
ausführen, die Bombe
klein
starten und wachsen lassen, wodurch alle Asteroiden
zerstört werden, mit denen
sie in Kontakt kommt Aus diesem Grund müssen
wir
im Gegensatz zur Laserleistung
und zum Schild nicht verfolgen, zur Laserleistung
und zum Schild nicht verfolgen wie lange die Bombe aktiv
war. Stattdessen müssen wir nur
verfolgen, ob
die Bombe aktiv ist oder nicht. Beginnen wir also damit, eine neue Variable zu
erstellen. Nennen wir es Bomb Active
und machen es für alle Sprites. Und wir können weitermachen
und die Variable verstecken. Als Nächstes überprüfen wir, ob
der gesammelte
Pickup-Klon das Bombenkostüm verwendet, und wenn ja, setzen wir
bomb active auf true. Also lasst uns hier zuerst den Block „Wenn
Kostümname gleich
Schild“ duplizieren , ihn für den Moment an ein leeres
Feld
stellen
und die Änderung der
Gesamtsumme des Klones entfernen und
diese Klonblöcke löschen Lassen Sie uns nun überprüfen, ob der
Kostümname gleich Bombe ist. Und wenn ja, setzen wir
bomb active auf true. Dann können wir das, was ich dann
blockiere, unter die anderen beiden setzen. Als Nächstes erstellen wir ein
Sprite für die Bombe. Gehen wir also runter zur Schaltfläche „Sprite
auswählen“, klicken auf „Malen“ und nennen wir es Das Kostüm für den
Bombensprite wird einfach ein großer Kreis mit weißen bis durchsichtigen Farbverläufen sein
. Nehmen wir also zunächst
das Kreiswerkzeug und wechseln
wir für die Füllfarbe zur Option
Radio-Farbverlauf Lassen Sie uns die erste
Farbe komplett
weiß machen und
die zweite Farbe ausschalten Und wir wollen nicht, dass der
Kreis einen Umriss hat. nun bei gedrückter Umschalttaste Lassen Sie uns nun bei gedrückter Umschalttaste einen Kreis erstellen
, der etwas
größer ist als der
Bühnenbereich der Leinwand. Und stellen wir
sicher, dass er zentriert ist. Okay, jetzt gehen wir
zum Code-Tab. Da es dem Spieler möglich
ist,
in kurzer Zeit mehrere Bomben-Pickups zu sammeln, verwenden
wir Klone des Bomben-Sprites und verstecken
den Sprite Gehen wir also zuerst zu den
Ereignissen und fügen den Block W, den ich erhalte,
ein und
setzen ihn auf, wenn ich Gehen wir dann zu Looks und fügen dort
einen Block zum Ausblenden ein. Wir wollen auch einen Block, der später nach vorne
geht, einfügen und wir wollen
die aktive Variable bombe mit fos initialisieren die aktive Variable bombe mit fos Gehen wir also zu Variablen, fügen den
Block Set bomb active hinzu und setzen ihn auf fs Eigentlich können wir es
auf alles andere als wahr setzen, aber die Verwendung von False macht es für andere Leute
einfacher, den Code
zu verstehen. Okay, jetzt werden wir kontinuierlich überprüfen, ob
Bombe aktiv wahr ist, und wenn ja,
erstellen wir einen Klon an der aktuellen Position des Spielers
und zünden die Bombe. Fangen wir also damit an, die
Kontrolle zu übernehmen und einen
Block für immer einzubauen. Dann fügen wir einen ITN-Block hinzu. Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Gehen wir dann zu Variablen
und überprüfen wir, ob Bombe
aktiv gleich wahr ist nun innerhalb des Wenn-Dann-Blocks wir nun innerhalb des Wenn-Dann-Blocks zur
Sprites-Position des Spielers, indem
wir zu einer Bewegung übergehen , einen Block mit
zufälliger Position einfügen und ihn auf „Gehe zum Spieler“ setzen Lassen Sie uns dann einen
Klon erstellen, indem wir zur
Steuerung gehen und einen Block zum
Erstellen eines Klons von mir selbst einfügen Und eine weitere Sache, die
wir
hier machen wollen , ist bombe
active wieder auf false zu setzen, sonst
hört das nie auf, Klone zu erstellen Gehen wir also zu Variablen, fügen Block Set bomb active hinzu und setzen ihn auf False Als Nächstes müssen wir
den Klonen sagen, was sie tun sollen. Gehen wir zurück zur Kontrolle und
fügen einen Klonblock hinzu, wenn ich
anfange Lassen Sie uns zunächst
den Klonzähler erhöhen, indem wir zu Variablen
gehen, eine Änderung pro Block und die Gesamtsumme des Klones um eins ändern. Dann zeigen wir den
Klon, indem wir zu
Los gehen und einen Show-Block einfügen. Jetzt fangen wir
den Klon ganz klein an und lassen ihn
immer größer werden. Lassen Sie uns also einen Block mit Größe
zwei festlegen und
die Größe auf 0% setzen . Wie wir bereits gelernt haben, die Größe
dadurch nicht wirklich zu 0%, aber sie wird sehr klein sein. Okay? Gehen wir jetzt zur Steuerung, fügen einen Wiederholungsblock hinzu und wiederholen wir das 20 Mal. Um den Klon wachsen zu
lassen, gehen wir zu
Los ändern die Größe von Block
zu Block, und ändern die Größe von Block
zu Block, dann ändern wir ihn um fünf. Nach der Grow-Animation warten
wir etwa eine halbe Sekunde blenden den Klon
dann aus. Gehen wir also zur Steuerung über, fügen nach
dem Wiederholungsblock einen Warteblock hinzu und
warten 0,5 Sekunden. Lassen Sie uns nun
einen weiteren Wiederholungsblock hinzufügen,
und bei zehn Wiederholungen blenden
wir den Klon
aus, indem wir zu Los gehen, einen
Änderungseffekt für Block einfügen und den
Ghost-Effekt um zehn ändern Sobald das alles
erledigt ist, löschen
wir schließlich den Klon Lassen Sie uns also zunächst
den Klonzähler verringern , indem wir zu Variablen
gehen, eine Änderung pro Block und die
Gesamtsumme des Klones um einen negativen Wert ändern. Dann beenden wir
das Skript, indem wir zu
Control gehen und einen Block zum
Löschen dieses Klones hinzufügen. Okay, lassen Sie uns
weitermachen und das alles ausprobieren. Wenn wir eine Bombe einsammeln, löst
sie die Bombe an der Position
des Spielers aus, wobei eine Animation zum schnellen Wachsen
und ein Ausblenden angezeigt wird. Jetzt müssen wir es nur noch so machen, dass die Bombe tatsächlich die Asteroiden
trifft Gehen wir dazu in den Sprite-Code
des Asteroiden ein. Und wenn ich mit einem Klon-Skript anfange
, müssen
wir nicht nur überprüfen, ob der Klon einen Laser
oder den Schild berührt, einen Laser
oder den Schild berührt, sondern auch,
ob er eine Bombe berührt Also lass uns hier etwas
mehr Platz schaffen. Dann lass uns zu den Operatoren gehen und einen weiteren OR-Block
reinbringen. Von hier aus können wir den
Block oder
als eine
der Bedingungen für den neuen Block verwenden , und für die andere Bedingung verwenden
wir ein Duplikat eines
der sich berührenden Blöcke und
setzen ihn auf berührende Bombe. Jetzt können wir all das
als Bedingung
für den ITN-Block verwenden als Bedingung
für den ITN-Block Und das sollte es sein. Also lass es uns versuchen. Jetzt werden alle Asteroiden, die eine Bombe
berühren, zerstört. Fantastisch. Okay, jetzt wir wissen,
dass alle
Pickups wie erwartet funktionieren, wollen wir es dem Spieler etwas schwerer machen, indem wir
zum Pickup-Sprite-Code gehen und
die Span-Chance
für jeden Pickup-Typ
reduzieren Für den Laser-Tonabnehmer nehme
ich einen Für den Schild
nehme ich einen von 800. Und schließlich einer von
1.000 für die Bombe. Dadurch sollte der Pickup viel
seltener erscheinen, aber immer noch oft genug In Ordnung, unser Spiel passt jetzt ganz gut
zusammen. Als Nächstes erstellen
wir einige Sterne, die sich im Hintergrund
nach unten bewegen Dies wird dem Spiel ein Gefühl
von Tiefe verleihen. Nun, wir könnten
das mit Klonen machen, aber mit all den
Partikeleffekten,
Asteroiden, Lasern und Pickups kommen
wir den Scratch-Klon-Grenzen schon ziemlich nahe Wir müssen also
eine andere Methode verwenden, um Kopien
von Sprites zu erstellen An dieser Stelle kommt die
Stifterweiterung ins Spiel, und wir werden in der nächsten Lektion alles
darüber erfahren
53. Verwenden der Stift-Erweiterung: Die Pen-Erweiterung ist ein sehr leistungsstarkes Tool, das in Scratch
verfügbar ist. Es hat eine Menge Einsatzmöglichkeiten, und obwohl wir
nicht
unbedingt alle
Funktionen in unseren Spielen verwenden werden, ist
es dennoch gut, etwas über sie zu
wissen. Okay? Um die Funktionen
der Pen-Erweiterung zu demonstrieren, habe ich ein neues Projekt
namens No Surprise
Pen Extension erstellt . Und um die Pin-Erweiterung tatsächlich
verwenden zu
können, müssen wir zuerst in
der Blockpalette ganz unten links nach unten gehen . Hier haben wir eine Schaltfläche mit
der Aufschrift Erweiterung hinzufügen. Wenn wir auf die Schaltfläche klicken
, gelangen wir zur
Erweiterungsbibliothek, in der wir aus verschiedenen
Erweiterungen auswählen
können, die wir unserem Projekt hinzufügen möchten. Erweiterungen ermöglichen es uns, unseren Projekten
erweiterte Funktionen
hinzuzufügen . Mit
der Musik-Erweiterung können
wir beispielsweise unsere eigene
Musik für unsere Projekte komponieren. Mit Videoerkennung können wir Bewegungen in der Webcam
eines Benutzers
erkennen. Und mit Text-to-Speech können
wir Text eingeben und Scratch ihn
mit verschiedenen Stimmen laut vorlesen lassen. Ich empfehle,
alle Erweiterungen auszuprobieren und mehr über sie zu erfahren,
wenn Sie die Gelegenheit dazu haben. Aber im Moment
suchen wir hier nach der
Pin-Verlängerung. Wenn wir darauf klicken,
wird
die Pin-Erweiterung zu unserem Projekt hinzugefügt. Wir haben jetzt diese neue
Pin-Kategorie von Blöcken. Und wie bei den
anderen Kategorien können
wir die Pin-Blöcke
in einem Sprites-Code verwenden Wenn wir zum Beispiel
einen Pindown-Block zum
Scratchcats-Code hinzufügen und auf den Block klicken, dann zur Bewegung übergehen und einen
Move-Block Jedes Mal, wenn wir darauf klicken
, um Scratchcat zu bewegen, zieht
er eine Linie zwischen seiner vorherigen Position und
seiner aktuellen Position Das funktioniert auch, wenn wir
ihn drehen und in
verschiedene Richtungen bewegen Der
Pin-Down-Block befestigt also einen Stift am Sprite und drückt
ihn nach unten auf die Bühne Wenn wir zur
Pin-Up-Kategorie zurückkehren, ist
das Gegenteil des
Pin-Down-Blocks der Pin-Up-Block Wenn wir einen hineinbringen und darauf klicken, berührt
der Stift die Bühne nicht mehr. Jetzt, wo wir Scratch Cat bewegen, zeichnet
er keine Linien mehr. Damit er wieder zeichnet, müssen
wir nur noch einmal auf den
Pin-Down-Block klicken. Wir haben auch Blöcke zum Ändern verschiedener
Einstellungen des Pins. Mit dem
eingestellten Farbblock für den Stift können
wir beispielsweise eine bestimmte
Farbe für den Stift auswählen. Jetzt zeichnet Scratch Cat
mit der neuen Farbe. Und wenn wir
die Breite der Linien ändern möchten, können
wir entweder einen Block zur
Änderung der Pin-Größe
oder einen Block mit festgelegter Pin-Größe verwenden . Mit dem Block zum Ändern des Pins B
und dem Block zum Ändern des Pin-Two-Blocks können
wir ein bestimmtes
Attribut der Farbe des Pins anpassen, einschließlich seines Farbtons,
seiner Sättigung ,
seiner Helligkeit und
seiner Transparenz. Wenn wir zum Beispiel die Linien
teilweise transparent
machen möchten , können
wir einen Block mit festgelegtem Pin-2-Anschluss verwenden
, um die Transparenz festzulegen. Das geht von 0 bis 100,
wobei Null vollständig undurchsichtig und 100 vollständig transparent
ist Ein Wert von 50 macht
die Linien also zu 50% transparent. Sie die Transparenz auf
100 setzen, werden die Linien vollständig transparent, und wenn Sie sie
auf Null setzen , werden sie wieder
vollständig undurchsichtig Wenn wir schließlich alle Zeilen
von der Bühne
entfernen möchten , können
wir den Block „Alle löschen“ verwenden Okay, etwas, was wir mit all dem machen
können ist, dem Benutzer
die Möglichkeit zu geben, zu zeichnen. Dazu können wir es so einrichten, dass das Sprite kontinuierlich Linien
zeichnet, während es dem
Mauszeiger
folgt, und wir lassen es beginnen, wenn auf
die grüne Flagge geklickt wird Gehen wir also zuerst zu den Events
und fügen einen Block hinzu, auf den die grüne
Flagge geklickt wurde Wenn auf die Flagge geklickt wird, löschen
wir zuerst alles Fügen wir also den Block „
Alles löschen“ zum Skript hinzu. Und um mit dem Zeichnen zu beginnen, müssen
wir
den Pin-Down-Block einfügen. Jetzt müssen wir nur noch dem Mauszeiger
folgen. Gehen wir also zu Control und fügen
einen Block für immer ein. Gehen Sie dann zu Bewegung, fügen Sie dem Forever-Block die Option „Gehe
zu einer zufälligen Position“ hinzu
und stellen Sie ihn so ein, dass er
zum Mauszeiger wechselt. Wenn wir jetzt auf die grüne Flagge klicken, folgt
Scratch Cat kontinuierlich der Maus und zeichnet Linien. Jetzt können wir
das Scratch
Cat-Kostüm weiter verwenden , wenn wir wollen, oder wir können ein leeres Kostüm verwenden. Dazu können wir auf die Registerkarte Kostüme
gehen, auf die Schaltfläche „
Kostüm auswählen“ klicken und auf Malen klicken. Jetzt können wir das
neue leere Kostüm
anstelle des
Scratch Cat-Kostüms verwenden . Es sieht also eher so aus, als
würden wir tatsächlich zeichnen. Wir können auch dafür
sorgen, dass das Zeichnen nur stattfindet, wenn der Benutzer eine Maustaste gedrückt
hält. Gehen wir dazu
zurück zur Code-Tab und gehen wir zu Control
und bringen einen Wenn-Dann-Else-Block
in einen leeren Bereich. Für die Bedingung
überprüfen wir, ob eine Maustaste
gedrückt ist , indem wir zur
Erkennung wechseln und einen Mousedown-Block einfügen. Wenn eine Maustaste gedrückt ist, beginnen
wir mit dem Zeichnen,
indem wir die Stecknadel drücken. Lassen Sie uns also den
Pindown-Block von
hier in den I-Teil
des I-Thins-Blocks verschieben . Und wenn eine
Maustaste nicht gedrückt ist, verschieben
wir den Pin-Up-Block nach oben,
indem wir den
Pin-Up-Block zu den TS-Teilen hinzufügen. Wenn wir jetzt den Block I Tints
in den Block Forever einfügen und das Projekt ausführen, wird
es jetzt nur noch gezeichnet während wir die Maustaste gedrückt halten Machen wir es auch
so, dass wir
die Pfeiltasten drücken können , um die
Farbe und Größe des Stifts zu ändern Gehen wir dazu zu den Events und fügen vier Blöcke hinzu, bei denen die
Win-Taste gedrückt wird. Für den ersten verwenden wir die
rechte Pfeiltaste. Und lassen Sie uns so machen, dass sich durch
Drücken
die Pinfarbe um einen
kleinen positiven Betrag ändert . Gehen wir dazu zu Pin und
fügen eine Änderung der
Pin-Farbe um einen Block hinzu. Als Nächstes machen wir das
Gegenteil, indem wir es so einstellen, dass die linke Pfeiltaste
die Farbe um minus zehn ändert. Für die nächste
Option wählen wir die Aufwärtspfeiltaste
und lassen sie
die Pin-Größe erhöhen, und lassen sie
die Pin-Größe erhöhen indem eine Änderung der
Pin-Größe um einen Block vornehmen. Lassen Sie uns abschließend dafür sorgen, dass die Abwärtspfeiltaste
die Größe um einen negativen Wert ändert. Wenn wir das Projekt
jetzt beim Zeichnen ausführen, können
wir mit den Pfeiltasten nach rechts und
links die Farbe und mit den Aufwärts-
und Abwärtspfeiltasten die Größe ändern. Eine weitere wichtige Funktion
der Pinverlängerung, die wir in
unseren Spielen am häufigsten
verwenden werden , ist die Möglichkeit, ein Sprites-Kostüm zu
stempeln Wir machen das mit
dem Stempelblock. Um zu sehen, wie das funktioniert, gehen
wir zunächst
zum Tab Kostüme und wechseln wieder zu
einem Scratch-Katzenkostüm Jetzt zurück im Code, machen
wir es so, dass durch Drücken
der Leertaste das Scratchcat-Kostüm gestempelt
wird Um das zu tun, können wir zu den Ereignissen gehen, einen Block mit der
Win-Leertaste eingeben,
dann zu Pin zurückkehren und dem Skript
einen Stempelblock hinzufügen Wenn wir das Projekt jetzt ausführen, wird
jedes Mal, wenn wir die Leertaste drücken
, eine Kopie von
Scratch Cat an der
aktuellen Position abgestempelt . Und wie Sie sehen können, haben die aktuellen Einstellungen der
Stecknadel, wie Farbe und Größe, keinen Einfluss auf die Stempel. Das liegt daran, dass Stempel
exakte Kopien des aktuellen Kostüms des
Sprites sind exakte Kopien des aktuellen Kostüms des
Sprites Wenn wir also das
Aussehen der Stempel ändern wollen, müssen
wir zuerst das Aussehen
des
Kostüms ändern , bevor wir sie stempeln Wenn wir zum Beispiel zu Looks
gehen und oben im
Win-Skript, das die Leertaste gedrückt hat,
einen
Block mit
dem Effekt „Farbe ändern“ hinzufügen oben im
Win-Skript, das die Leertaste gedrückt hat,
einen
Block mit
dem Effekt „Farbe ändern und das Projekt ausführen, wird, wenn wir jetzt die Leertaste drücken, wenn wir jetzt die Leertaste drücken,
zuerst die
Farbe des Kostüms geändert und
dann das Kostüm mit der neuen Farbe gestempelt Stempeln ist dem Klonen ähnlich, außer dass wir, sobald wir einen Stempel erstellt
haben, keine weiteren
Anpassungen mehr daran vornehmen können,
wie wir es bei Klonen tun können die den Block Wenn ich starte
als Klonblock
verwenden. Ein Vorteil
des Stempelns gegenüber dem
Klonen besteht jedoch darin, dass es beim Stempeln und Kratzen keine Grenzen
gibt keine Grenzen
gibt Wir können also
ein Sprite quasi für immer stempeln ,
wenn Mit diesem Wissen
können wir uns nun wieder
dem Projekt Cosmic Havoc widmen und mithilfe von Stempeln die
Sterne im Hintergrund erschaffen
54. Die Sterne erstellen: Zurück im kosmischen Chaos müssen wir als Erstes
die Pin-Erweiterung
zum Projekt
hinzufügen Lassen Sie uns also hierher kommen und auf die Schaltfläche Erweiterung hinzufügen klicken Dann wählen wir
die Pin-Erweiterung. Als Nächstes erstellen wir ein neues Sprite , das wir für die
Erstellung der Sterne verwenden werden Gehen wir also zur Schaltfläche „Sprite auswählen “ und klicken auf Und nennen wir es Star. Für das Kostüm erstellen
wir einfach einen kleinen Kreis mit weißen bis transparenten Farbverläufen Nehmen wir das Kreiswerkzeug
und wählen für die Füllfarbe den Radio-Farbverlauf, machen die erste Farbe weiß und die zweite
Farbe transparent Stellen wir sicher, dass die
Kontur ausgeschaltet ist. Lassen Sie uns jetzt ein bisschen hineinzoomen. Und während wir die Umschalttaste gedrückt halten, zeichnen
wir einen Kreis mit einem Durchmesser von
etwa zwei Blöcken. Und achten wir auch darauf, den Kreis
zu zentrieren. Wenn wir die Sterne nun tatsächlich
erschaffen, werden
wir sie
auf drei separate Ebenen legen. Die Sterne auf jeder
aufeinanderfolgenden Ebene werden
kleiner sein und sich langsamer bewegen als die Sterne auf
der vorherigen Ebene. Dadurch entsteht
ein sogenannter Parallax-Effekt, bei
dem ein Objekt umso größer und schneller erscheint, je näher
es
dem Spieler
ist umso größer und schneller erscheint, je näher
es
dem Wir sehen diesen Effekt ziemlich oft im Hintergrund
von zwei D-Plattformen oder Spielen, und wir
werden ihn später im Kurs wieder
für unsere eigene Plattform oder unser eigenes
Spiel verwenden später im Kurs wieder
für unsere eigene Plattform oder unser eigenes
Spiel Der Grund, warum ich das
jetzt anspreche , ist, dass wir Code verwenden werden um die Größe
der Sprites zu verringern , je nachdem
, auf welcher Ebene sie sich befinden Da das
Sprites-Kostüm jedoch schon so klein ist, sind
wir ziemlich begrenzt, was Größe
der Sprites angeht Wenn wir versuchen, es auf
etwas wirklich Kleines wie zehn zu setzen, wird es sofort wieder
auf eine viel Um das zu beheben, müssen wir das
Sprites-Kostüm
vergrößern Und wie wir bereits gelernt haben, ein einfacher Weg darin, dem Kostüm eine große unsichtbare
Schachtel
hinzuzufügen Nehmen wir also das
Rechteckwerkzeug und schalten sowohl die Füllfarbe
als auch die Konturfarbe aus, und das Rechteck
muss nicht allzu groß sein. So etwas sollte funktionieren. Und lassen Sie uns es auch zentrieren. Jetzt können wir eine viel
kleinere Größe für den Sprite verwenden. Ich glaube nicht, dass wir ganz so klein
werden,
aber nur für den Fall, dass wir es
wollten, ist es jetzt möglich Okay, lassen Sie uns die Größe vorerst
wieder auf 100 setzen und
gehen wir zur Registerkarte Code. Im Gegensatz zu den anderen
Sprites erstellen
wir die Sterne, sobald auf die grüne Flagge
geklickt wird , und zeigen sie während des
gesamten Spiels an Anstatt also einen Block zu verwenden, bei dem ich das Spiel starten
erhalte, gehen
wir zu den Events und fügen einen Block gehen
wir zu den Events und hinzu, auf
den mit der grünen
Flagge geklickt Da sich die
Sterne nun bewegen werden, müssen
wir in jedem
Frame
neue Stempel mit den
aktualisierten Positionen erstellen Frame
neue Stempel mit den
aktualisierten Positionen Das bedeutet, dass wir die aktuelle
Position jedes Sterns
verfolgen müssen . Dafür verwenden wir
eine Variablenliste. Gehen wir also zu Variablen
und erstellen eine neue Liste. Wir können es Sternpositionen nennen und es nur für
diesen Sprite erstellen Okay, also
lassen Sie uns im
Green Flag-Skript sicherstellen, dass die
Liste gelöscht wird, indem wir einen Block löschen und
alle Sternpositionen Als Nächstes verwenden
wir für die Erstellung der Sterne einen benutzerdefinierten Block. Gehen wir also zu Meine Blöcke
und erstellen einen neuen. Geben wir zunächst Create Stars
mit einem Doppelpunkt am Ende ein. Wir möchten in der Lage sein, einzugeben wie viele Sterne für
jede der drei Ebenen erstellt werden sollen. Fügen wir also eine
Zahl oder Texteingabe und nennen sie Zählung eins. Dann fügen wir ein Label hinzu
und tippen auf Ebene eins. Fügen wir nun eine weitere
Eingabe namens Anzahl zwei hinzu, eine Bezeichnung für Ebene zwei, eine weitere Eingabe
namens Anzahl Drei und schließlich eine Bezeichnung
für Ebene drei. Und für diesen Block wollen
wir auf jeden Fall Ohne
Bildschirmaktualisierung ausführen“ aktivieren. Das liegt daran, dass wir
Wiederholungsblöcke verwenden werden , um
alle Sterne zu erstellen, und wir wollen
sie in einem einzigen Frame erstellen. Okay? Lassen Sie uns jetzt den Block
erstellen. Wir können den definierten
Block hier nach unten verschieben. Und lassen Sie uns weitermachen und dem Skript mit
der grünen Flagge
einen Block zum Erstellen von Sternen hinzufügen . Was die Anzahl
der zu erstellenden Sterne angeht, wollen
wir es nicht
übertreiben und
zu viele erstellen . Ein Grund dafür ist, dass
wir die
Sterne, weil
sie sich bewegen, bei jedem Frame neu berechnen müssen,
und je mehr Stempel wir erstellen, desto langsamer kann
das Spiel werden und je mehr Stempel wir erstellen, desto langsamer kann
das Spiel Ein weiterer Grund ist, dass zu viele Sterne den Hintergrund nur
unübersichtlich machen Okay, also für die erste Ebene, wo die Sterne am
größten sein werden, nehme ich 20. Für Schicht zwei nehme ich 50 und
für Schicht drei 100. Wir können
diese Werte später jederzeit anpassen. Lassen Sie uns nun am
Create Star-Skript arbeiten. Und hier gehen wir zu
Control und fügen drei separate Wiederholungsblöcke für jede der drei Ebenen hinzu. Für die erste
wiederholen wir die Zählung einmal. Wir wiederholen die Zählung zweimal für die zweite und
dreimal für die dritte. Und was wir in jedem
der Wiederholungsblöcke tun werden,
ist, das Sprite an
eine zufällige Position auf der Bühne zu bewegen eine zufällige Position auf der Bühne Dann fügen wir diese Position zur Liste
der Sternpositionen hinzu, und wir fügen der Liste auch die Nummer der aktuellen
Ebene hinzu das Sprite zu bewegen, gehen
wir also zunächst zur Bewegung über
und fügen jedem Wiederholungsblock
einen
Block „Gehe zu zufälliger Position Als Nächstes gehen wir zu Variablen und bringen den
Block „Zu hinzufügen“ in einen leeren Bereich Lassen Sie uns es
zu den Sternpositionen hinzufügen. Dann erstellen wir
zwei Duplikate
des Blocks, indem wir
sie alle zusammenfügen Lassen Sie uns für den ersten Schritt in
Bewegung gehen und
einen Expositionsblock einfügen Für den zweiten
verwenden wir einen Y-Positionsblock. Jetzt können wir
die Blöcke duplizieren und
sie am Ende
des ersten Wiederholungsblocks hinzufügen .
Im dritten Block „Zu Block hinzufügen fügen
wir einen Block für Ebene eins hinzu. Jetzt können wir
die Blöcke erneut duplizieren, sie in den
zweiten Wiederholungsblock einfügen
und der Liste eine Zwei hinzufügen. Schließlich können wir die
verbleibenden drei
Blöcke zum Hinzufügen in den dritten
Wiederholungsblock einfügen und eine Drei hinzufügen. Wenn wir jetzt auf das grüne
Flaggen-Skript klicken, werden
wir in
der Phase
noch nichts sehen , außer dass der
Sternengeist seine Position wechselt, aber wir sollten
ziemlich viele
Elemente zur Liste der
Sternpositionen hinzugefügt haben Elemente zur Liste der
Sternpositionen hinzugefügt Und jedes Mal, wenn wir
auf das Skript klicken, sollten
wir unterschiedliche
X- und Y-Positionswerte erhalten Okay, wir können jetzt zu
Variablen gehen und
die Liste ausblenden . In
der nächsten Lektion werden
wir daran arbeiten, die Sterne zu zeichnen
und zu animieren
55. Die Sterne animieren: Zum Zeichnen der Sterne erstellen
wir einen weiteren
benutzerdefinierten Block Gehen wir also zu Meine Blöcke, klicken auf Block erstellen und nennen wir es Sterne zeichnen. Um die Sterne zu zeichnen, verwenden
wir einen Wiederholungsblock um alle Elemente in der Liste mit
den
Sternpositionen durchzugehen und das Sternen-Sprite anhand
der Informationen zu stempeln anhand
der Informationen Und weil wir
alle Sterne in einem einzigen Bild zeichnen möchten , müssen
wir sicherstellen, dass die Option Ohne Bildschirmaktualisierung
ausführen aktiviert Lassen Sie uns nun den Block erstellen. Okay, machen wir uns auf die Suche nach
Draw Stars hier drüben. Und im Green Flag-Skript wollen
wir den Block „Sterne ziehen“ kontinuierlich
ausführen. Nachdem wir die Sterne erstellt haben, gehen
wir zur Steuerung über und
fügen einen Block für immer ein. Gehen wir dann zurück
zu meinen Blöcken und fügen dem Block für immer einen Block
zum Zeichnen von Sternen hinzu. Als Nächstes
löschen wir in Definiere Sterne als Erstes alle aktuellen Stempel. also in der Kategorie „Stecknadeln Lassen Sie uns also in der Kategorie „Stecknadeln“ einen Block
„Alles löschen“ einfügen. Danach werden wir alle Elemente in der Liste
der Sternpositionen
durchgehen und anhand der
Positionsinformationen Stempel
erstellen. Und während wir die Elemente in einer Schleife
durchgehen, müssen
wir
den aktuellen Index in der Liste verfolgen . Das bedeutet, dass wir eine Variable erstellen müssen
. Gehen wir also zu Variablen und erstellen wir eine neue, nennen sie Index und machen
sie nur für dieses Sprite Und wir müssen die Variable nicht
zeigen. nun in Defined Draw Stars Lassen Sie uns nun in Defined Draw Stars einen Satz zum Blockieren hinzufügen und den Index für das erste
Element in der Liste auf
eins setzen . Als Nächstes, um die Liste durchzugehen, gehen
wir zu Control und fügen eine Wiederholung ein, bis der Block blockiert ist. Wir wollen das
so lange wiederholen, bis der Index größer
ist als die
Länge der Sternpositionen. Was die Bedingung angeht, gehen
wir zu den Operatoren und
fügen einen Block größer als ein. für die erste Eingabe Gehen
wir für die erste Eingabe zu Variablen und fügen
einen Indexblock hinzu. Und für die zweite Eingabe geben wir eine
Blocklänge ein und setzen sie auf die
Länge der Sternpositionen. Und weil wir für jeden Stempel
drei Elemente aus der
Liste verwenden werden , zwei für die X- und Y-Positionen und einen für die Ebenennummer, müssen
wir sicherstellen, dass der Index am Ende
der Wiederholung bis zum Block
um drei erhöht wird. Lassen Sie uns also eine
Änderung pro Block vornehmen und den Index um drei ändern. Damit wird bei jeder Wiederholung das Element mit dem aktuellen
Indexwert die X-Position sein Index plus eins ist
die Y-Position und Index plus zwei ist
die Ebene Um das Sprite also an die
richtigen X- und Y-Positionen zu bewegen, gehen
wir zur Bewegung über und fügen einen
Go-to-XY-Block hinzu Und wir wollen sicherstellen, dass wir
alles tun, bevor wir den Index
ändern sowohl für X als auch für Y Gehen
wir sowohl für X als auch für Y zu Variablen
und fügen einige Blöcke hinzu. Stellen Sie sie auf die Positionen
der einzelnen Sterne ein. Für X können wir das Element mit
dem aktuellen Indexwert verwenden ,
indem wir einen Indexblock einfügen. Für Y wollen wir das
Element am Index plus eins haben. Gehen wir also zuerst zu Operatoren und fügen einen Zusatzblock hinzu. Gehen wir dann zurück zu den Variablen und holen wir uns das Element mit
dem Index plus eins. Als Nächstes verwenden wir die
Ebenennummer, um sowohl
die Größe als auch die
Transparenz des Sterns zu bestimmen . also zunächst für die Größe Gehen
wir also zunächst für die Größe zu Los
und fügen vor dem Block zum
Ändern des Index
einen Block mit festgelegter Größe hinzu. Je höher die Ebene, desto kleiner soll
der Stern sein. Außerdem finde ich, dass die Größe bei
100% etwas zu groß ist. 80% sehen ein bisschen besser aus. Für Ebene eins verwende ich also 80%, dann ziehe ich weitere 20%
für jede nachfolgende Ebene ab, also 60% für Ebene zwei und
40% für Schicht drei Dazu gehe ich
zuerst zu Operatoren und füge einen
Multiplikationsblock in einen leeren Bereich ein Für die erste Eingabe dupliziere
ich hier den Artikelindex plus einen Block mit den
Startpositionen Aber um die Ebene zu erhalten, möchte
ich zwei zum Index hinzufügen und
die Ebene mit 20 multiplizieren. Schicht eins gibt mir also 20. Schicht zwei gibt mir 40 und Schicht drei
gibt mir 60. Jetzt muss ich nur noch
all das von 100 subtrahieren, also füge ich einen
Subtraktionsblock ein, verwende 100 als erste Eingabe und verwende das alles
als zweite Jetzt kann ich das als
Wert für die Einstellung der Größe verwenden. Für die Transparenz
machen wir etwas Ähnliches
mit dem Ghost-Effekt. Gehen wir also zu Looks und bringen
einen festgelegten Effekt ein, zwei Blöcke. Und lassen Sie uns den Ghost-Effekt einstellen. Je höher die Ebene, desto höher soll
der Ghost-Effekt die Sterne immer
transparenter machen. Außerdem belassen
wir für die erste Ebene den
Ghost-Effekt auf Null. Lassen Sie uns dazu
zunächst zu den
Operatoren gehen und
einen Multiplikationsblock
in einen leeren Raum bringen in einen leeren Raum Für die erste Eingabe duplizieren
wir hier den
Artikelindex plus zwei Blöcke. Und lassen Sie uns das mit 30 multiplizieren. Im Moment wird
dadurch der Ghost-Effekt jedoch auf 30 gesetzt , wenn es sich bei der Ebene
um eine Ebene handelt. Um den Ghost-Effekt auf Ebene eins auf Null
zu setzen, können
wir einfach eins
von der Ebenennummer subtrahieren Lassen Sie uns dazu einen Subtraktionsblock einfügen. Verwenden Sie das Blockelement als erste Eingabe und
subtrahieren Sie es um Dann können wir dies
in den ersten Eingang des Multiplikationsblocks und
den Multiplikationsblock den eingestellten Ghost-Effekt-Block einfügen den eingestellten Ghost-Effekt-Block Okay. Und bevor
wir die Sterne bewegen, schauen wir mal, ob das
alles funktioniert. Um das zu tun, müssen wir einfach zu
Pin gehen und nach all dem einen
Stempelblock hinzufügen. Wenn wir jetzt hierher kommen und auf das grüne Flaggensymbol klicken, werden all unsere Sterne zufällig mit unterschiedlichen
Größen und Transparenzen
positioniert Und jedes Mal, wenn wir das Skript ausführen, sollten
sie an
unterschiedlichen Positionen erscheinen Außerdem habe ich in
der vorherigen Lektion
vergessen zu erwähnen , dass
alles, was wir
mit der Pin-Erweiterung erstellen, einschließlich Linien und Stempeln, immer vor den Sprites auf der
Bühne gezeichnet wird Wenn wir also auf die
grüne Flagge selbst klicken, können
wir sehen, dass alle
Sternstempel unter den Sprites
erscheinen Wenn Sie genau hinschauen, werden Sie
jedoch feststellen , dass einer
der Sterne über
den Asteroiden erscheint Das ist eigentlich der Star
Sprite selbst, kein Stempel. Um das zu beheben, müssen
wir nach
all dem Stempeln nur
den Star Sprite verstecken Nachdem sie sich bis zu einem Block
wiederholt haben, gehen
wir zu Looks und
fügen einen Versteckblock Das bedeutet aber auch, dass wir den Sprite
vor dem Stempeln zeigen müssen den Sprite
vor dem Stempeln zeigen Fügen wir also einen Show-Block
über dem Repeat-Unit-Block hinzu. Das sollte
das Problem lösen. Okay? Nun, da wir wissen, dass
die Sterne richtig
gezeichnet wurden, fangen wir an,
sie auf der Bühne nach unten zu bewegen. Dazu müssen wir
die Y-Position jedes Sterns in jedem Frame
um einen kleinen Betrag verringern . Wir müssen jedoch
auch überprüfen, ob der Stern unter den unteren Rand
der Bühne gefallen ist, und wenn ja, platzieren wir ihn oben auf der Bühne und
beginnen wieder, ihn nach unten zu bewegen. Lassen Sie uns also zunächst in Bewegung setzen. Und gleich nach dem Stempelblock bringen
wir eine
Änderung Y für Block ein. Ähnlich wie beim Einstellen der
Größe und des Geistereffekts wir anhand der Ebene, bestimmen
wir anhand der Ebene, wie weit das Sprite bewegt werden
soll Dazu können wir zunächst den großen
Multiplikationsblock
im eingestellten
Ghost-Effekt-Block im eingestellten
Ghost-Effekt-Block und
ihn
dem Y-Block zur Änderung hinzufügen Um sicherzustellen, dass wir Y immer durch eine negative Zahl
ändern, können
wir hier um vier subtrahieren, was eins mehr ist als die
Gesamtzahl der Ebenen. Dadurch wird es auch
so, dass sich der Stern umso langsamer bewegt,
je höher die Ebene Stern umso langsamer bewegt,
je höher die Und für den
Multiplikationswert können
wir etwas
ziemlich Kleines wie 0,5 verwenden Als Nächstes überprüfen wir, ob die Y-Position unter die Bühne
gefallen ist, und wenn ja, setzen wir sie
an den oberen Rand der Bühne Gehen wir dazu zur Steuerung und bringen einen IT-Block
in einen leeren Bereich. wir uns für diesen Zustand an die Betreiber und geben
einen Block weniger als ein. Gehen wir dann zur Bewegung über
und überprüfen wir, ob die Y-Position kleiner als minus 179 ist
, also ein Pixel vom unteren Rand
der Bühne entfernt. Und wenn ja, fügen wir einen Block mit zwei Y-Sätzen hinzu und setzen ihn auf 179 oder ein
Pixel von oben. Jetzt platzieren wir den Block I thin direkt unter dem Block Y. Schließlich müssen wir auch
das aktuelle Y-Positionselement in
der Liste der Sternpositionen durch
die aktualisierte Y-Position ersetzen das aktuelle Y-Positionselement in . Dazu können wir zunächst zu
Variablen gehen und nach dem Block I Thin ein Ersetzungselement
für den Block hinzufügen nach dem Block I Thin ein Ersetzungselement
für den Block und dafür sorgen, dass es die Liste der
Sternpositionen verwendet. Für das zu ersetzende Element möchten
wir Index plus eins verwenden, sodass wir hier ein Duplikat
des Blocks verwenden können. Und für den Wert, durch den er ersetzt werden
soll, wollen
wir die Y-Position des
Sprites verwenden, indem in Bewegung
gehen und einen Block mit Y-Position einfügen Wenn wir das Spiel jetzt starten, können
wir sehen, dass
sich die Sterne auf der Bühne ziemlich
gut bewegen Aber weil wir
die Expositionen
der Sterne beibehalten , sieht
es nach einer Weile leicht
repetitiv aus Um das zu verbessern, können
wir jedes Mal, wenn wir einen Stern an den
oberen Rand der Bühne bewegen, ihm auch eine
neue zufällige Exposition geben Um das zu tun, fügen wir innerhalb
des ITN-Blocks, wo wir überprüfen, ob der Stern unter die Bühne
gefallen ist, auch
eine Änderung X für Block ein Gehen wir dann zu den Operatoren und fügen einen Block mit zufälliger
Auswahl hinzu Und lassen Sie uns eine Zahl
zwischen minus 24240 wählen, die auf der ganzen
Bühne liegen wird Und jetzt müssen
wir nicht nur
die Y-Position in der Liste ersetzen, sondern auch die Position
ersetzen Gehen wir also zu Variablen
und fügen einen weiteren Block zum
Ersetzen von Elementen ein, und fügen einen weiteren Block zum
Ersetzen von Elementen ihn so
einstellt, dass er die Liste der
Sternpositionen verwendet. Für das Element können wir die Indexvariable
verwenden. Und was den Wert angeht, gehen
wir zur Bewegung über und fügen
einen Expositionsblock hinzu Jetzt sollten die Sterne noch zufälliger
aussehen. Okay, wenn das erledigt ist, lassen
wir den Spieler als Nächstes
Punkte lassen
wir den Spieler als Nächstes
Punkte sammeln, wenn er
all diese Asteroiden zerstört
56. Partitur halten: Wir lassen die
Spieler Punkte wann immer sie die
Asteroiden abschießen oder Pickups sammeln Und wie beim Spiel
Smack So Moles werden
wir
oben auf der Bühne eine schöne Anzeige für
den Punktestand erstellen oben auf der Bühne eine schöne Anzeige für
den Punktestand Aber bevor wir das tun, lassen Sie uns
den Punktestand tatsächlich zum Laufen bringen Zu Beginn müssen
wir zunächst eine globale
Score-Variable erstellen. Gehen wir also zu Variablen
und erstellen eine neue. Nennen wir es Score und
machen es für alle Sprites. Zu Beginn des Spiels müssen
wir die Punktzahl auf Null setzen, und wir können uns im Hintergrund darum kümmern Gehen wir also
zum Hintergrundcode und bringen wir im Skript mit der grünen Flagge, bevor
wir „Spiel starten“ senden, bevor
wir „Spiel starten“ senden, einen Satz zum Blockieren und setzen wir den Punktestand auf Null. Als Nächstes werden wir daran arbeiten, den Punktestand
zu erhöhen. Gehen wir dazu zunächst auf den Sprite-Code
des Asteroiden ein. Im Asteroiden-Treffer-Skript erhöhen
wir die Punktzahl um eins, wenn der Asteroid noch Gesundheit
hat, wenn der
Spieler ihn abschießt Gesundheit
hat, wenn der Wenn
der Asteroid dagegen keine Lebenspunkte mehr
hat und er explodiert, erhöhen
wir die
Punktzahl Lassen Sie uns also zuerst eine Änderung für Block vornehmen
und sie
in den
Wenn-Dann-Block irgendwo
vor dem Wiederholungsblock einfügen,
sodass der Punktestand sofort
aktualisiert wird vor dem Wiederholungsblock einfügen,
sodass der ,
und lassen Sie uns den Punktestand um eins ändern Als Nächstes, direkt nach dem ITN-Block, bevor wir den
Explode-Block ausführen, bringen
wir eine weitere
Änderung für Block und ändern die Punktzahl um zwei Außerdem erhöhen wir den Punktestand,
wenn der Spieler einen Pickup
einsammelt Gehen wir nun zum
Pickup-Sprite-Code. Im ersten Fall, wenn ich als Klon-Skript
starte, haben
wir einen ITN-Block, um überprüfen, ob der Klon
den Spieler berührt, und hier
erhöhen wir die Punktzahl Nehmen wir eine Änderung für Block, platzieren sie ganz
oben im ITN-Block
und ändern wir diesmal den Punktestand
um drei Wenn wir jetzt das Spiel starten und die Punkteanzeige hier im Auge
behalten, können
wir sehen, wie sie steigt, wenn wir Asteroiden
abschießen und Pickups
sammeln Okay, jetzt, wo wir wissen, dass der
Punktestand korrekt funktioniert, sollten wir ihn besser darstellen. Ähnlich wie bei der
Timer-Anzeige und Smack So Moles werden
wir den
Punktestand mit schönen großen Ziffern am oberen Rand
der Bühne zentrieren Und um uns etwas Mühe zu ersparen, können
wir tatsächlich damit beginnen, dasselbe Sprite zu verwenden, das wir für
die
Timer-Ziffern und Smack So-Maulwürfe verwendet haben Es gibt zwei Möglichkeiten, wie
wir das tun können. Erstens, wenn wir noch
Zugriff auf unser SMC
- und Moles-Projekt haben , können
wir das
Timer-Ziffern-Sprite mithilfe des Rucksacks kopieren Timer-Ziffern-Sprite mithilfe Klicken wir dazu zunächst hier oben auf Jetzt speichern. Wenn das Projekt noch nicht
automatisch gespeichert wurde, klicken wir
hier auf das Ordnersymbol , um zu
unserer M Stuff-Seite zu gelangen. Und hier suchen wir
das SmxyBolsPject und klicken auf die Wir sollten uns jetzt im Editor für
das
Smack and Moles-Projekt Wenn
wir unten auf Backpack klicken, wird der
Rucksackinhalt angezeigt
, der in meinem Fall derzeit leer
ist Und jetzt können wir Dinge
aus dem Projekt
in den Rucksack ziehen . Im Sprite-Bereich haben
wir sowohl ein Punkte-Sprite als auch ein
Timer-Ziffern-Sprite ein
Timer-Ziffern-Sprite Sie erinnern sich vielleicht, dass die
SCOR-Ziffern oben links
auf der Bühne und die Timer-Ziffern oben
in
der Mitte angezeigt werden Da wir
den Punktestand oben in der
Mitte und das kosmische Chaos anzeigen möchten , verwenden
wir hier zunächst das
Timer-Ziffern-Sprite Dazu
müssen wir zuerst auf das Sprite
klicken und es in den Rucksack
ziehen Dadurch wird eine Kopie
von allem erstellt , was sich im Sprite befindet, einschließlich seiner Kostüme und seines Codes Und jetzt, mit dem Sprite
im Rucksack, gehen
wir zurück zu meinen Sachen Wenn wir jetzt für
das Cosmic Havok Project auf C
klicken, öffnen wir das Rucksack-Panel Wir sollten hier immer noch das
Timer-Ziffern-Sprite sehen. Um das Sprite zu
unserem aktuellen Projekt hinzuzufügen, können
wir es anklicken und aus dem Rucksack in
den Sprite-Bereich ziehen Rucksack in
den Sprite-Bereich Das Sprite ist jetzt
in unserem Projekt, und wir können es
aus dem Rucksack entfernen, wenn Dazu können wir mit der rechten Maustaste auf
das Sprites-Symbol im
Rucksack klicken und Löschen wählen Und wir können
hier erneut auf
den Rucksack-Header klicken , um den Inhalt auszublenden Falls Sie nun aus irgendeinem Grund keinen Zugriff auf
Ihr SmexIBS-Projekt haben, habe ich den Timer
Digit Sprite als herunterladbare Ressource bereitgestellt Digit Sprite als Nachdem wir das
Sprite auf unseren Computer heruntergeladen
haben, können wir es in unser
Projekt hochladen, indem wir auf die Schaltfläche „Sprite auswählen“ klicken und
auf Sprite Wenn wir zu
dem Ort navigieren, an dem wir die Datei
heruntergeladen haben, sollten
wir eine Datei namens
Trdigit dot Sprite three sehen Wenn wir die
Datei auswählen und auf Öffnen klicken, haben
wir jetzt die Timer-Ziffer
Sprite in Okay? Nun, da wir die Timer-Ziffer Sprite im
Cosmic Havoc-Projekt
haben, lassen Sie uns weitermachen und den Namen in
SCR-Ziffer
ändern, da wir sie für die Partitur
verwenden werden Als nächstes im Code für das
SCR-Ziffern-Sprite. B, das Sprite hat
die Timer-Variable benutzt und ein paar Muttermale geschlagen Beim Kopieren des Sprites in dieses Projekt
wurde automatisch eine Timer-Variable erzeugt,
wie wir sehen können, wenn wir uns Statt Timer wollen wir die SCOR
Variable verwenden. Lassen Sie uns also die beiden
Timer-Blöcke im Code loswerden und sie
durch Score-Blöcke ersetzen Und wir werden
die Timer-Variable überhaupt nicht benötigen, also können wir in
der Blockpalette mit der rechten Maustaste darauf klicken und Löschen wählen Da wir Klone
verwenden, sollten
wir außerdem den Klonzähler erhöhen Fügen wir also eine
Änderung pro Block am Anfang
des Skripts, wenn ich als Klonskript
anfange, und ändern wir die Gesamtzahl der
Klonen um eins Eine weitere Sache, die wir machen
wollen, ist, dass die Klone immer
über allem anderen erscheinen Gehen wir also zu Looks und fügen einen Block „Gehe zur
vorderen Ebene“ hinzu. Wir möchten diesen
Block in den Forever-Block einfügen
, sodass der Klon bei der Aktualisierung kontinuierlich zur vorderen
Ebene
wechselt Andernfalls erscheinen die
Pickup-Clones ganz oben in der Punktzahl Wenn wir jetzt versuchen, das Spiel zu starten, wird
der Punktestand tatsächlich oben in der
Mitte der Bühne
angezeigt, aber wir können ihn nur sehen, wenn sich
ein Asteroid dahinter befindet Und das liegt daran, dass alle Kostüme mit
Punktzahlen schwarz sind, was natürlich dieselbe
Farbe wie der Hintergrund Um das Problem zu beheben,
gehen wir zur
Registerkarte Kostüme und ändern die Farbe
jedes Kostüms auf Weiß, beginnend mit Ziffer Null. Wählen
wir dazu mit dem Auswahlwerkzeug die Null aus und ändern
sowohl die Füllfarbe als auch die
Konturfarbe auf Weiß. Etwas anderes, was wir tun
sollten, ist,
um jede Ziffer
einen schwarzen Rand hinzuzufügen . Andernfalls blinkt der Asteroid jedes Mal, wenn der Spieler auf einen
Asteroiden
schießt,
der sich hinter dem Spielstand befindet, weiß und der Spieler
kann den Punktestand nicht sehen Um einen schwarzen Rand zu erstellen, können
wir zuerst die Alt- oder
Wahltaste gedrückt halten und auf die
Null klicken, um ihn zu duplizieren Dann können wir dem Duplikat
eine schwarze Füllung und
einen schwarzen Umriss geben . Erhöhen Sie die Umrissbreite um eins und legen Sie sie unter
die weiße Null. Folgen wir nun den gleichen
Schritten für Ziffer eins. Wählen wir zunächst die aus und geben ihr eine weiße Füllung
und einen weißen Umriss. Halten wir dann die Alt- oder
Optionstaste gedrückt und klicken darauf,
um es zu duplizieren, die Füllfarbe und die
Konturfarbe weiß zu
machen, die Umrissbreite zu
erhöhen und sie nach unten zu verschieben. Und lassen Sie uns das für
die restlichen Kostüme wiederholen. Okay, sobald wir
mit den Kostümen fertig sind, gehen
wir zurück
zum Code-Tab. Wenn wir das Spiel jetzt starten, sollte
unsere neue Punkteanzeige ziemlich gut funktionieren. Jetzt können wir die
alte Punkteanzeige ausblenden. Eine Sache, die
Sie beachten sollten,
ist jedoch, dass wir derzeit nur vier Klone
für die Punktzahl
erstellen Das bedeutet, dass die
Punkteanzeige nicht mehr
aktualisiert wird , sobald der
Punktestand 9.999 erreicht wird zwar ziemlich schwierig sein, ein so hohes Ergebnis zu erzielen, aber es ist definitiv nicht unmöglich Aus Sicherheitsgründen sollten wir also die Anzahl der Klone
erhöhen. Ich denke, sieben Klone sollten mehr als genug
sein. Wir können auch
einen coolen Effekt hinzufügen , bei dem eine Ziffer,
wenn
sie sich ändert, etwas größer anfängt und schnell auf
ihre normale Größe schrumpft Dazu müssen wir es zunächst so einrichten, dass ein Klon nur dann das
Kostüm wechselt , wenn der Wert
des Join-Blocks hier tatsächlich
vom Namen des aktuellen Kostüms des
Klons abweicht vom Namen des aktuellen Kostüms des
Klons Dafür verwenden wir
einen benutzerdefinierten Block. Gehen wir also in meine Blöcke
und erstellen einen neuen. Geben wir Change Costume Two und erstellen wir eine Eingabe namens Costume. Dann klicken wir auf Okay. Lassen Sie uns nun den Block „Defined
Change Costume“ nach unten verschieben . Und wenn ich als Klon
anfange, fügen wir dem Block für immer einen
Block zum Ändern des Kostüms hinzu. Und für die Kostümeingabe verwenden
wir den Join-Block, der derzeit im
Switch-Kostümblock befindet. Lassen Sie uns nun den
Switch-Kostümblock
in das Drehbuch zum Ändern des Kostüms verschieben . Und wir stellen das Kostüm auf den Wert der Kostümeingabe um. Wir
möchten dies jedoch nur tun, wenn sich der Eingabewert für das Kostüm vom
aktuellen Kostümnamen des Klons
unterscheidet. Gehen wir zur Steuerung
und lassen Sie uns den Block
I dann um den
Switch-Kostümblock wickeln . Gehen
wir für die Bedingung zu Operatoren und bringen wir zuerst einen
Knotenblock dann einen Gleichheitsblock ein für die erste Eingabe
des Equals-Blocks Gehen
wir für die erste Eingabe
des Equals-Blocks zu Looks und fügen dort einen
Kostümblock hinzu Und lassen Sie uns überprüfen, ob
der Kostümname nicht
der Kostümeingabe entspricht Okay, und abgesehen davon, dass wir das Kostüm
wechseln, werden
wir auch
die Größe des Klons erhöhen. Also fügen wir dem
Wenn-Dann-Block einen Block mit Größe zwei hinzu und setzen die Größe
auf etwa 160% Schließlich, Ben, wenn ich
als Klon am unteren Rand
des Forever-Blocks anfange , wollen
wir
die Größe innerhalb weniger Frames
wieder auf 100 Dazu können wir zuerst eine Änderung der Größe
für
Block eingeben, dann
gehen wir zu den Operatoren, fügen dem Block mit
der Größenänderung einen Divisionsblock hinzu und verwenden einen Subtraktionsblock als erste Eingabe für
den Divisionsblock Und wenn wir hier die Größe von
100
subtrahieren und durch eine Zahl dividieren, wird
die Größe gleichmäßig auf 100 reduziert Geben wir also eine 100
und die erste Eingabe des Subtraktionsblocks ein, gehen wir
dann zu Looks und verwenden einen Größenblock als
zweite Teilen wir das alles durch zwei. Je größer die
Zahl ist, die wir hier verwenden, desto langsamer wird die
Größe abnehmen. Lass es uns jetzt versuchen. Da haben wir's. Das
sieht ziemlich toll aus. Wir haben jetzt nur noch ein
voll funktionsfähiges Spiel. Wir müssen nur
noch den Titelbildschirm,
einige Soundeffekte
und etwas Musik hinzufügen einige Soundeffekte
und etwas Musik In der nächsten Lektion beginnen wir mit dem
Titelbildschirm.
57. Erstelle die Start-Schaltfläche: Der Titelbildschirm wird aus
einigen Dingen bestehen ,
darunter dem Logo, einem Display zum Umschalten zwischen den
Sprite-Kostümen des Spielers, einer Starttaste, einer Anzeige
für den Highscore und Umschalttasten für die
Soundeffekte und Musik Von all diesen ist
der Start-Button der wichtigste Punkt, die
Spieler das Spiel tatsächlich starten können Daran werden wir also zuerst
arbeiten. Zu Beginn müssen wir ein Sprite für
die Starttaste
erstellen Wählen wir also ein Sprite aus, klicken auf Paint und
nennen wir es die Start-Schaltfläche Für das Kostüm nehmen wir
das Rechteckwerkzeug und
verwenden Farbverläufe
sowohl für die Füllfarbe als auch für die Konturfarbe zunächst für die Füllfarbe Wählen
wir hier zunächst für die Füllfarbe die Option für den vertikalen
Farbverlauf Für die erste oder oberste Farbe wählen
wir Gelb. Und für die untere Farbe nehmen
wir Orange. Lassen Sie uns für den Umriss auch
einen vertikalen Farbverlauf verwenden. Für die obere Farbe verwenden
wir Weiß und für die untere Farbe ein dunkles Grau. Für die Umrissbreite sollten
etwa fünf gut sein. Lassen Sie uns nun die Leinwand
ein wenig vergrößern. Lassen Sie uns ein ziemlich
großes Rechteck erstellen. Ich mache meins ungefähr 32 Blöcke
breit und 12 Blöcke hoch. Lassen Sie uns jetzt die Ecken abrunden. Wie wir bereits gesehen haben, können
wir dies tun, indem wir
das Werkzeug zum Umformen verwenden, einen Knoten auf beiden
Seiten eines Eckknotens
hinzufügen, den Eckknoten löschen
und den Vorgang
dann für die
verbleibenden Ecken wiederholen Ich werde
hier auch die
beiden Knoten unten links auswählen und
sie mit
der Rechtspfeiltaste ein wenig nach rechts verschieben Es sollte gut sein, die Taste etwa
20 Mal zu drücken. Möglicherweise müssen
wir den Griff
hier auch etwas anpassen , damit er dem Winkel
folgt. Jetzt mache ich dasselbe für die beiden Knoten unten rechts, außer dass ich sie mit
der linken Pfeiltaste nach links verschiebe. Dann nehmen wir das
Auswahlwerkzeug und zentrieren die Schaltfläche. Schließlich fügen wir der Schaltfläche etwas
Text hinzu. Nehmen wir also das Textwerkzeug und wählen wir Weiß
als Füllfarbe. Dann lassen Sie uns einen
Text mit dem Wort Start erstellen. Jetzt zentrieren wir es
mit dem Auswahlwerkzeug und skalieren es ein wenig, während wir Alt oder Option gedrückt
halten. Aufgrund der Art und Weise, wie
Scratch Text erzeugt, sieht
er auf der Schaltfläche etwas zu weit
oben aus.
Deshalb verschiebe ich ihn nach unten, indem ich einige
Male
die Abwärtspfeiltaste drücke , damit der Text etwas besser
hervorsticht Geben
wir ihm einen kleinen
Schlagschatten. Dazu können wir die Alt
- oder Optionstaste gedrückt halten und auf den
Text klicken, um ihn zu duplizieren, ihn schwarz zu
machen, ihn nach unten
und etwas nach rechts zu bewegen. Und klicken Sie auf die Rückwärts-Schaltfläche , um ihn unter den weißen Text zu verschieben Das sieht ziemlich gut aus. Es spielt keine Rolle, wo wir es gerade auf der Bühne
platzieren, da wir es ein wenig
verschieben müssen sobald wir die anderen Elemente auf dem
Titelbildschirm erstellt haben. Okay? Gehen wir jetzt
zum Code-Tab. Wenn auf die grüne Flagge geklickt wird, das Spiel nicht sofort gestartet,
sondern wird
das Spiel nicht sofort gestartet,
sondern zuerst
der Titelbildschirm angezeigt Wenn wir in den Code
für den Hintergrund gehen, senden wir
im Moment die Startnachricht des Spiels, wenn auf
die grüne Flagge Stattdessen
wollen wir eine neue Nachricht senden, die wir „Titelbildschirm
anzeigen“ nennen können Wir wollen das auch tun,
nachdem der Spieler gestorben ist. Wenn wir in den Sprite-Code des
Spielers gehen der Spieler getroffen wird, senden
wir die rote Nachricht des
Spielers Wir können also dafür sorgen, dass
der Hintergrund die Nachricht über das
Spielerdatum empfängt und
dann die Nachricht auf dem Titelbildschirm der
Sendung sendet einen W, Lassen Sie uns also im Hintergrundcode zuerst zu den Events gehen und den ich erhalten habe, den
Spieler Ded Block einbinden. Bevor wir jedoch den
Titelbildschirm zeigen, wollen
wir lange genug warten, bis Explosionsanimationen
der Sprites der Spieler fertig Gehen wir also zu Control und
fügen einen Warteblock hinzu, und eine Wartezeit von etwa 4
Sekunden sollte gut sein Jetzt können wir zu den Ereignissen zurückkehren und einen Broadcast-Block hinzufügen. Und den Titelbildschirm der Sendung übertragen. Gehen wir nun zum Code für
die Starttaste Sprite. Und hier fügen wir einen
Block „Wenn ich erhalte “ hinzu und setzen ihn auf „Wenn ich Titelbildschirm anzeigen“
erhalte Das erste, was wir
tun werden, ist das Sprite zu verstecken. Dann warten wir etwa eine halbe Sekunde und lassen den Sprite verschwinden Gehen wir also zuerst zu Looks
und bringen einen Versteckblock rein. Gehen wir nun zur Steuerung, fügen einen Warteblock hinzu
und warten 0,5 Sekunden. Danach
zeigen wir es dem Sprite. Gehen wir also zurück zu Looks
und bringen einen Show-Block rein. Dann machen wir es unsichtbar,
indem wir einen Set-Effekt zwei Blöcke hinzufügen und
den Ghost-Effekt auf 100 setzen. Um das Sprite auszublenden, gehen
wir zur Steuerung und
fügen einen Wiederholungsblock hinzu. Wiederholen wir das Ganze 20 Mal Gehen wir dann zurück zu „
Einen Wechseleffekt für Block ansehen“ bis zum Wiederholungsblock und ändern den Ghost-Effekt
um minus fünf Wenn wir jetzt
nach einer kurzen Pause auf die grüne Flagge klicken , wird die Starttaste eingeblendet Als Nächstes sorgen wir dafür, dass das Spiel durch Klicken auf die Schaltfläche gestartet wird Dazu überprüfen wir, ob das Sprite
geklickt wird, und wenn ja, blenden
wir es aus und senden dann
die Nachricht „Spiel starten Allerdings wollen wir dafür nicht den
Block „Gewinnen, auf
den das Sprite geklickt hat“ verwenden , weil der Spieler
dann sowohl beim Ausblenden
als
auch beim Einblenden weiter auf die Schaltfläche Ausblenden
als
auch beim Einblenden Dies kann zu Problemen führen
. Stattdessen verwenden
wir im Skript
„Titelbildschirm anzeigen nach dem Einblenden des Sprites einen Forever-Block, “
nach dem Einblenden des Sprites einen Forever-Block, um
kontinuierlich zu überprüfen, ob auf das
Sprite geklickt wird Gehen wir dazu zu Control und
fügen am Ende des Skripts einen Block für immer hinzu Dann fügen wir dem
Forever-Block einen Wenn-Dann-Block hinzu. Für die Bedingung überprüfen wir, ob eine Maustaste gerade gedrückt
ist, aber wir wollen auch überprüfen, ob sich der Mauszeiger gerade
über den Sprites befindet Andernfalls wird das Spiel gestartet, wenn Sie
auf eine
beliebige Stelle innerhalb der Stufe klicken wird das Spiel gestartet, wenn Sie
auf eine
beliebige Stelle innerhalb der Stufe Um zu überprüfen, ob
diese beiden Bedingungen zutreffen, gehen
wir zunächst zu den Operatoren
und fügen einen UND-Block ein. Gehen wir dann zur Erkennung über und verwenden
wir einen Block mit
gedrückter Maustaste als eine
der beiden Blockbedingungen und einen
Block mit berührendem Mauszeiger als die andere. Und nur zum Spaß machen
wir
es auch so, dass das Spiel durch Drücken der
Leertaste gestartet wird. Um das zu tun, bringen wir einen Block
zum Drücken der Tastenkombination Moment
einen Block
zum Drücken der Tastenkombination
in eine leere Dann gehen wir zu Operatoren, und dieses Mal
verwenden wir einen OR-Block Wir können den Block durch Drücken der
Tastentaste als eine der Bedingungen für den
Oder-Block Verwenden Sie hier den Und-Block
als andere Bedingung und dann den gesamten Or-Block als Bedingung für
den Wenn-Dann-Block Jetzt müssen wir das Spiel tatsächlich
starten. Dafür erstellen wir
einen benutzerdefinierten Block. Gehen wir also zu Meine Blöcke
und erstellen einen neuen. Wir können es
Spiel starten nennen und auf Okay klicken. Lassen Sie uns den definierten
Startspiel-Block hierher verschieben und fahren wir fort und fügen Wenn-Dann-Block
einen Startspiel-Block hinzu. Wenn wir das Spiel starten, wollen
wir verhindern, dass der
Forever-Block wieder läuft. Gehen wir also zu Control, setzen einen Stop-Block nach
dem Start-Block des Spiels und beenden wir dieses Skript. Als Nächstes blenden
wir für das Startskript das Sprite aus senden
dann die Meldung „Spiel
starten Um das Sprite auszublenden, fügen wir einen
Wiederholungsblock hinzu und wiederholen den Vorgang 20 Dann gehen wir zu Looks, fügen dem Wiederholungsblock einen blockweisen Änderungseffekt hinzu und ändern
den Ghost-Effekt um fünf Danach
verstecken wir das Sprite, indem wir am Ende des Skripts einen Versteckblock Gehen wir zum Schluss zu den Events,
fügen einen Broadcast-Block hinzu
und übertragen das Spiel starten Wenn wir das Spiel jetzt starten, können
wir entweder
die Leertaste drücken oder auf die Starttaste klicken
, um das Spiel zu starten. Und wenn wir sterben, endet das Spiel trotzdem und der
Startknopf wird nicht angezeigt. Das liegt daran, dass
wir derzeit alle Skripte
beenden, wenn wir zum
Sprite-Code
des Players unten in Define Explode gehen zum
Sprite-Code
des Players unten in Define Explode derzeit alle Skripte
beenden Wir können das
jetzt entfernen und wir können auch den Warteblock
entfernen, da wir jetzt stattdessen
im Hintergrund warten In Ordnung, versuchen wir es noch einmal. Wenn wir das Spiel starten und
sterben, explodiert der Spieler. Wir machen eine kurze Pause
und der Startknopf
erscheint wieder Da wir die Skripte jedoch
nicht beenden, laufen
die Asteroiden und Pickups
immer noch wie gewohnt Um das zu beheben,
gehen wir zunächst auf den Sprite-Code des Asteroiden
ein Und hier wollen wir
alle Sprite-Skripte stoppen , wenn sie die
ShowTitle-Bildschirmnachricht erhalten Dazu fügen wir den
Block W I receive ein und setzen ihn auf, wenn ich den ShowTitle-Bildschirm
erhalte Gehen wir dann zu Control einen Stopp-Block hinzu Und stellen Sie es so ein, dass andere
Skripte in Sprite gestoppt werden. Das reicht allerdings aus, die
Asteroidenklone auf der Bühne einzufrieren Wenn das Sprite also ein Klon ist, wollen
wir ihn auch löschen den Klonzähler reduzieren Aber wie wir bereits besprochen haben, bei der Erstellung des Flammen-Sprites erhalten
bei der Erstellung des Flammen-Sprites
nicht nur die Klone die Meldung auf dem
Titelbildschirm, sondern auch das ursprüngliche
Asteroiden-Sprite Wenn wir also einfach den
Klonzähler im Skript reduzieren, der Zähler nicht korrekt Um dieses Problem
für das Flame-Sprite zu lösen, haben wir eine I Clone-Variable erstellt, die wir auf False setzen,
wenn auf die grüne Flagge
geklickt wird , und auf True wenn ich
als Klon-Skript starte Wenn ich dann Spielerdaten erhalte, prüfen
wir, ob es sich bei dem Sprite um einen Klon
handelt. Erst dann reduzieren wir den Zähler
und löschen den Wir können etwas Ähnliches
für den Asteroiden-Sprite tun. Also zuerst können wir das
tatsächlich kopieren, wenn ich
klone, was einem echten Block entspricht,
in die Wenn wir jetzt zum Asteroiden Sprite zurückkehren, können
wir
den neuen IN-Block
zum Skript für den Show-Titelbildschirm hinzufügen zum Dadurch sollte auch automatisch eine
Is-Clone-Variable für das Sprite
erstellt werden, da wir sehen können, ob wir die Variablen
auschecken Jetzt müssen wir
die Variable auf false setzen, wenn auf die grüne Flagge geklickt
wird, und auf true wenn ich
als Klon-Skript starte Gehen wir also zuerst zu den Ereignissen
und fügen eine grüne
Flagge hinzu, klicken wir auf Block. Dann gehen wir zurück zu Variablen, einen Satz
zum Blockieren hinzu
und setzen den Wert von Clone auf False Als Nächstes fügen wir,
wenn ich als Klon
anfange, einen weiteren Satz zum
Blockieren hinzu und setzen diesen
Klon auf true. Jetzt müssen wir nur noch
dasselbe für das Pickup-Sprite tun. Und um uns das Leben zu erleichtern, können
wir sowohl das
Green Flag-Skript als auch das Skript für
den Show-Titelbildschirm
in die Pickup-Sprites kopieren den Show-Titelbildschirm
in die Pickup-Sprites Gehen wir jetzt zum Pickup Sprite
und organisieren
die Skripte neu Im W fange ich
als Klon-Skript an, vergessen
wir nicht,
einen Satz von zwei Blöcken einzufügen und den Klon auf True zu
setzen Wenn wir jetzt das Spiel starten und nach einer kurzen Pause
sterben, alle Asteroiden und Pickups verschwinden
alle Asteroiden und Pickups, bevor der
Startknopf wieder erscheint Wir haben allerdings tatsächlich ein Problem mit dem Klonzähler, da wir sehen können, ob wir das Spiel beenden,
wenn der Gesamtwert des
Klones höher als Null ist. Wenn
wir auf die grüne Flagge klicken, wird die Variable
nicht zurückgesetzt, sodass der Zähler jetzt nicht korrekt
ist Das passiert, weil wir
gerade den Klonzähler und das Asteroiden-Sprite sowie
das Skript, wann ich
das Startspiel erhalte
, zurücksetzen Asteroiden-Sprite sowie
das Skript, wann ich
das Startspiel erhalte Um das zu beheben,
entfernen wir den eingestellten
Gesamtblock für den Klonen von hier entfernen wir den eingestellten
Gesamtblock für den Klonen Gehen wir stattdessen
zum Hintergrundcode und fügen dem Skript mit der grünen Flagge einen Block mit zwei Sätzen hinzu,
wodurch die Gesamtsumme des Klones auf Null gesetzt wird. Wenn wir das Spiel nun erneut ausführen, sollte
der Clone-Zähler für die siebenstelligen Klone bei
sieben
beginnen für die siebenstelligen Klone bei
sieben Wenn wir auf „Spiel starten und sterben“ klicken alles korrekt
funktioniert, wird sollte
der Klonzähler wieder auf sieben sinken,
wenn
die Starttaste wieder angezeigt Nett. Okay, um den
Start-Button fertig zu stellen, fügen
wir noch ein paar
Effekte hinzu. zuerst zurück in den Sprite-Code der
Starttaste, im definierten Startspiel,
bevor
die Sprites ausgeblendet werden, um ihre Helligkeit
zu erhöhen Gehen wir dazu zu Looks, fügen
vor dem Wiederholungsblock einen festgelegten Effekt für den Block hinzu
und setzen den
Helligkeitseffekt
auf einen ziemlich hohen Wert wie
80, und setzen den
Helligkeitseffekt was bedeutet, dass wir auch
den Helligkeitseffekt im Skript für den
Show-Titelbildschirm zurücksetzen müssen den Helligkeitseffekt im Skript für den
Show-Titelbildschirm Fügen wir also dem Block am oberen Rand
des Skripts einen festgelegten
Effekt hinzu und
setzen die Helligkeit auf Null. Wenn wir jetzt das Spiel starten und
auf die Schaltfläche Start klicken, wird
es heller,
bevor es ausgeblendet wird Dies passiert, wenn wir auch
die Leertaste drücken. Wenn der Spieler als Nächstes den
Mauszeiger über die Schaltfläche bewegt, geben
wir ihm eine Wachstumsanimation Und wenn sie ihre
Maus von der Schaltfläche wegbewegen, verkleinern
wir sie wieder
auf ihre normale Größe Wir haben
das tatsächlich für die Schaltfläche „
Erneut abspielen “ gemacht und ein paar
Muttermale geschlagen Und wenn wir wollen, können wir den Code in
den Hintergrund
kopieren und
ihn im kosmischen Chaos einsetzen Aber nur für den Fall, dass Sie keinen
Zugriff auf Ihr S Maxims-Projekt haben , werde
ich den Code
in Cosmic Havoc erneut erstellen Gehen wir also zunächst zur Steuerung und fügen am unteren Rand des Forever-Blocks einen
Wenn-Dann-Else-Block hinzu und zeigen den Titelbildschirm Gehen wir für die Bedingung zur Erkennung über und fügen einen sich
berührenden Mauszeigerblock hinzu. Für den ersten Teil erhöhen wir die Helligkeit ein wenig und geben dem
Ganzen eine Animation mit gleichmäßigem Wachstum. Gehen wir dazu zu Looks einen
festgelegten Effekt zum Blockieren hinzu. Und lassen Sie uns den
Helligkeitseffekt auf 20 setzen. Dann lassen Sie uns eine
Byblock-Änderung in der Größenänderung vornehmen. Gehen wir für die Eingabe zu Operatoren einen Divisionsblock hinzu Verwenden Sie dann einen Subtraktionsblock als ersten Eingang
des Divisionsblocks für den Subtraktionsblock Verwenden
wir für den Subtraktionsblock 120 als
erste Eingabe und für die zweite Eingabe wir zu Looks zurück und
fügen einen Größenblock Und lass uns alles durch zwei teilen. Dadurch wird die Größe
reibungslos auf 120 anwachsen. Im S-Teil wollen wir
den Helligkeitseffekt entfernen und
die Größe wieder auf 100 reduzieren. Lassen Sie uns also zunächst
Duplikate der beiden
Blöcke im I-Teil verwenden Duplikate der beiden
Blöcke im I-Teil Diesmal
setzen wir die Helligkeit auf Null und subtrahieren
die Größe von 100 Lass es uns jetzt versuchen. Sieht gut aus. Wenn
wir das Spiel jedoch erneut ausführen, fängt
die Starttaste
kurz groß an. Um dies zu beheben, müssen
wir am
Anfang des Skripts nur
eine festgelegte Größe auf 100 Blöcke festlegen. Da haben wir's. Okay, wir sind jetzt mit
der Starttaste fertig. Also als nächstes werden wir am Logo arbeiten.
58. Das Logo erstellen: Um mit der Erstellung des Logos
für den Titelbildschirm zu beginnen, erstellen
wir ein neues Sprite,
indem wir erneut auf die
Schaltfläche „Sprite auswählen“ klicken und auf Malen klicken Nennen wir es Für das Kostüm
werden wir viel Weiß verwenden. Damit alles
besser zu erkennen ist, verwenden
wir zunächst das
Rechteckwerkzeug, um
ein großes Rechteck mit einer durchgehenden
schwarzen Füllung und ohne Kontur zu erstellen . Wir werden
das etwas später löschen. Für das eigentliche Logo erstellen
wir zunächst etwas Text. Nehmen wir also das Textwerkzeug, wählen Weiß als Füllfarbe und erstellen wir einen Text mit den Wörtern Cosmic
Havoc in Großbuchstaben Dann nehmen wir das Auswahlwerkzeug, skalieren es ziemlich
groß und zentrieren Wir können es auch
etwas dicker machen, indem wir einen weißen Umriss hinzufügen Eine Breite von zwei
sieht ziemlich gut aus. Als Nächstes fügen wir über und unter dem Text einige
Designs hinzu,
die wie
Kometen aussehen, die durch den Weltraum fliegen Nehmen wir dazu
das Rechteckwerkzeug und verwenden für die Füllfarbe hier die Option für den horizontalen
Farbverlauf Wir verwenden Weiß als
erste Farbe und machen die zweite
Farbe transparent. Und dafür wollen wir keine
Gliederung. Beginnen wir nun etwas unterhalb des Textes und richten
wir uns an der linken Seite Wir erstellen ein dünnes Rechteck , das fast so
lang ist wie der Text. Lassen Sie uns nun die linke Seite
des Rechtecks etwas
vergrößern . Dann nehmen wir das Reshape-Tool und fügen einen Knoten in der Nähe der
Mitte der linken Seite Wählen wir nun die beiden
Eckknoten aus, indem wir einen auswählen, dann die Umschalttaste gedrückt halten
und den anderen
auswählen dann die Umschalttaste gedrückt halten
und den anderen
auswählen und sie mit der
Rechtspfeiltaste ein wenig nach rechts verschieben Dann können wir
die Griffe
des Mittelknotens anpassen , bis
er schön abgerundet ist. Gehen wir jetzt
auf die rechte Seite. Fügen wir der Mitte einen neuen
Knoten hinzu. Machen Sie dann den Knoten spitz indem Sie auf die spitze
Schaltfläche hier oben klicken. Lassen Sie uns nun die
beiden Eckknoten löschen. Okay. Lassen Sie uns jetzt ein bisschen rauszoomen. Dann nehmen wir das Auswahlwerkzeug, halten die Taste oder
die Wahltaste und ziehen das
Objekt, um es zu duplizieren. Lassen Sie uns dieses
Bild über den Text platzieren, auf die Schaltfläche
zum Umklappen
hier oben klicken und es an
der rechten Seite des Textes ausrichten. Schließlich können wir
die Os im Text durch Asteroiden
ersetzen die Os im Text durch Asteroiden
ersetzen Gehen wir dazu zunächst zu den Asteroiden-Sprite-Kostümen und wählen
alle Objekte in einem
der normalen Kostüme aus und kopieren alle Objekte in einem
der Gehen wir nun zurück zum
Sprite-Kostüm mit dem Logo und
fügen die Objekte Verschieben wir sie
dann auf eines
der Betriebssysteme und ändern ihre Größe, damit sie etwas besser in den Raum
passen Jetzt können wir zum
Asteroiden Sprite zurückkehren und ein anderes Kostüm
kopieren Gehen Sie zurück zum Logo, klicken Sie auf Einfügen und
vertuschen Sie das andere O. Jetzt können
wir im Moment immer noch das Os hinter
den Asteroiden sehen ,
was wir nicht wollen Um das Problem zu beheben, wählen wir den Text aus und greifen zum Textwerkzeug Dann ersetzen wir jedes
O durch ein paar Leerzeichen. Da haben wir's. Jetzt können wir das schwarze Rechteck
loswerden. Was die Position
des Sprite-Logos angeht, möchten
wir es am oberen Rand
der Bühne zentrieren Es sieht so aus, als ob ein X von Null und
ein Y von 100 gut sein sollten. Gehen wir nun
in den Code-Tab. Um mit der Codierung des Sprites zu beginnen, gehen
wir zu Events, fügen einen Block W I receive und setzen ihn auf W I receive
show title screen Fall, dass wir das Logo
versehentlich verschieben, stellen
wir zunächst sicher, dass es
an der richtigen Position beginnt, indem wir zur Bewegung wechseln und einen Go-to-XY-Block einfügen, und es sollte bereits auf
ein X von Null und ein Y von 100 gesetzt sein ein X von Null und ein Y von 100 Als Nächstes werden
wir, wie bei der Starttaste, das Sprite ausblenden, eine halbe Sekunde
warten dann das Sprite einblenden Gehen wir also zu Looks und
fügen einen Versteckblock hinzu. Gehen wir dann zu
Control und bringen
einen Gewichtsblock hinein und stellen
ihn so ein, dass er 0,5 Sekunden wartet. Jetzt wollen wir das Sprite zeigen. Gehen wir also zurück zu Looks
und bringen einen Showblock rein. Als Nächstes werden wir das Sprite
unsichtbar machen, indem einen festgelegten Effekt auf Block setzen und den
Ghost-Effekt auf 100 Um das Sprite dann wieder
einzublenden, wechseln
wir zur Steuerung, fügen einen Wiederholungsblock hinzu
und wiederholen den Vorgang 20 Mal Dann gehen wir noch einmal zu Los, fügen dem Wiederholungsblock blockweise einen Änderungseffekt hinzu und ändern den Ghost-Effekt
um minus fünf Wenn wir das Spiel jetzt starten, wird das Logo
gleichzeitig mit der Starttaste eingeblendet Der Punktestand wird derzeit
jedoch über dem Logo
angezeigt , was wir gleich
korrigieren werden. Aber zuerst möchten wir auch das Logo
ausblenden, wenn wir
auf die Start-Schaltfläche klicken. In den Startschaltflächen, die das Startskript für das Spiel
definieren, blenden
wir gerade das Sprite
aus senden
dann die Nachricht zum
Starten des Spiels Was wir also im
Logo-Sprite tun könnten , ist, dass wir
die Startnachricht für das Spiel empfangen und das Sprite dann ausblenden Da
wir
die Nachricht jedoch nach dem Ausblenden der Starttaste übertragen, wird das Logo auf diese Weise ausgeblendet, nachdem
die Starttaste bereits
vollständig ausgeblendet die Starttaste bereits ,
was seltsam aussehen Wir möchten, dass sie gleichzeitig
ausgeblendet werden. Stattdessen können
wir vor dem
Ausblenden der Start-Schaltfläche eine
andere Nachricht senden, damit die anderen Sprites auf dem Titelbildschirm wissen, dass es Zeit ist, sie auszublenden Gehen wir dazu zu Events und fügen oben im Spiel „Start definieren“ einen Broadcast-Block hinzu Lassen Sie uns die neue Nachricht übertragen, und wir können das Spiel
als Startspiel bezeichnen. Gehen wir nun zurück
zum Logo-Sprite
und fügen einen Block hinzu, wenn ich erhalte, und
setzen ihn auf, wenn ich das Startspiel
erhalte Um das Sprite auszublenden, gehen
wir zunächst zur Steuerung, einen Wiederholungsblock hinzu
und wiederholen den Vorgang 20 Gehen wir nun zu Los und
ändern den Effekt blockweise zum
Wiederholungsblock und ändern
den Ghost-Effekt um fünf Zum Schluss verstecken wir
die Sprites,
indem wir einen Hide-Block
unter den Wiederholungsblock Wenn wir das Spiel jetzt starten und
auf die Schaltfläche Start klicken, beide Sprites
gleichzeitig ausgeblendet Als Nächstes sorgen wir dafür, dass der Punktestand nicht auf
dem Titelbildschirm angezeigt Gehen wir dazu
in den Hintergrundcode. Um die Punktzahl einfach auszublenden, wenn auf
die grüne Flagge geklickt wird, setzen,
anstatt
die Score-Variable auf einen leeren Wert setzen,
anstatt
die Score-Variable im Skript mit
der
grünen Flagge auf Null können
wir sie
auf einen leeren Wert setzen,
anstatt
die Score-Variable im Skript mit
der
grünen Flagge auf Null zu setzen Das funktioniert, weil dann die Klone der Punkteziffern
das Kostüm mit leeren Ziffern verwenden Wir wollen das auch tun, nachdem der Spieler gestorben ist
und bevor
der Titelbildschirm wieder angezeigt wird, damit wir den eingestellten Punktestand
bis zum Null-Block duplizieren
können, die überflüssigen Blöcke
loswerden
und diesen Block
als ich erhalten habe, direkt über dem Titelbildschirm der
Sendung platzieren direkt über dem Titelbildschirm der
Sendung Wir
müssen jedoch auch sicherstellen, dass der
Punktestand auf Null gesetzt wird, wenn ein
neues Spiel gestartet wird. Um das zu tun, gehen wir zu den Events und fügen einen Block hinzu, wenn
ich erhalte. Stellen Sie ihn auf, wenn ich das Spiel starten
erhalte. Und bevor der Punktestand angezeigt wird, fügen
wir eine kurze
Pause hinzu, indem wir zu
Control gehen und
einen Warteblock von 1 Sekunde Gehen wir dann zu Variablen,
fügen einen Satz in den Block ein
und setzen den Punktestand auf Null Wenn wir das Spiel jetzt starten, der Punktestand nicht auf dem Titelbildschirm angezeigt, aber sobald wir auf Spiel starten klicken, erscheint
der Punktestand
nach etwa einer Sekunde Wir sollten die
Asteroiden und Pickups erstellen und
außerdem eine Sekunde warten, bevor wir
auftauchen , damit die
Punktzahl nicht auf Null gesetzt wird, nachdem der Spieler bereits einige
Punkte erzielt hat Um das zu tun, gehen wir zuerst
in den Asteroiden-Sprite-Code
und vor dem Forever-Block, und wenn ich „Spiel starten“ erhalte, gehen
wir zu Control und geben einen Block mit einer Wartezeit von
1 Sekunde ein Gehen wir jetzt zum
Pickup-Sprite. Und noch einmal, vor
dem Forever-Block des Startspiel-Skripts, warten
wir 1 Sekunde Und lass es uns
versuchen. Da haben wir's. Wenn der Spieler stirbt,
bevor der
Titelbildschirm wieder angezeigt wird, verschwindet auch bevor der
Titelbildschirm wieder angezeigt wird, die Punktzahl zusammen mit
den Asteroiden und Pickups Ordnung, um das Logo fertig zu stellen, lassen wir es
nach links und rechts neigen Ich denke, das würde ziemlich cool
aussehen. Gehen wir dazu zurück
zum Logo-Sprite-Code. Um diesen Effekt zu erzielen, verwenden
wir ein bisschen Trigonometrie Es mag zunächst etwas
verwirrend sein,
aber ich werde es im Laufe der Zeit erklären Lassen Sie uns zunächst
eine neue Variable erstellen, indem wir zu Variablen gehen und
auf Variable erstellen klicken. Wir verwenden die Variable, um den Winkel des Sprites zu steuern Nennen wir es also Winkel und
machen es nur für dieses Sprite. nun am Ende des Skripts zum
Anzeigen des Titelbildschirms Lassen Sie uns nun am Ende des Skripts zum
Anzeigen des Titelbildschirms einen Satz zum Blockieren hinzufügen und den Winkel auf Null setzen Als Nächstes gehen wir zur Steuerung über und fügen
einen Block für immer ein. Gehen wir dann zur Bewegung über und fügen Forever-Block
einen Punkt- und Richtungsblock
hinzu. Danach
gehen wir zu Variablen,
fügen Änderung pro Block ein
und ändern den Winkel um eins. Was wir hier tun werden, ist, dass wir den
Wert der Winkelvariablen
kontinuierlich aktualisieren und den
Sinus des Werts verwenden, Sinus des Werts verwenden um
die Richtung der
Sprites festzulegen Um zu sehen, wie das funktionieren wird. Gehen wir zu den Operatoren bringen einen Block
in einen leeren Raum. Und statt abs wählen
wir die Sin-Funktion. Wenn wir eine Null als
Wert verwenden und auf den Block klicken, erhalten
wir Null zurück, weil
der Sinus von Null Null ist. Wenn wir die Zahlen 0-90 verwenden,
erhalten wir Werte 0-1. Wenn wir 90 verwenden, erhalten wir eins. Wenn wir über 90 gehen, beginnt
der Wert wieder auf Null zu
fallen. Bis wir 180 erreichen, wenn es wieder Null wird,
180-270, erhalten wir negative Werte zwischen Null und Und schließlich gehen
wir bei 360 wieder auf Null zurück und
die Werte Dadurch entsteht eine
sogenannte Sinuswelle, und wir können sie verwenden, um unserem
Sprite eine gleichmäßige Rotation zu verleihen Verwendung solch kleiner Werte
ist jedoch ziemlich nutzlos, da sich das Sprite
dadurch nur um bis zu einem Grad dreht
, was sich nicht einmal bemerkbar Was wir tun können, ist
,
den Wert mit einem anderen
Wert zu multiplizieren , um ihn zu vergrößern Lassen Sie uns dazu
einen Multiplikationsblock einfügen. Und lassen Sie uns den
Send-of-Block als
erste Eingabe verwenden und ihn
mit fünf multiplizieren Das gibt uns Werte
zwischen minus fünf und fünf. Wenn Sie diese Werte jedoch
als Richtung für
das Sprite verwenden , zeigt es beim Kippen gerade nach oben und
unten Um es horizontal zu machen, können
wir dem Wert 90 hinzufügen, was ungefähr so aussieht Lassen Sie uns also
einen Zusatzblock einfügen. Verwenden Sie all dies als erste
Eingabe und addieren Sie es zu 90. Schließlich verwenden
wir, anstatt die Zahl für
den Cent des Blocks einzugeben , die Winkelvariable. Gehen wir also zu Variablen und
fügen einen Winkelblock hinzu. Und jetzt können wir all
das in den Punkt
- und Richtungsblock einfügen . Wenn wir das Spiel jetzt ausführen, kippt
das Logo sanft nach links und rechts Um den Neigungsgrad zu erhöhen, können
wir mit einer höheren
Zahl als fünf multiplizieren Ich finde aber, dass fünf
ziemlich gut aussieht. Wir können
die Neigungsgeschwindigkeit auch erhöhen indem wir den Winkel um einen
höheren Wert wie zwei ändern. Das ist besser. Es gibt jedoch
ein paar Verbesserungen, die
wir vornehmen können. Erstens: Wenn wir das Spiel beenden, wenn das Logo geneigt ist, und erneut
auf die grüne Flagge klicken, beginnt
das Sprite geneigt Das ist nicht schlimm, aber
es verursacht einen Sprung, wenn die Richtung zu Beginn der Tilt-Animation
sofort auf
90 wechselt Beginn der Tilt-Animation
sofort auf
90 Um dieses Problem zu beheben, können wir zu
Bewegung wechseln und einen Punkt in
Richtung 90-Block am oberen Rand
des Skripts für den
Show-Titelbildschirm hinzufügen Richtung 90-Block am oberen Rand
des . Viel besser. Wenn wir als Nächstes
auf die Schaltfläche Start klicken, die Tilt-Animation
weiter,
obwohl wir
das Logo nicht mehr
sehen können läuft die Tilt-Animation
weiter,
obwohl wir
das Logo nicht mehr
sehen können. Das ist ziemlich ineffizient. Um zu verhindern, dass es läuft,
wenn es nicht mehr benötigt wird, können
wir zu Control gehen, einen Stopp-Block
an eine leere Stelle
bringen, ihn so
einstellen, dass er andere
Skripte und Sprite stoppt, und ihn entweder oben
oder unten im
Startspiel-Skript platzieren oder unten im
Startspiel-Skript Wenn Sie ihn oben platzieren, wird verhindert das Sprite kippt,
bevor es ausgeblendet wird. Wenn Sie es nach unten legen, wird
das Kippen gestoppt , nachdem
das auch sei, wenn
das Spiel jetzt gestartet wird, wird das Skript zur Anzeige des Titels auf dem
Logo-Sprite-Bildschirm nicht mehr kontinuierlich ausgeführt Wie dem auch sei, wenn
das Spiel jetzt gestartet wird, wird das Skript zur Anzeige des Titels auf dem
Logo-Sprite-Bildschirm nicht mehr kontinuierlich ausgeführt. Und schließlich, weil wir wissen, dass die Sinuswerte wieder von
vorne beginnen,
sobald
die
Winkelvariable 360 erreicht Sinuswerte wieder von
vorne beginnen,
sobald
die Anstatt die
Variable bis ins Unendliche ansteigen zu lassen, können
wir sie wieder auf
Null setzen, sobald sie 360 erreicht hat. Eine Möglichkeit, dies zu tun, besteht darin, zu den
Operatoren zu gehen und einen Mod-Block einzubringen
. Mood oder Module teilen den ersten Wert durch den zweiten Wert und
geben uns den Rest. Zum Beispiel ergibt zwei
Mod Ten zwei, was der Rest von 2/10 ist, aber zehn Mod Ten
ergibt Null, da
sich Zehn natürlich gleichmäßig teilt, was wiederum Null
für den Rest ergibt 13 Mod Zehn ist Drei und
20 Mod Zehn ist Null. Im Grunde
werden die Ergebnisse immer eine Zahl
zwischen Null und der richtigen
Zahl sein , subtrahiert um eins Wir können also, nachdem wir den Winkel um zwei
geändert
haben, zu Variablen gehen, einen Satz zum Block
hinzufügen, den Mod-Block dazu hinzufügen
und den Winkel auf Winkel Mod 360 setzen Dadurch wird der
Winkelwert gezwungen, bei 0-359 zu bleiben. Das ist nicht unbedingt notwendig, aber es ist definitiv
effizienter Denn wenn der Winkelwert
kontinuierlich größer und
größer wird, kann dies den
Speicher unseres Computers unnötig beanspruchen Wenn wir das Spiel starten, können
wir sehen, dass
die Tilt-Animation genauso
funktioniert wie zuvor Okay, jetzt können wir die Winkelvariable
ausblenden,
und das kümmert sich um
zwei Elemente auf dem Titelbildschirm Als Nächstes werden wir daran arbeiten, dem Spieler
die Möglichkeit zu
geben , sein
Sprites-Kostüm zu wechseln
59. Spieler-Kostüme wechseln: In der Mitte
des Titelbildschirms werden
wir ein großes Display haben, werden
wir ein großes Display haben das das aktuelle Kostüm der
Spieler-Sprites
anzeigt, sowie eine Pfeiltaste
auf beiden Seiten, der der Spieler
zwischen den Kostümen hin und her
wechseln kann zwischen den Kostümen hin und her
wechseln Wir beginnen damit,
das Kostümdisplay in
der Mitte der Bühne hinzuzufügen das Kostümdisplay in
der Mitte der Bühne Lassen Sie uns zunächst
die Starttaste etwas
nach unten bewegen , damit sie nicht im
Weg ist. Und lassen Sie uns tatsächlich weitermachen und die Startposition
für die Starttaste
festlegen. Wir zentrieren es vertikal
mit einem X von Null, und ich denke, ein Y von minus
100 sollte gut sein. Im Code für das
Start-Button-Sprite können
wir also zur Bewegung übergehen Und fügen Sie oben im Skript für den Titelbildschirm der
Show einen Go to XY-Block hinzu und setzen Sie ihn auf die
richtige Position Gehen wir nun zum Sprite-Code des
Players. Wir werden das Spieler-Sprite in
der Mitte der Bühne
anzeigen der Mitte der Bühne und es etwas
größer als normal machen Und wie beim Logo
und der Starttaste warten
wir zuerst eine halbe Sekunde und blenden
dann das Sprite Gehen wir also zunächst zu den
Ereignissen und fügen einen Block hinzu, wenn ich erhalte, setzen ihn auf „Wenn ich den Titelbildschirm anzeigen
erhalte Lasst uns zuerst
den Sprite verstecken, indem wir
nach Los gehen und einen Block zum Verstecken
reinbringen Lassen Sie uns auch einen
Block mit übersichtlichen Grafikeffekten einfügen, um die Effekte zu löschen
, die wir bei der
Zerstörung des Players verwenden Dann gehen wir zur Steuerung, bringen einen Gewichteblock hinein
und warten 0,5 Sekunden. Als Nächstes bringen wir das Sprite die Mitte der Bühne,
indem wir zu Bewegung wechseln, einen Go-to-XY-Block einfügen
und es auf 00
bringen und es auf 00 Dann zeigen wir das Sprite, indem nach Los
gehen und einen Showblock
hineinbringen Und lassen Sie uns es auch vergrößern indem wir ein
Set mit zwei Blöcken hinzufügen, und etwa
150% sollten gut sein Zum Schluss blenden wir
den Sprite ein. Da wir das schon
mehrmals gemacht haben, möchte
ich dich
auffordern,
das Video jetzt anzuhalten und
den Code selbst zu erstellen Als Hinweis müssen wir das Sprite zuerst transparent
machen, dann machen wir es immer
undurchsichtiger und das
über 20 Wiederholungen Okay, also zuerst, um
das Sprite transparent zu machen, lassen Sie uns einen festgelegten Effekt zum
Blockieren hinzufügen und den
Ghost-Effekt auf 100 setzen Gehen wir dann zur Steuerung,
fügen einen Wiederholungsblock hinzu
und wiederholen den Vorgang 20 Gehen wir nun zurück zu Los, um den Effekt für Block
zu
ändern und den Ghost-Effekt
um minus fünf zu ändern. Und das ist alles. Wenn wir das Spiel
jetzt starten, das Sprite des Spielers zusammen mit
den anderen Sprites auf
dem Titelbildschirm eingeblendet und
es ist auch größer und
zentriert auf der Bühne Jetzt müssen wir einige
Dinge für den
Start des Spiels korrigieren, denn wenn wir
auf die Starttaste klicken, bleibt das Sprite
des Spielers groß und befindet
sich auch weiterhin Es wäre besser,
wenn es am Ende
der Stufe beginnen würde, damit es
nicht in Gefahr ist. Wir werden also nach der
Startnachricht suchen , die
wir senden, wenn wir auf
die Starttaste klicken , und wir
blenden das Spieler-Sprite aus Dann setzen
wir im Startskript für das Spiel die Größe wieder auf 100, verschieben das Sprite an das
Ende der Stufe und blenden es schnell Zunächst blenden wir den Sprite aus, wenn er
die Startnachricht
des Spiels erhält Gehen wir dazu zu den Events, W
I receive ein Block W
I receive ein und stellen ihn so ein, dass er das Startspiel
empfängt Jetzt können wir ein Duplikat
des Wiederholungsblocks aus dem Skript
für den Titelbildschirm hinzufügen . Aber dieses Mal wollen wir
den Ghost-Effekt
um fünf positive Werte ändern . Als Nächstes machen wir etwas mehr Platz für das Skript „Spiel starten“. Da wir
das Sprite nicht verstecken , nachdem es ausgeblendet ist, brauchen
wir den Show-Block
hier nicht mehr, damit wir ihn loswerden
können Da wir das Sprite wieder
einblenden werden, wollen
wir auch nicht
die grafischen Effekte löschen, also entfernen wir auch
diesen Block nun vor dem Forever-Block Lassen Sie uns nun vor dem Forever-Block die Größe wieder
auf 100 setzen, indem wir zu
Looks gehen und eine
festgelegte Größe auf 100% Als Nächstes gehen
wir für die Position zur Bewegung über und fügen
einen Go-to-XY-Block hinzu. Und wir wollen Null für
X verwenden, um es vertikal zu zentrieren, und für Y versuchen wir es mit
etwa minus 100. Schließlich können wir ein Duplikat
des Wiederholungsblocks
aus dem Titelbildschirm anzeigen
hinzufügen , aber wir machen die Animation
etwas schneller, indem wir ihn
zehnmal wiederholen und den
Ghost-Effekt um minus zehn ändern. Lassen Sie uns es jetzt versuchen. Wenn Sie auf Start klicken,
wird das Sprite des Spielers ausgeblendet, dann wird es wieder kleiner und
am unteren Rand der Stufe eingeblendet Jetzt müssen wir auch an der Flamme
arbeiten, die gerade auf dem Titelbildschirm angezeigt
wird Gehen wir also zum
Flame-Sprite-Code über. zunächst, wenn auf die grüne
Flagge geklickt wird, Lassen Sie uns zunächst, wenn auf die grüne
Flagge geklickt wird, den
Sprite verstecken, indem wir zu
Looks gehen und einen Versteckblock
einfügen Wir verstecken es bereits,
wenn der Spieler stirbt, also sollte es ausgeblendet werden wenn der
Titelbildschirm wieder erscheint Als Nächstes, und wenn ich „Spiel starten“
erhalte,
lassen Sie uns, anstatt das Sprite sofort
anzuzeigen, anstatt das Sprite sofort
anzuzeigen, etwas warten, indem wir zu
Steuerung gehen und vor dem
Show-Block einen Warte-Block hinzufügen Eine Gewichtung von 0,5
Sekunden sollte funktionieren. Lass es uns jetzt versuchen. Sag
, das sieht ziemlich gut aus. Jetzt müssen wir nur noch
die Knöpfe erstellen , mit denen der
Spieler das Kostüm wechseln kann. Dazu müssen wir ein neues Sprite
erstellen. Wählen wir ein Sprite aus, klicken auf Paint und beginnen wir
mit der rechten Nennen wir es Button. Für das Kostüm erstellen wir
ein nach rechts zeigendes Dreieck. Nehmen wir dazu zunächst
das Rechteckwerkzeug und wählen
für die Füllfarbe die Option für den horizontalen
Farbverlauf. Für die erste Farbe nehmen wir ein hellgraues Bild. Und für die zweite Farbe nehmen
wir reines Weiß. Als Nächstes geben
wir dem Umriss auch einen
horizontalen Farbverlauf. Verwenden wir reines Weiß für die erste Farbe und ein mittleres bis dunkles Grau
für die zweite Farbe. Dann setzen wir die
Umrissbreite auf fünf. Dadurch könnte aus irgendeinem Grund Umrissfarbe auf durchgehendes Schwarz
zurückgesetzt werden. Versuchen wir es also noch einmal. Wählen Sie die Option für den horizontalen
Farbverlauf, machen Sie die erste Farbe weiß und die zweite Farbe
mittel- bis dunkelgrau. Da haben wir's. Lassen Sie uns nun die Leinwand ein wenig vergrößern
, die Umschalttaste
gedrückt halten und
ein Quadrat mit einem Durchmesser von etwa neun
oder zehn Blöcken zeichnen . Als Nächstes greifen wir
zum Reshape-Tool und löschen den
unteren linken Knoten Dann nehmen wir das Auswahlwerkzeug und drehen es einmal
im Uhrzeigersinn,
während
wir Lass es uns auch zentrieren. Jetzt können wir zum
Reshape-Tool zurückkehren und die Ecken mit
der Methode für zusätzliche Knoten,
die
wir zuvor verwendet haben, abrunden Ecken mit
der Methode für zusätzliche Knoten,
die
wir zuvor verwendet haben Ich mache den auf
der rechten Seite etwas
runder als die anderen Und um das Problem zu beheben, dass die Ecken auf der Bühne
abgeschnitten werden, nehmen
wir das Rechteckwerkzeug geben ihm eine solide, transparente
Füllung und Kontur. Und lassen Sie uns ein unsichtbares
Rechteck um die Form herum erstellen. Okay, jetzt gehen wir
zur Registerkarte Code. Zu Beginn wollen wir
den Button richtig positionieren. Wir werden es horizontal auf
der Bühne zentrieren , wobei Y gleich Null ist, und es sieht so aus, als ob ein
X von 70 funktionieren sollte. Um also mit dem Programmieren des Sprites zu beginnen, gehen
wir zu den Ereignissen, fügen den
Block W I receive ein und erhalten den Titelbildschirm
anzeigen Dann gehen wir zur Bewegung über und fügen einen
Go-to-XY-Block hinzu. Dabei
stellen wir sicher, dass er auf
die gewünschte Position eingestellt ist Als Nächstes verstecken
wir, wie bei allen
anderen Sprites auf dem Titelbildschirm, das Sprite,
warten eine halbe Sekunde und blenden es
dann Außerdem werden
wir, wie bei
der Starttaste, dafür sorgen, dass die Pfeiltaste
größer wird, wenn der Spieler mit der
Maus darüber fährt, und schrumpft,
wenn er sich von ihr entfernt Wenn wir also in den Sprite-Code für die
Starttaste gehen, können
wir im Grunde dieselben Blöcke verwenden,
die wir auch im Skript zum Anzeigen des
Titelbildschirms verwenden, beginnend mit dem Block Ausblenden ,
natürlich mit ein paar Ausnahmen Machen wir also weiter
und duplizieren all
diese Blöcke, indem wir mit der rechten Maustaste auf den Block Ausblenden klicken und Duplizieren
auswählen legen wir sie
in einen leeren Bereich Wir brauchen nicht den ersten
Wenn-Dann-Block hier, um das Spiel zu
starten, also lasst uns ihn loswerden. Wir werden
den Helligkeitseffekt auch nicht ändern , wenn der Spieler den Mauszeiger über
die rechte Taste bewegt, sodass wir auch
die beiden eingestellten
Helligkeitseffektblöcke entfernen können die beiden eingestellten
Helligkeitseffektblöcke Dieser hier oben auch. Jetzt können wir das alles
in das Sprite mit der rechten Maustaste kopieren und dann von hier entfernen Wenn wir jetzt zum Code für
die rechte Schaltfläche zurückkehren, können
wir alle neuen Blöcke
an den unteren Rand des Skripts für den
Titelbildschirm der Show anhängen an den unteren Rand des Skripts für den
Titelbildschirm der Show Wenn das Spiel startet, wollen
wir außerdem alle laufenden Skripte im
Sprite stoppen und ausblenden Wenn wir zum
Logo-Sprite-Code wechseln, ist das genau
das, was
wir mit dem W
IRReceive-Startskript für
das Spiel tun W
IRReceive-Startskript für
das Also können wir das auch in das Sprite mit der
rechten Maustaste kopieren. Gehen Sie dann zurück zur
Sprite mit der rechten Maustaste und ordnen Sie die
Dinge ein wenig neu Und wenn wir das Spiel jetzt starten, die rechte Taste zusammen mit allem anderen
eingeblendet, sie wächst und schrumpft,
und wenn wir das
Spiel starten, Klicken wir
erneut auf die grüne Flagge , damit wir
den Titelbildschirm sehen können,
und jetzt arbeiten wir daran, die Schaltfläche
zu erstellen und das
Spielerkostüm
zu wechseln, wann immer wir darauf das
Spielerkostüm
zu wechseln, wann immer wir Dazu müssen wir
zunächst
eine globale Variable erstellen, eine globale Variable aktuelle Kostüm des
Spielers
verfolgen können. Gehen wir zu Variablen
und erstellen wir eine neue. Wir können es Spielerkostüm nennen und es für alle Sprites machen Und lassen Sie uns tatsächlich
eine weitere globale
Variable erstellen , damit die rechte und linke Taste wissen, zwischen
wie vielen Kostümen gewechselt
werden Nennen wir es die Gesamtzahl der
Spielerkostüme. Und klicken Sie auf Okay, und wir können weitermachen und beide Variablen
ausblenden. Also gut, wenn
wir zum Spieler
Sprite gehen und uns die Kostüme ansehen
, haben
wir derzeit vier
Raumschiff-Kostüme und ein Hit-Box-Kostüm und ein Hit-Box-Kostüm Wir
wollen
beim Umstieg natürlich nicht
das Hitbox-Kostüm mit einbeziehen , also können wir die Gesamtzahl der
Spielerkostüme auf vier setzen, wodurch die
Buttons wissen, dass sie nur die Kostüme
eins bis vier verwenden
sollen Okay, um das alles einzurichten, gehen
wir zum Sprite-Code des
Players Und hier starten wir ein Skript mit grüner
Flagge, indem wir zu den
Events gehen und einen Block mit
geklickter Flagge hinzufügen Kehren wir nun zu den Variablen zurück und fügen wir dem Skript mit der grünen Flagge zwei Blöcke hinzu Wir starten den Spieler
Sprite auf Kostüm eins. Sie uns also für den ersten Block mit zwei Lassen Sie uns also für den ersten Block mit zwei Sätzen das Spielerkostüm auf eins setzen Und für den zweiten Block setzen
wir die Gesamtzahl der
Spielerkostüme auf vier. Außerdem müssen wir das Kostüm
der Sprites tatsächlich
auf Kostüm eins setzen der Sprites tatsächlich
auf Kostüm eins Gehen wir also zu Looks, bringen einen Switch-Kostümblock und wir können entweder Kostüm eins aus
der Liste hier
auswählen oder, um es klarer zu
machen, gehen
wir zu Variablen und
fügen einen Spielerkostümblock Jetzt müssen wir einige
Dinge in den anderen Skripten korrigieren. Zum Beispiel müssen
wir im Startspiel nicht mehr
das Kostüm wechseln , damit wir diesen Block
entfernen können. Und hier in
Definiere den Treffer markieren, nachdem wir
zum Hit-Box-Kostüm gewechselt haben, wollen
wir,
anstatt
zum ersten Kostüm zu wechseln, zur Kostümvariablen
später Lassen Sie uns also zu
jedem Block von „
Kostüm zu Kostüm wechseln“ einen
Plater-Kostümblock hinzufügen jedem Block von „
Kostüm zu Kostüm wechseln“ einen
Plater-Kostümblock Als Nächstes aktualisieren
wir, wenn der Spieler
entweder auf die rechte oder linke Taste klickt , die Variable für das
Spielerkostüm und senden
die Nachricht, um
dem Spieler-Sprite mitzuteilen, dass er zu einem
anderen Kostüm wechseln
muss Lass uns weitermachen und uns darum kümmern die Nachricht
und den Spieler-Sprite zu
erhalten Um das zu tun, können wir zu
Events gehen und den Block W I receive und uns eine neue Nachricht schicken, die wir Spielerkostüm
wechseln nennen können Und vorerst können wir einfach ein Duplikat des
Blocks „Kostüm wechseln“ zum
Spielerkostüm aus
dem Green Flag-Skript
hinzufügen Kostüm wechseln“ zum . Lassen Sie uns nun den Code
für das Sprite mit der rechten Maustaste fertigstellen. Und hier, wenn der Spieler auf
den Sprite klickt , wollen wir die Variable für
das Spielerkostüm erhöhen und die Wechseln des
Spielerkostüms
senden Lassen Sie uns also zuerst einen Gewinn für
diesen Block erzielen, auf den Sprite geklickt hat. Und wir werden tatsächlich
einen benutzerdefinierten Block erstellen , um das Kostüm zu
wechseln Gehen wir also zu Meine Blöcke
und erstellen einen neuen. Wir können es
Spielerkostüm wechseln nennen und auf Okay klicken. Bringen wir den Block mit dem definierten Spielerkostüm hierher
und fügen wir
einen
Block zum Wechseln des Spielerkostüms hinzu,
um zu gewinnen, dass dieser Geist geklickt hat Als Nächstes gehen
wir im Skript zum Ändern des
Spielerkostüms zu den Variablen, fügen eine Änderung pro Block ein und lassen uns das
Spielerkostüm nacheinander ändern Jetzt müssen wir auch überprüfen, ob Spielerkostüm größer ist
als die Gesamtzahl der Spielerkostüme, und wenn ja,
setzen wir es wieder auf eins zurück. Gehen wir also zur Kontrolle über, bringen einen Wenn-Block rein. Und was die Bedingung angeht, gehen
wir zu den Operatoren und fügen einen
„Größer als“ -Block hinzu. Gehen wir dann zurück zu den Variablen
und überprüfen wir, ob das Spielerkostüm größer
ist als die Gesamtzahl der
Spielerkostüme. Falls ja, lassen Sie uns ein Set zum Blockieren hinzufügen und das
Spielerkostüm auf eins setzen. Schließlich müssen
wir nach dem ITN-Block zu Veranstaltungen gehen, einen Übertragungsblock einbauen und das
Spielerkostüm wechseln Lassen Sie uns auch
die Button-Sprites flashen lassen, indem wir sie kurz heller machen Dazu können wir zu Looks gehen, einen festgelegten Effekt zum Blockieren und den
Helligkeitseffekt
auf einen ziemlich
hohen Wert wie 70 einstellen auf einen ziemlich
hohen Wert wie 70 Dann gehen wir zur Steuerung, fügen einen Warteblock hinzu und warten für einen sehr kurzen Zeitraum von
etwa 0,1 Sekunden. Danach entfernen wir
den Helligkeitseffekt, indem wir zu Los zurückkehren, einen weiteren
eingestellten Effekt zum Blockieren hinzufügen und die Helligkeit auf Null setzen. Wenn wir das Spiel jetzt starten auf die rechte Taste klicken, blinkt
es und das
Sprite des Spielers wechselt
zum nächsten Und wenn wir das Spiel starten, benutzt
der Spieler-Sprite
weiterhin das Auch wenn wir sterben und
der Titelbildschirm wieder angezeigt wird, wird immer noch das
gewählte Kostüm verwendet Okay. Und nur so zum Spaß, lass es uns auch so machen, dass durch Drücken der Rechtspfeiltaste das Kostüm
gewechselt wird. dazu im
Block „Für immer“ des Titelbildschirms anzeigen Gehen
wir dazu im
Block „Für immer“ des Titelbildschirms anzeigen zu „Steuerung“ und fügen dort
einen ITN-Block ein Gehen
wir für den Zustand zur Erkennung über, Block mit gedrückter Taste ein und stellen ihn auf Taste mit gedrücktem
Rechtspfeil Und wenn ja, können wir
das Spielerkostüm ändern, indem wir
zu den M-Blöcken gehen und dort einen Block zum Wechseln des
Spielerkostüms einfügen. Wenn wir das Spiel jetzt starten, können
wir auch
die Rechtspfeiltaste drücken , um das Kostüm zu
wechseln. Im Moment kannst du das
Kostüm jedoch du die
rechte Pfeiltaste
gedrückt hältst kontinuierlich und sehr schnell wechseln, wenn du die
rechte Pfeiltaste
gedrückt hältst. Wenn wir nicht wollen, dass das passiert, können
wir es so einrichten, dass der Block zum Wechseln des
Spielerkostüms hier erst ausgeführt wird, nachdem der Spieler
die rechte Pfeiltaste losgelassen hat. Gehen wir dazu zu
Steuerung und fügen direkt vor dem Block „Spielerkostüm
wechseln“ den Block „Warte bis“ hinzu. Für die Bedingung gehen wir zu den Operatoren und bringen einen
Knotenblock rein Dann können wir den Block,
der mit der rechten Maustaste
gedrückt wurde,
hier duplizieren Block,
der mit der rechten Maustaste
gedrückt wurde und
zum Knotenblock hinzufügen Wenn wir es noch einmal versuchen, bringt es jetzt nichts, die rechte
Pfeiltaste
gedrückt zu Aber sobald wir
es veröffentlichen, ändert sich das Kostüm. Ordnung, wir sind jetzt fertig mit dem Sprite mit der rechten Maustaste Für die linke Taste können
wir mit
ein paar kleinen
Änderungen so ziemlich dasselbe Sprite verwenden mit
ein paar kleinen
Änderungen so ziemlich dasselbe Sprite Lassen Sie uns also zuerst den Sprite mit
der rechten Taste duplizieren und diesen
einen Linksknopf nennen Gehen wir nun zur Registerkarte
Kostüme und wählen mit dem Auswahlwerkzeug alles im
Kostüm aus und drehen
es horizontal um Als Nächstes möchten
wir auf der Registerkarte Code die linke Taste auf
der gegenüberliegenden Seite der
Bühne als rechte Taste platzieren . Und das können wir ganz einfach tun, indem den X-Wert in
den Skripten mit grüner Flagge
negieren Gehen Sie zum XY-Block Anstatt nun nach der
rechten Pfeiltaste zu suchen, wollen
wir in diesen
beiden Blöcken nach
der linken Pfeiltaste suchen in diesen
beiden Blöcken nach
der linken Pfeiltaste Jetzt müssen wir ein paar Änderungen
vornehmen und das Kostüm für
Change-Spieler definieren. Zunächst wollen wir Plater-Kostüm durch
ein negatives statt durch eins ersetzen Als Nächstes wollen
wir überprüfen, ob das
Spielerkostüm größer
als die Gesamtzahl der Spielerkostüme ist, sondern Spielerkostüm größer
als die Gesamtzahl der Spielerkostüme ist, ob
es weniger als eins ist, und wenn ja, setzen wir es auf den Wert der gesamten
Spielerkostüme Lassen Sie uns
hier den Block mit der Gesamtzahl der
Spielerkostüme herausziehen und ihn zum Block mit den
Spielerkostümen hinzufügen. Dann ziehen wir den Block mit dem
Spielerkostüm heraus und legen ihn zur Seite Lassen Sie uns dann den Block „Größer
als“ durch einen Block mit
weniger als ersetzen . Und lassen Sie uns überprüfen, ob es
weniger als ein
Spielerkostüm gibt , und
das sollte es sein. Lass es uns versuchen. Jetzt können wir mit beiden Tasten zwischen
den
Kostümen
hin und her wechseln . Ziemlich genial. Eine weitere Sache, die wir tun können
, damit es ein bisschen
besser aussieht , ist das Spieler-Sprite
auszublenden und nach oben zu bewegen und dann mit dem neuen Kostüm von
unten wieder einzublenden Dadurch wird es so aussehen, als würde das alte Raumschiff
wegfliegen und das neue einfliegen Gehen wir dazu in
den Sprite-Code des Players. Und wenn ich das Spielerkostüm
wechseln erhalte, ziehen
wir
für den Moment den
Switch-Kostümblock heraus und legen ihn zur Seite Gehen wir nun zur Steuerung und fügen dem Skript einen
Wiederholungsblock hinzu. Wir wollen, dass das ziemlich schnell
passiert. Also lass uns das nur viermal wiederholen. Jetzt bewegen wir das Sprite bei jeder Wiederholung ein wenig nach
oben, indem zur Bewegung
übergehen und eine
Änderung Y um zehn Blöcke einfügen Dann blenden wir das Sprite
aus, indem wir zu Los gehen, Wiederholungsblock einen blockweisen Änderungseffekt
hinzufügen
und den
Ghost-Effekt um 25 ändern Danach
wechseln wir das Kostüm. Lass uns den
Switch-Kostümblock hier am Ende
des Drehbuchs platzieren. Dann müssen wir die
Y-Position der Sprites so einstellen , dass sie unterhalb
der Bühnenmitte liegt Das Sprite beginnt in
der Mitte mit einem Y von Null und wir bewegen es viermal um zehn Schritte
nach oben Das bedeutet, dass es am
Ende ein Y von 40 hat. Damit die Animation richtig
aussieht, müssen
wir nur
die Y-Position auf
minus 40 setzen , bevor wir
sie wieder auf Null bewegen. Gehen wir also zur Bewegung über, bringen einen Y-Block mit zwei Sätzen
hinein und setzen ihn auf minus 40. Schließlich machen wir
die gesamte Animation noch einmal, außer dass wir das Sprite
einblenden Lassen Sie uns also
den Wiederholungsblock duplizieren und am unteren Rand platzieren, und wir können
die beiden unteren Blöcke loswerden Lassen Sie uns für diesen Fall
den Ghost-Effekt um minus 25 ändern . Okay, lass es uns versuchen. Sehr cool. In Ordnung. Als Nächstes verfolgen
wir den Highscore
des Spielers und zeigen ihn unten
links auf dem Titelbildschirm an.
60. Den Highscore nachverfolgen: Um einen Highscore zu implementieren, erstellen
wir eine globale
Variable, um den Überblick zu behalten. Und während des Spiels vergleichen
wir kontinuierlich den Highscore
mit dem aktuellen Punktestand des Spielers. Wenn ihr aktueller Punktestand
höher als der Highscore ist, wird der aktuelle Punktestand
zum neuen Highscore und wir zeigen den Highscore unten links
auf dem Titelbildschirm an. Okay,
lassen Sie uns zunächst zu Variablen gehen
und eine neue erstellen. Wir können es Highscore nennen
und es für alle Sprites machen. Und vorerst werden wir
die Variablen weiterhin auf der Bühne zeigen Als Nächstes gehen
wir
zum Einstellen des Highscores zum Code
für den Hintergrund. Und wenn ich „Spiel starten“ erhalte, überprüfen
wir kontinuierlich, ob Punktzahl höher
als die Höchstpunktzahl ist, und wenn ja, setzen wir die
Höchstpunktzahl auf Punktzahl. Ordnung. Gehen
wir also zuerst zu Control und fügen am Ende des Skripts einen Forever-Block hinzu
,
dann fügen wir dem Forever-Block einen ITN-Block
hinzu Gehen wir für die Bedingung zu Operatoren und fügen einen Block größer als
ein Gehen wir dann zu Variablen
und überprüfen wir, ob die Punktzahl
höher als die Höchstpunktzahl ist. Wenn ja, lassen Sie uns einen Satz zum
Blockieren hinzufügen und den
Highscore zum Punktestand setzen. Wenn wir das Spiel jetzt ausführen, beginnt
der Highscore bei Null, und wenn wir Punkte erzielen, wird
der Highscore auf
den gleichen Wert wie der Punktestand gesetzt. Wenn wir jedoch sterben, wird der
Highscore nicht auf Null zurückgesetzt. Und wenn wir das Spiel erneut starten, bleibt
der Highscore derselbe, bis der aktuelle
Punktestand höher wird. Ordnung, jetzt, wo wir wissen, dass
der Highscore funktioniert, werden
wir ihn unten
links auf dem Titelbildschirm anzeigen. Dafür
haben wir zuerst einen Text mit der Aufschrift Highscore, und daneben
verwenden wir Ziffern, um
den tatsächlichen Highscore anzuzeigen den tatsächlichen Highscore wie wir es mit
dem normalen Punktestand tun. Okay? Lassen Sie uns also zunächst ein neues Sprite für den Text
erstellen, indem wir auf
die Schaltfläche „Sprite auswählen“ gehen und Farbe
auswählen, und wir können es Highscore-Text
nennen Für das Kostüm nehmen wir uns
das Textwerkzeug, wählen Weiß als Füllfarbe,
vergrößern die Leinwand
und erstellen einen Text mit der
Aufschrift „Highscore-Doppelpunkt Jetzt können wir uns das SleckTol schnappen und den Text
im Canvas-Bereich zentrieren Und ich finde, es sieht in der aktuellen
Größe ziemlich gut aus. Ordnung, jetzt können wir
das Sprite an die gewünschte Stelle
unten
links auf der Bühne verschieben gewünschte Stelle
unten
links auf der Dann gehen wir zum Code-Tab. Alles, was wir mit
dem
Highscore-Text-Sprite tun müssen , ist, ihn
einzublenden wenn der Titelbildschirm
erscheint , und ihn auszublenden,
wenn das Spiel startet, genau wie wir es mit
den anderen Titelbildschirm-Sprites tun den anderen Titelbildschirm-Sprites Gehen wir also zunächst auf den
Code für die Logo-Sprites ein. Von hier aus können wir den Bildschirm „Wenn ich den Titel erhalte“ und
„Wenn
ich das
Startspiel erhalte“ -Skripte in das
Highscore-Text-Sprite
kopieren Bildschirm „Wenn ich den Titel erhalte“ und
„Wenn
ich Startspiel erhalte “ -Skripte in das
Highscore-Text-Sprite Für das Skript mit
dem Titelbildschirm werden
wir jedoch den
Winkel des Highscore-Textes nicht ändern, sodass wir weder den eingestellten
Winkelblock noch die Forever-Schleife benötigen Zuerst können wir die
Blöcke vom Skript lösen,
dann das
verbleibende Skript in
das Highscore-Text-Sprite kopieren das Highscore-Text-Sprite und die Blöcke
wieder an das Skript anhängen Und wir können das
gesamte
Startskript des Spiels so kopieren , wie Jetzt können wir zum
Highscore-Tech-Sprite gehen und die Skripte ein wenig neu anordnen Und wenn ich den Bildschirm mit dem
Titel anzeigen erhalte, wollen wir natürlich nicht 0100 als Position
des Sprites verwenden also im Block Gehe zu XY Lassen Sie uns also im Block Gehe zu XY die aktuellen
X- und Y-Eingaben durch die X- und Y-Positionswerte
für
das Highscore-Text-Sprite ersetzen und Y-Positionswerte
für
das Highscore-Text-Sprite Ich verwende negative 175 für
X und negative 160 für Y. Da wir das Sprite nicht
drehen werden, ist der Block mit
dem Punkt in Richtung 90 unnötig, sodass wir ihn entfernen
können, wenn Und das war's für den
Highscore-Tech-Sprite. Wenn wir das Spiel jetzt starten, wird es zusammen mit den anderen Sprites auf dem
Titelbildschirm eingeblendet, und wenn wir auf
Start klicken, wird es Okay, jetzt arbeiten wir an
den Highscore-Zahlen. Um uns das Leben zu erleichtern, können
wir damit beginnen,
die Punkteziffer Sprite zu duplizieren Und lassen Sie uns den Namen
dieser Ziffer in Highscore-Ziffern ändern dieser Ziffer in Highscore-Ziffern Um das Sprite zu positionieren, gehen
wir
ganz schnell zum
Highscore-Text-Sprite und zeigen
es auf der Bühne Gehen wir dann zurück
zur
Highscore-Ziffer Sprite und
zeigen sie Wenn du den Sprite immer noch nicht
siehst, benutzt
er wahrscheinlich
das leere Um es zu sehen,
musst du nur zur
Registerkarte Kostüme gehen und eines
der nicht leeren Kostüme auswählen Okay? Gehen wir jetzt
zurück zum Code-Tab. Die Größe des Sprites
ist etwas zu groß, also ändern wir sie auf
etwa 60% Dann können wir es verschieben, sodass es sich direkt rechts neben dem
Highscore-Text befindet Jetzt können
wir im Block „Gehe zu XY“
des Skripts mit grüner Flagge die aktuelle
Position der Sprites als Eingaben verwenden Für X verwende ich negative
105 und negative 160 für Y, was dieselbe Y-Position ist, die ich für den Text mit
hohem Quadrat verwende Als Nächstes ändert sich der Highscore im Gegensatz zum Punktestand nicht, während wir ihn anzeigen, sodass wir nicht
ständig die
Belichtung oder das Kostüm der
einzelnen Ziffern einstellen müssen Belichtung oder das Kostüm der
einzelnen Ziffern Stattdessen können wir bei der Erstellung der Klone
die Belichtung festlegen und
die Kostüme genau dann einstellen
, wenn Klone
die Belichtung festlegen und
die Kostüme genau dann einstellen der
Titelbildschirm erscheint Wir werden die
Größe kontinuierlich anpassen, sodass die Ziffern
zunächst etwas größer sind und dann auf ihre normale Größe
verkleinert werden,
was ziemlich cool aussehen wird, aber wir werden das nur tun, solange
der Titelbildschirm Wenn ich also als Klon anfange, speichern
wir die Änderung der Größe Block und die Änderung des
Kostüms für Dann können wir den
Rest der Forever-Schleife loswerden,
sodass nur die Gesamtsumme des
Change-Clones um einen Block und der Show-Block innerhalb des When
I Starte AS-Clone-Skripts übrig bleibt. nun die
Darstellung der einzelnen Klone festzulegen, tun
wir dies im
Wiederholungsblock des Skripts mit grüner Flagge indem wir das Sprite
nach der Erstellung jedes Klons ein
wenig nach rechts bewegen Erstellung jedes Klons ein
wenig nach Gehen wir also zur Bewegung über, fügen am Ende
des
Wiederholungsblocks eine Änderung x für Block und ändern wir sie um 15. Als Nächstes werden wir
jedes Mal, wenn der
Titelbildschirm angezeigt wird, die
Kostüme für jeden Klon festlegen,
da der
Highscore unterschiedlich sein kann jedes Mal, wenn der
Titelbildschirm angezeigt wird, die
Kostüme für jeden Klon festlegen, . Um das zu tun, gehen wir
zunächst zu den Events starten ein neues „Wenn ich erhalte -Skript und erhalte den Titelbildschirm
anzeigen. Und hier warten wir eine
kurze Zeit und wechseln
dann das Kostüm. Gehen wir also zu Control und fügen
einen Warteblock hinzu und warten wir 0,75 Sekunden. Dann können wir den Block für
Wechselkostüme einfügen , den wir hier gespeichert haben Anstatt die
Punktevariable zu verwenden, möchten
wir jedoch den Highscore verwenden,
sodass wir mit zu verwenden, möchten
wir jedoch den Highscore verwenden, der rechten Maustaste auf
den Punkteblock klicken und ihn in Highscore
ändern können . Außerdem möchten wir
die Größe kontinuierlich auf den
Standardwert 60 setzen ,
solange der Titelbildschirm angezeigt wird weil wir die
Ziffern zunächst etwas größer ansetzen und sie
dann verkleinern Und wir wollen nicht warten müssen,
bevor wir das tun, also müssen wir
es separat machen wenn ich das
ShowTitle-Bildschirmskript erhalte Gehen wir also zu den Events und
bringen ein weiteres hinzu, wenn ich den Block erhalte und den Bildschirm mit dem Titel anzeigen
erhalte Dann gehen wir zur Steuerung und fügen
einen Block für immer ein. Und jetzt können wir die
Änderungsgröße für Block abrufen, die
wir hier gespeichert haben, und
sie dem Forever-Block hinzufügen. Im Moment wird
der Block die Größe jedoch wieder auf 100%
bringen. Lassen Sie uns also die
100 hier auf 60 ändern. Außerdem ist es im Drehbuch zum
Kostümwechsel ein bisschen viel, die Größe von 160 auf 60 zu
reduzieren. also im Block mit der eingestellten Größe hier Lassen Sie uns also im Block mit der eingestellten Größe hier die 160 durch 90 ersetzen. Wenn wir das Spiel jetzt starten, sehen
wir derzeit alle
Ziffernklone, und nur der erste zeigt tatsächlich
die richtigen Ziffern Das passiert, weil
wir die Klone über
sieben Wiederholungen
des Wiederholungsblocks
im Green Flag-Skript erstellen sieben Wiederholungen
des Wiederholungsblocks im Green Und wie wir bereits gelernt haben, jede Wiederholung in einem separaten Frame
statt Und weil der Hintergrund
die Nachricht auf
dem Titelbildschirm überträgt Nachricht auf
dem Titelbildschirm wenn auf die grüne Flagge geklickt wird, hat
Sprite, wenn die Highscore-Ziffer die Nachricht empfängt, eigentlich nur den ersten Klon
erstellt Das bedeutet, dass nur der erste
Klon die Möglichkeit hat, die Skripte für
den Titelbildschirm der Show auszuführen Skripte für
den Titelbildschirm der Show und zum
richtigen Kostüm zu wechseln Um dieses Problem zu beheben, benötigen wir
den Wiederholungsblock um all seine Wiederholungen in einem
einzigen Frame auszuführen können wir mit
einem benutzerdefinierten Block mit
der Funktion „Ohne
Bildschirmaktualisierung ausführen“ tun einem benutzerdefinierten Block mit der Funktion „Ohne
Bildschirmaktualisierung ausführen Gehen wir zu Meine Blöcke
und erstellen einen neuen. Wir können es Create Clones nennen. Stellen Sie sicher, dass die Option
Ohne Bildschirmaktualisierung ausführen aktiviert ist,
und klicken Sie auf Okay Lassen Sie uns den definierten Block
Create Clones
in einen leeren Bereich verschieben in einen leeren Bereich Dann verschieben wir den
Wiederholungsblock aus dem der grünen Flagge in
das Skript Create Clone
und fügen am Ende des Skripts mit der
grünen Flagge einen Block
zum
Erstellen von Klonen mit der
grünen Flagge einen Block
zum
Erstellen von Lassen Sie uns auch den
eingestellten Index vom
Skript mit der grünen Flagge auf einen Block verschieben , und zwar an den Anfang
definierter Create Clones, wo
es etwas sinnvoller Wenn wir das Spiel jetzt starten, sehen
wir nur die
richtige Anzahl von Ziffern und sie
zeigen den Highscore korrekt Wenn wir jedoch sehr schnell
zum Kostüm-Tab
wechseln, zu einem der nicht leeren
Kostüme wechseln und das Spiel starten, sehen
wir kurz wieder alle
Ziffernklone. Um sicherzustellen, dass
das nicht passiert, müssen
wir nur
dafür sorgen, dass alle Klone
zunächst
das leere Kostüm verwenden Um das im Create Clone
Script zu tun, gehen wir zu Looks, fügen oben im Script einen Block
für das Wechselkostüm und wechseln dann zum Ziffernkostüm Wenn wir nun
erneut manuell zu
einem anderen Kostüm wechseln und das Spiel starten, werden
uns nicht alle
zusätzlichen Ziffern angezeigt. Wenn wir
jedoch auf die Starttaste klicken , verschwinden die
Highscore-Ziffern nicht. Um das Problem zu beheben, müssen
wir zu Beginn des Spiels die Kostüme
wieder auf das leere Kostüm umstellen. Um das zu tun, gehen
wir zurück im Code zuerst zu den Events und ein weiteres hinzu
, wenn
ich einen Block erhalte, und wir erhalten die Nachricht, dass das Spiel
gestartet wird. Und hier können
wir nicht nur das Kostüm
wechseln, sondern auch
die anderen Drehbücher beenden. Damit der Forever-Loop
im zweiten
Titelbildschirm der Show nicht
unnötig weiterläuft Okay? Gehen wir also zur Steuerung, fügen einen Stopblock
hinzu, wenn ich „Spiel
starten“ erhalte , und beenden wir andere
Skripte und Sprites Und jetzt können wir
zu Looks gehen,
einen Switch-Kostümblock reinbringen und zum Ziffernkostüm
wechseln Dadurch
verschwinden die Ziffern kurz vor
Spielbeginn. Wenn wir möchten, dass sie
verschwinden , sobald wir
auf die Start-Schaltfläche klicken, anstelle der
Startnachricht hier können
wir
anstelle der
Startnachricht hier die Nachricht zum
Starten des Spiels erhalten. Ich denke, das sieht ein bisschen besser aus. Eine Möglichkeit,
die Highscore-Anzeige zu verbessern besteht
jedoch darin, dass nicht
alle Ziffern gleichzeitig angezeigt werden, sondern nicht
alle Ziffern gleichzeitig angezeigt werden, wir dafür eine kleine Verzögerung
zwischen den einzelnen Ziffern hinzufügen können. Und wenn ich den Titelbildschirm der
Sendung erhalte, nachdem ich 0,75 Sekunden gewartet und bevor ich das Kostüm gewechselt habe, können
wir den aktuellen Indexwert des
Klones verwenden , um das Ganze
etwas länger warten zu lassen Gehen wir dazu zu Control und fügen
nach dem ersten einen weiteren Warteblock Für die Gewichtungszeit
wollen wir den
Indexwert des Klones nehmen und ihn mit
einem anderen kleinen Wert multiplizieren Gehen wir zu den Operatoren und fügen zweiten Gewichtsblock
einen Multiplikationsblock hinzu Gehen wir dann zu Variablen
und machen wir Index mal 0,1 Je höher
der Klonindex ist, desto länger wartet er,
bis er auftaucht Wenn wir das Spiel jetzt starten, tauchen
die Ziffern
nacheinander auf Um das noch besser zu sehen, bringen
wir einen Satz zum Blockieren
in ein leeres Feld und setzen den Highscore auf und setzen den Highscore auf
etwas mit vielen
Ziffern wie eins, zwei, drei, vier, fünf, sechs. Klicken wir auf den Block,
um die Variable zu setzen, und wenn wir jetzt das Spiel starten, können
wir sehen, dass alle sechs Ziffern nacheinander
auftauchen. Das sieht ziemlich
toll aus. In Ordnung, ich setze den Highscore auf Null und werde den
Highscore-Block los. Und eine weitere Verbesserung, die
wir vornehmen können, ist wenn der Spieler stirbt, nachdem er einen neuen Highscore
erreicht hat, wir können einen Text auf
dem Bildschirm aufrufen, der so etwas
wie ein neuer Highscore sagt. Dazu müssen wir zunächst ein neues Sprite
für den Text
erstellen Gehen wir also zur Schaltfläche „Sprite
auswählen“, klicken auf Paint und nennen wir
es NWHigh Für das Kostüm verwenden wir weißen
Text. Damit es auf der Leinwand besser
zu erkennen ist, greifen
wir zunächst zum Rechteckwerkzeug, wählen eine zufällige
Füllfarbe und keinen Umriss und erstellen
dann ein großes Rechteck, erstellen
dann ein großes Rechteck das den
Bühnenbereich der Leinwand
abdeckt. Nehmen wir nun das Textwerkzeug. Wählen Sie Weiß als Füllfarbe. Und erstelle etwas Text. Wir möchten, dass im Text in zwei separaten Zeilen ein
neuer Highscore steht. Wenn wir jedoch die Eingabetaste drücken, um zur nächsten Zeile zu
wechseln
und mit der Eingabe zu beginnen, der Text nicht zentriert. Anstatt also ein
Textobjekt mit zwei Zeilen zu erstellen, erstellen
wir für jede Zeile ein separates
Textobjekt. Okay, für den ersten geben
wir also new high ein. Nehmen wir nun das Auswahlwerkzeug
und zentrieren Sie den Text
im Canvas-Bereich. Dann fangen wir an, es nach oben zu bewegen, und wenn wir die Umschalttaste gedrückt halten, können
wir es
vertikal zentriert halten. Als Nächstes klicken
wir bei
gedrückter Alt- oder Wahltaste auf den
Text und ziehen ihn erneut, um eine Kopie zu erstellen, und verschieben diese dann
ein wenig nach unten. dann mit dem Textwerkzeug den Text dieses Textes
so ändern, Lassen Sie uns dann mit dem Textwerkzeug den Text dieses Textes
so ändern, dass er eine Punktzahl ergibt. Jetzt können wir das Auswahlwerkzeug nehmen
und das Textobjekt zentrieren. Und bei Bedarf können wir den Aufwärts- und Abwärtspfeiltasten die Positionierung ein wenig anpassen. Wählen wir nun
beide Textobjekte und zentrieren wir die
Auswahl im Canvas-Bereich. dann bei
gedrückter Alt- oder Wahltaste Lassen Sie uns sie dann bei
gedrückter Alt- oder Wahltaste etwas vergrößern. Als Nächstes geben wir den
Textobjekten einen schwarzen Schlagschatten. Um dies zu tun, während beide
Objekte noch ausgewählt sind, kopieren
wir sie und fügen sie ein. Geben wir den Kopien
eine schwarze Füllfarbe. Lege sie etwas nach unten
und rechts neben
die Originale und klicke ein paar
Mal auf die Rückwärts-Schaltfläche , um sie
unter die Originale zu legen Und jetzt können wir das Rechteck
loswerden. Okay? Gehen wir jetzt
in den Code-Tab. Wir wollen sicherstellen, dass
das Sprite nicht auftaucht, wenn wir das Spiel
zum ersten Mal starten Gehen wir also zu den Events und
starten wir ein Green Flag-Skript. Und hier, lass uns zu Looks gehen
und einen Versteckblock reinbringen. Und vergewissere dich, dass das Sprite mittig auf
der Bühne steht Gehen wir also zur Bewegung über,
setzen einen
Go-to-XY-Block ein und fahren wir mit 00 fort Okay, jetzt zum
Sprite: Der
Hintergrund überträgt die Nachricht, Hintergrund überträgt die wenn
der Spieler gestorben ist und
einen neuen Punktestand erreicht
hat, und der
neue Highscore-Sprite empfängt die Nachricht und verschwindet
auf der Bühne Um das zu tun, gehen wir zu den Events
und fügen einen Block hinzu, wann
ich ihn erhalten habe Lass uns eine neue Nachricht erhalten, die wir als
neuen Highscore bezeichnen können. Hier wollen
wir zuerst den Sprite zeigen. Gehen wir zu Looks und
bringen einen Showblock rein. Wir wollen auch, dass es
auf der vorderen Ebene ist. Lassen Sie uns einen Block mit dem Titel „Go
to Front Layer“ einfügen. Als Nächstes blenden wir das Sprite ein, was bedeutet, dass wir
es zunächst transparent machen müssen Lassen Sie uns einen festgelegten Effekt zum
Blockieren hinzufügen und den
Ghost-Effekt auf 100 setzen Gehen wir nun zur Steuerung und
fügen eine Wiederholung mit zehn Blöcken ein. Lassen Sie uns abschließend zu Looks zurückkehren, Wiederholungsblock einen blockweisen Änderungseffekt
hinzufügen und
den Ghost-Effekt
um minus zehn ändern . Im
Moment funktioniert das alles aber nicht, weil der Hintergrund die neue
Highscore-Nachricht noch nicht überträgt. Gehen wir zum Hintergrundcode. Wenn ich Spielerdaten erhalte, wollen
wir die
neue Highscore-Nachricht senden, aber wir wollen das nur tun, wenn der Spieler tatsächlich einen neuen Highscore
erreicht hat Das bedeutet, dass wir verfolgen
müssen,
ob der Spieler einen neuen Highscore
erreicht hat oder nicht, was wir
mithilfe einer Variablen tun können Gehen wir zu Variablen
und erstellen wir eine neue. Wir können es neuen Highscore nennen. Und wir müssen die Variable nicht
zeigen. Wir wollen einen neuen Highscore setzen, jedes Mal
fällt, wenn der
Spieler ein neues Spiel startet. also vor dem Block für immer und wenn ich das Startspiel erhalte, Lassen Sie uns also vor dem Block für immer
und wenn ich das Startspiel erhalte, einen Satz zum Block und den neuen Highscore auf „Fallen“ setzen. Als Nächstes wollen
wir, wann immer der Spieler einen neuen Highscore
erreicht hat, die
Variable auf true setzen. Das passiert innerhalb
des Forever-Blocks immer dann, wenn der Punktestand
höher als der Highscore ist. Fügen wir
hier einen Block mit zwei Sätzen
zum Wenn-Dann-Block hinzu und setzen wir den neuen
Highscore auf true. Und wenn ich die
Spielernummer erhalte, bevor ich
irgendwas anderes mache, überprüfen
wir, ob der Spieler einen neuen Highscore
erreicht hat, und wenn ja, senden wir
die neue Highscore-Nachricht Gehen wir also zuerst zur Steuerung und bringen einen Wenn-Dann-Block
in ein leeres Feld Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen wir dann zu Variablen
und überprüfen wir, ob der neue
Höchstwert gleich wahr Wenn ja, gehen wir zu Events,
fügen einen Broadcast-Block hinzu
und übertragen einen neuen Highscore Lassen Sie uns nun den ITN-Block
an den Anfang des Skripts „Der
Spieler ist gestorben“ setzen an den Anfang des Skripts „Der
Spieler ist gestorben“ Im Moment wird
dies jedoch dazu führen, dass der
neue Highscore-Text erscheint,
sobald der Spieler stirbt Um ein bisschen zu warten, bevor der Text
angezeigt wird, kehren
wir zu den
neuen Highscore-Sprites zurück Und wenn ich einen
neuen Highscore erhalte, gehen
wir zu Control und fügen ganz oben im Skript
einen Block mit einer Wartezeit von 1 Sekunde Okay? Wenn wir jetzt das Spiel starten, ein paar
Punkte sammeln
und vernichtet werden. Nach einer Sekunde teilt es uns mit, dass
wir einen neuen Highscore erreicht haben. Wenn der
Titelbildschirm jedoch wieder angezeigt wird, verschwindet
der Text nicht. Um das zu beheben, müssen wir
das neue Highscore-Sprite
immer dann ausblenden das neue Highscore-Sprite , wenn der
Titelbildschirm angezeigt wird Um das zu tun, gehen wir zu den Ereignissen, starten ein neues, wenn ich ein
Skript erhalte und erhalte den Titelbildschirm
anzeigen Jetzt müssen wir nur noch zu
Looks gehen und einen Versteckblock einfügen. Jetzt sollte der neue
Highscore-Text verschwinden, sobald der
Titelbildschirm wieder angezeigt wird. Ordnung, jetzt, wo wir wissen, dass die Highscore-Anzeige
korrekt funktioniert, können
wir zu Variablen gehen und die Highscore-Variable
ausblenden. Wir werden dem Spiel auch keine
weiteren Klone hinzufügen,
sodass wir auch die Variable für die
Gesamtanzahl der Klone ausblenden können Okay? Und in der nächsten Lektion werden
wir das Spielfeld
um
einiges verbessern, indem wir einige
Soundeffekte und Musik hinzufügen.
61. Sounds und Musik hinzufügen: Für alle Soundeffekte
und Musik, die wir in diesem Spiel
verwenden werden, habe ich eine Zip-Datei als
herunterladbare Ressource bereitgestellt , die alle Audiodateien
enthält. Nachdem wir
die Zip-Datei auf unseren
Computer heruntergeladen und entpackt haben , können
wir die
Dateien dann in unserem Projekt verwenden Gehen wir dazu zunächst
zum Player Sprite. Gehen wir dann zur Registerkarte Sounds. Wir können das Miaugeräusch löschen, da wir es
natürlich nicht benötigen
werden Gehen wir dann zur Schaltfläche
„Sound auswählen “ und
klicken Sie auf Sound hochladen Und navigieren Sie zu dem Ort , an dem wir die Audiodateien entpacken Das Spieler-Sprite
verwendet zwei Sounds den Lasersound beim Abfeuern
eines Lasers und den Wish-Sound, auf
dem Titelbildschirm abgespielt wird wenn der Spieler
zwischen den Kostümen wechselt Laden wir also zuerst die Laser-WAV-Datei hoch, indem wir
sie auswählen und auf Öffnen klicken Lassen Sie uns dann den
Datei-Upload-Dialog
wieder aufrufen und auch Woosh Dot WAV
hochladen Und jetzt können wir die Sounds testen indem wir für jeden Sound auf die
Play-Schaltfläche Ordnung, um die
Sounds tatsächlich im Spiel zu verwenden, gehen
wir zum Cetap und
zur Sound-Kategorie von Blocks Wie wir bereits früher im Kurs gesehen haben, haben
wir zwei Blöcke
zum Abspielen von Sounds Sound abspielen, bis der Vorgang abgeschlossen wird
das
aktuelle Skript angehalten, bis die
Soundwiedergabe beendet ist,
und der Sound wird gestartet , sodass das Skript
weiterlaufen kann, während
der Sound abgespielt wird. Wir können auch alle
Sounds im Projekt stoppen. Wir können die
Tonhöhe oder den linken Schrägstrich, den rechten Pan
, der aktuellen
Wiedergabeposition in der Sounddatei, ändern und einstellen Tonhöhe oder den linken Schrägstrich, den rechten Pan
, der aktuellen
Wiedergabeposition in der Sounddatei Wir können alle Änderungen an den
Soundeffekten löschen, die wir vornehmen, und wir können die Lautstärke ändern
und einstellen Okay, für den Spieler Sprite ist der erste Sound, den wir
spielen werden, der Whoosh-Sound Wenn der Spieler auf dem Titelbildschirm die
Kostüme wechselt
und ein guter Ort zum Abspielen ist, und ein guter Ort zum Abspielen wird
der Sound ganz oben angezeigt, wenn
ich
vor
den Animationen das Spielerkostüm wechseln erhalte vor Wir möchten das Drehbuch nicht unterbrechen , während der
Sound abgespielt wird. Nehmen wir uns also einen
Start-Soundblock, fügen ihn zum Anfang des Skripts hinzu
und spielen den Whoosh-Sound ab. Wenn wir das Spiel jetzt starten, wird
jedes Mal, wenn wir auf dem Titelbildschirm zwischen den
Kostümen wechseln, der
Wunschsound abgespielt. Ziemlich cool. Okay. Als Nächstes spielen wir den Lasersound ab, wenn der
Spieler einen Laser abfeuert, und das passiert bei
Defined Shoot Laser. Wir wollen den Sound nur abspielen , wenn wir tatsächlich einen Laserklon
erstellen. Also innerhalb des Blocks
I-Taste, Leertaste
oder gedrückter Maus, auch hier wollen
wir das Script nicht
pausieren.
Nehmen wir einen Start-Soundblock,
platzieren ihn unten
im
Block Ich dann und spielen den Lasersound ab wollen
wir das Script nicht
pausieren Nehmen wir einen Start-Soundblock, platzieren ihn unten
im
Block Ich dann . Wenn wir jetzt das Spiel starten, auf die Starttaste klicken
und einige Laser abschießen, wird der Lasersound abgespielt. Okay, das war's für
den Spieler-Sprite. Gehen wir also zum nächsten
Sprite über, der Geräusche hat, nämlich dem Asteroiden Gehen wir zur Registerkarte Sounds, löschen den Standard-Popsound gehen
dann zu Sound auswählen
und Sound hochladen auswählen Das Asteroiden-Sprite spielt
nur einen einzigen Ton ab, hier
den Treffersound, immer dann abgespielt wird
, wenn ein
Asteroid von einem Laser getroffen wird Wenn ein Asteroid explodiert, spielen
wir auch eines der Explosionsgeräusche ab,
aber
das tun wir innerhalb der Explosions-Sprites aber
das tun wir In Ordnung, also laden wir die
Hit-Dot-WAV-Datei hoch. Der Hit-Sound klingt so. Okay, gehen wir zum Code-Tab
und wir spielen den Treffersound im
Asteroiden-Treffer-Skript ab, falls der
Asteroid noch gesund Nehmen wir also einen
Start-Sound-Trefferblock und fügen ihn dem Block hinzu,
ob die Lebenspunkte größer
als ein Block irgendwo vor
dem Wiederholungsblock Wenn wir das Spiel jetzt spielen
und einen Asteroiden abschießen, wird der Treffersound abgespielt Wenn sich ein Asteroid teilt
oder zerstört wird, spielt er
jedoch noch kein Geräusch Wenn das passiert,
spielen wir einen Explode-Sound ab,
und zwar in den Nachdem das
Explosions-Sprite ausgewählt ist, gehen
wir zur Registerkarte Sounds,
löschen den Pop-Sound
und laden einen neuen Sound Wenn es zu einer Explosion kommt, spielen
wir nach dem Zufallsprinzip entweder
den Sound Explode one
oder den Sound Explode two ab wir also zuerst
Explode One WAV hoch und laden
dann Explode Two dann Und so klingen die
Explosionen. Okay, lass uns zum Code-Tab gehen. Nun, wenn es zu einer Explosion kommt, wird
es immer einen Blitz geben. also ein
Explosionsgeräusch abzuspielen, müssen
wir das nur tun, wenn
ein Flash-Klon erstellt wird. Das wird der Fall sein, und
wenn ich als Klon anfange, ist
immer der Fall, wenn der Flashcheck „Ich kostümname
gleich“ wahr ist, also nehmen wir einen
Start-Soundblock und fügen ihn vor
dem Wiederholungsblock zum Block I kostümname ist gleich Flash Für den Sound
wollen wir das Wort
explodieren nehmen und es nach dem Zufallsprinzip entweder
mit einer Eins oder einer Zwei verbinden Gehen wir dazu zunächst zu Operatoren und verwenden einen Join-Block als Eingabe
für den Start-Soundblock für die erste Eingabe
des Join-Blocks wir für die erste Eingabe
des Join-Blocks das Wort explode Und für die zweite Eingabe fügen wir einen Pick
Random Block hinzu und wählen 1-2 Wenn wir jetzt das Spiel spielen und einen Asteroiden
aufteilen oder zerstören, spielt
er zufällig eines
der Explosionsgeräusche Es spielt auch die Geräusche ab, wenn
der Spieler zerstört wird. Fantastisch. Okay, als Nächstes
wählen wir den Pickup-Sprite Gehen wir zum Sound-Tab, löschen den Pop-Sound und laden einen neuen Immer wenn der Spieler einen Pickup
sammelt, spielen
wir hier den Cletsund Laden wir also die Datei hoch. In Ordnung, gehen wir
zurück zum Code-Tab. Wir spielen hier den
Collect-Sound und wenn ich anfange
als Klon-Skript wann immer das Sprite den
Spieler berührt Gehen wir also zur
Sound-Kategorie, schnappen uns einen Startblock zum Sammeln
von Sounds und fügen ihn oben in den Block
Wenn der Spieler berührt Wenn wir jetzt einen Tonabnehmer
einsammeln, wird der Sound zum Sammeln abgespielt. Als Nächstes spielen wir einen Sound
für den Bombensprite. Nachdem das Sprite ausgewählt ist, gehen
wir zu den Sounds, löschen das Standard-Sprite
und laden ein neues Immer wenn eine Bombe aktiviert wird, spielen
wir das Feuergeräusch Also fügen wir es dem Sprite hinzu. Okay, und der Code
für das Bomben-Sprite, wir spielen das Feuergeräusch und
wenn ich „Spiel starten“ erhalte,
jedes Mal, wenn die
Variable „Bombe aktiv“ wahr wird Nehmen wir also einen Feuerblock mit
Startsound und fügen ihn dem Block I bomb
active is true hinzu Wenn wir jetzt das Spiel spielen
und eine Bombe einsammeln,
wird das Feuergeräusch abgespielt Der endgültige
Soundeffekt tritt , wenn der Spieler auf
dem Titelbildschirm
die Starttaste drückt . Gehen wir also zur
Starttaste Sprite. Löschen wir auf der Registerkarte „Sounds“ den Pop-Sound und
laden Sie einen neuen Sound Wenn der Spieler
auf die Schaltfläche klickt, spielen
wir den Startsound ab. Laden wir also den Startpunkt
waV zum Abspielen des Sounds hoch, gehen wir zum Code-Tab und machen das im
definierten Startspiel Nehmen wir also einen
Start-Sound-Startblock und fügen ihn an den
Anfang des Skripts Wenn wir nun das Spiel starten und
auf die Schaltfläche Start klicken, wird der Startsound abgespielt. Ordnung, um das Audio
zu beenden, müssen
wir nur die Musik hinzufügen und wir werden die Musik
im Hintergrundcode abspielen. also zunächst,
wenn der Hintergrund ausgewählt ist, wir also zunächst,
wenn der Hintergrund ausgewählt ist, zur Registerkarte Sounds. Auch hier können wir
den Pop-Sound löschen. Dann lass uns einen
Sound auswählen und einen neuen hochladen. Und was die Musik angeht, wollen
wir natürlich Music Dot WAV
hochladen Und hier ist eine Vorschau
der Musik. Okay, jetzt gehen wir
zum Code-Tab. Wir wollen die Musik starten,
sobald der Spieler auf
die grüne Flagge klickt , und sie
weiterspielen, bis er das Spiel beendet. Das heißt, wir sollten
die Musik im Skript mit der
grünen Flagge starten . Fügen wir also am Ende des Skripts einen
Start-Sound-Musikblock hinzu. Wenn wir jetzt auf die grüne
Flagge klicken, funktioniert es. Aber sobald es das
Ende der Musikdatei erreicht hat, hört
es einfach komplett auf. Wir möchten, dass die
Musik in einer Schleife
läuft, sodass sie wieder abgespielt wird,
sobald sie fertig ist. Versuchen wir dazu, zu Control zu
gehen, einen Forever-Block
zu nehmen und ihn um den
Start-Soundblock zu
wickeln Wenn wir das Spiel ausführen, funktioniert
das nicht. Und das liegt daran, dass der
Forever-Block
die Musik immer wieder
sofort neu startet Wir
hören die Musik also nie wirklich. Stattdessen möchten wir
die Musik vollständig abspielen ,
bevor wir sie neu starten Und genau dafür ist The Place Sound Until
Don Block da Lassen Sie uns also
den Start-Soundblock loswerden, zurück
zum Sound gehen und dem Forever-Block eine Orts-Sound-Musik
bis
Block D hinzufügen . Damit wird der Forever-Block
erneut ausgeführt, sobald
die
Musik abgespielt ist, und die Musik wird neu gestartet Also lass es uns versuchen. Wenn wir warten, bis
die Musik zu Ende
ist, wird sie sofort wieder
abgespielt. Hervorragend. In Ordnung, unser Spiel füllt
sich und klingt jetzt
ziemlich großartig Manchmal möchte der Spieler
jedoch nicht, dass all
diese Audiodateien abgespielt werden, oder er möchte vielleicht
nur die Musik oder nur
die Soundeffekte abspielen nur die Musik oder nur
die Soundeffekte Ab
der nächsten Lektion fügen
wir dem Titelbildschirm einige Schaltflächen hinzu
, mit fügen
wir dem Titelbildschirm einige Schaltflächen hinzu denen der Spieler die Musik oder die Soundeffekte ein- und ausschalten
62. Die Audio-Toggles erstellen: Damit der Player die Soundeffekte und
die
Musik ein- und ausschalten kann, erstellen
wir zunächst die Umschaltflächen, die auf dem Titelbildschirm
angezeigt werden, und beginnen mit dem Schalter für
Soundeffekte Lassen Sie uns also ein Sprite dafür erstellen indem wir auf die Schaltfläche „Sprite
auswählen“
klicken, auf „Malen“ klicken und es „Soundeffekte umschalten“ nennen Die Umschaltflächen
werden weiß sein. Damit die Dinge beim Erstellen der Kostüme besser zu erkennen sind, greifen
wir zunächst
zum Rechteckwerkzeug wählen Schwarz als
Füllfarbe und keinen Umriss Zoomen Sie dann auf die Leinwand hinein. Und während wir die Umschalttaste gedrückt halten, erstellen
wir ein Quadrat
mit fünf mal fünf Blöcken. Und lassen Sie uns weitermachen und
das Quadrat auf der Leinwand zentrieren. Wir werden die anderen
Formen innerhalb des Quadrats erstellen. Okay, lassen Sie uns zuerst das
Quadrat abwählen. Dann wählen wir Weiß
als Füllfarbe. Lassen Sie uns nun ein schmales
Rechteck nahe der linken Seite
des schwarzen Quadrats erstellen und es
ungefähr zwei Blöcke hoch machen. Wir möchten, dass das Rechteck
horizontal auf der Leinwand zentriert Nehmen wir
also das
Auswahlwerkzeug, positionieren es in
der Mitte und bewegen es dann wieder nach links. Und wenn wir dabei die
Umschalttaste gedrückt halten, können
wir es
horizontal zentriert halten. Als Nächstes klicken
wir bei
gedrückter Alt- oder Wahltaste auf das
Rechteck und ziehen es, um eine Kopie zu erstellen. Und während
wir die Umschalttaste gedrückt halten, verschieben wir dieses
Bild genau rechts neben das andere. Wir wollen dieses
Rechteck breiter machen. also mit dem Skalierungsgriff in der Mitte der rechten Seite Lassen Sie uns also mit dem Skalierungsgriff
in der Mitte der rechten Seite die
rechte Seite um einen
Block weiter ausdehnen als die
Mitte des schwarzen Quadrats. Jetzt verwandeln wir die
Form in ein Trapez, sodass die rechte Seite
breiter ist als die linke Seite Nehmen wir dazu das Reshape-Tool
. Dann wählen wir zuerst
den Knoten oben rechts aus. Und während wir die Umschalttaste gedrückt halten, bewegen
wir ihn bis fast
zum oberen Rand des Quadrats. Dann wählen wir nur
den unteren rechten Knoten aus, halten die Umschalttaste gedrückt und bewegen ihn nach unten bis fast zum
unteren Rand des Quadrats. Schließlich erstellen wir
auf der rechten Seite eine Schallwellenform. Nehmen wir dazu das Linienwerkzeug. Lassen Sie uns Weiß
als Umrissfarbe verwenden. Und eine Breite von drei
sollte gut sein. Beginnen
wir nun etwas
rechts von der Trapezform, klicken und ziehen, halten die Umschalttaste gedrückt und erstellen eine vertikale Linie mit einer Höhe von etwa
zwei Blöcken Wenn wir sichergehen möchten, dass
sie horizontal zentriert ist, können
wir das Auswahlwerkzeug nehmen, die Linie
in der
Mitte der Leinwand sie
dann bei gedrückter Umschalttaste wieder nach rechts
bewegen Ordnung, jetzt nehmen wir das
Werkzeug zum Umformen, fügen einen Knoten direkt
in der Mitte
der Linie hinzu und ziehen
ihn nach rechts der Linie hinzu und ziehen ,
während wir die Umschalttaste gedrückt halten Dann können wir
die Griffe etwas anpassen , um sie runder zu
machen Okay, ich finde, das
sieht ziemlich gut aus. Jetzt können wir
das Auswahlwerkzeug verwenden , um die Positionierung
der Formen anzupassen, wenn wir möchten. Wir können auch
alle weißen Formen auswählen, und wenn wir auf diese
Gruppenschaltfläche hier oben klicken
, werden alle
Formen gruppiert. Das bedeutet, dass wir
die gesamte Gruppe auswählen können , indem wir
nur auf eine der Formen klicken. Und jetzt können wir die gesamte Gruppe
für das
schwarze Rechteck einfach
verschieben , wir
wollen es eigentlich nicht löschen. Und der Grund dafür ist, dass Scratch uns
nur erlaubt,
die Stellen eines Sprites anzuklicken , an denen das Kostüm tatsächlich Farbe hat Wenn wir also das Quadrat
löschen würden, Klick zwischen diesen
beiden weißen Formen hätte ein
Klick zwischen diesen
beiden weißen Formen
oder genau hier
keine Wirkung Das könnte für den Spieler etwas
nervig werden. Um es
ihnen zu erleichtern, auf die Schaltfläche zu klicken, lassen
wir das schwarze Quadrat stehen, sodass der Spieler
auf eine beliebige Stelle
innerhalb des Quadrats klicken kann,
um auf die Schaltfläche zu klicken. Das schwarze Quadrat
verdeckt natürlich alle Sterne, die sich hinter dem Button befinden
könnten, aber es ist so klein, dass es
nicht wirklich auffällt. Okay, also wir werden
dieses Kostüm benutzen , wenn die
Soundeffekte eingeschaltet sind. Also ändern wir den Namen in on. Wir benötigen auch ein Kostüm, um anzuzeigen, dass die
Soundeffekte ausgeschaltet sind. In den meisten Fällen verwendet
das Kostüm
aus die gleichen Formen
wie das Kostüm auf der Vorderseite. Wir können
also damit beginnen, das Kostüm zu duplizieren und den Namen in Aus zu
ändern Für das Aus-Kostüm färben
wir die
weißen Formen grau Nun, weil wir
die weißen Formen
gruppiert haben und weil zwei der Formen
nur eine Füllfarbe haben und eine nur
eine Konturfarbe hat. Um die
Farben der Formen zu ändern, müssen
wir zuerst die Gruppierung der Formen aufheben Um dies mit der ausgewählten
Gruppe zu tun, können
wir hier oben auf die Schaltfläche
Gruppierung aufheben klicken Jetzt können wir die
einzelnen Formen erneut auswählen. Wählen wir zunächst die
beiden Formen auf der linken Seite und geben ihnen
eine mittelgraue Füllung. Wählen wir dann die
Form auf der rechten Seite und verwenden wir dasselbe Grau für die Konturfarbe der Form. Ordnung, und um noch
deutlicher zu
machen , dass die
Soundeffekte ausgeschaltet sind, platzieren
wir auch ein rotes X
über den Formen Nehmen wir dazu das
Linienwerkzeug und verwenden
für die Konturfarbe reines Rot Und lassen Sie uns die Breite etwas
dicker machen. Vier sollten funktionieren. Beginnen wir nun in der Nähe der unteren
linken Ecke des schwarzen Quadrats . Klicken und ziehen
wir. Und wenn wir die Umschalttaste gedrückt halten, können
wir eine 45-Grad-Linie
bis nahe der oberen
rechten Ecke des Quadrats zeichnen . Dann nehmen wir das
Auswahlwerkzeug und zentrieren die Linie. Halten wir nun die Alt- oder
Wahltaste gedrückt und klicken Sie auf die
Linie, um sie zu duplizieren. Und wir müssen
diesen nur entweder
horizontal oder vertikal umdrehen . Und da haben wir es.
Die Kostüme für den Soundeffekt-Schalter
Sprite sind jetzt fertig Jetzt müssen wir ähnliche Schritte
ausführen, um die Kostüme für
die Musik-Umschalttaste
zu erstellen Lassen Sie uns zunächst
die Soundeffekte duplizieren und Sprite umschalten, und ändern wir den
Namen Für das On-Kostüm lassen
wir das schwarze Quadrat stehen, aber wir können die
Gruppe der weißen Objekte löschen Für die Musik-Umschalttaste zeichnen
wir ein
Musiknotensymbol Nehmen wir dazu
das Kreiswerkzeug. Verwenden Sie Weiß für die Füllfarbe
und nichts für den Umriss. Und lassen Sie uns eine kleine Ellipse
in der Nähe der unteren
linken Ecke des Quadrats erstellen in der Nähe der unteren
linken Ecke des Quadrats Nehmen wir nun das
Rechteckwerkzeug und zeichnen ein dünnes
Rechteck, das
die Oberseite der Ellipse überlappt ,
und bringen es etwa einen Block über
die Mitte des Als Nächstes nehmen wir das Auswahlwerkzeug und wählen beide weißen Formen
aus Dann lassen Sie uns sie kopieren
und einfügen und die Kopien ein wenig nach oben
und in die Nähe der rechten
Seite des Quadrats
verschieben . Schließlich
verbinden wir die Oberseiten
der beiden Rechtecke mit
einer anderen rechteckigen Form Lassen Sie uns also zuerst
wieder
das Rechteckwerkzeug nehmen und etwas weiter
vergrößern Erstellen Sie dann ein Rechteck, das an der linken Seite
des ersten Rechtecks
ausgerichtet ist und dessen Oberseite
überlappt. Ziehen wir dann nach
rechts, bis es an der rechten
Seite des anderen Rechtecks ausgerichtet Und wir können das
Auswahlwerkzeug verwenden, um die Positionierung und
Größe bei Bedarf ein wenig
anzupassen Okay, jetzt können wir das
Reshape-Tool nutzen und die beiden Knoten auf
der rechten Seite des
horizontalen Rechtecks
auswählen der rechten Seite des
horizontalen Rechtecks Und während wir die Umschalttaste gedrückt halten, ziehen
wir sie ein wenig nach oben Und jetzt haben wir eine Musiknote. Also können wir jetzt alle
weißen Formen auswählen, sie gruppieren
und dann die
Gruppe auf der Leinwand zentrieren. Wir können auch bei oder die
Option gedrückt halten und die Größe der
Gruppe ein wenig ändern, wenn wir möchten Für
diese Schaltfläche ist es besonders
nützlich, das schwarze Quadrat beizubehalten , da es
ziemlich schwierig wäre , auf
eine der weißen Formen zu klicken Ordnung, jetzt mit
dem Off-Kostüm, lassen Sie uns zuerst die Gruppe kopieren, dann zum Off-Kostüm wechseln , die Gruppe
einfügen und sie
für den Moment zur Seite verschieben. Da alle Formen in der Musiknotengruppe
nur eine Füllfarbe verwenden, können
wir die Füllfarbe
der Gruppe als Ganzes ändern. Wir möchten den
gleichen Grad verwenden, den wir für die Formen des
Schalters für Soundeffekte verwenden. Klicken wir also auf die
Pipette-Schaltfläche dann auf eine der Jetzt können wir die
Soundeffekte loswerden, Formen umschalten, die
Musiknotengruppe in die Mitte legen und ein paar
Mal
auf die
Rückwärts-Schaltfläche klicken, um ein paar
Mal
auf die
Rückwärts-Schaltfläche klicken sie unter
den beiden roten Linien zu platzieren Okay, wir sind jetzt mit
den Kostümen für die beiden
Audio-Umschalttasten fertig den Kostümen für die beiden
Audio-Umschalttasten Lassen Sie uns also weitermachen und dafür sorgen, dass sie auf
dem Titelbildschirm korrekt
angezeigt Wir platzieren die
Knöpfe unten rechts. Der Musik-Schalter befindet
sich ungefähr hier in der Nähe der unteren
rechten Ecke, und der Schalter für
Soundeffekte befindet
sich direkt links
neben dem Musik-Schalter Gehen wir nun zur Registerkarte Code. Wir sorgen dafür, dass die
Soundeffekte und die Musik immer eingeschaltet wenn der Spieler auf
die grüne Flagge klickt. Deshalb wollen wir sicherstellen, dass die Umschalttasten zunächst ihre eigenen Kostüme
verwenden Um das zu tun, gehen wir zu Events und bringen ein Gewinnsymbol mit der grünen
Flagge, klicken wir auf Blockieren. Dann gehen wir zu Looks, bringen einen Switch-Kostümblock rein und wechseln zum On-Kostüm Und da sich die
Position der Sprites nicht ändert, können
wir auch sicherstellen
, dass sie im
Green Flag-Skript korrekt
positioniert Lassen Sie uns also zur Bewegung übergehen und
einen Go-to-XY-Block einfügen. Ich bin gerade im Code für den Sprite-Schalter für Soundeffekte und werde die Werte im Block „Gehe zu XY“
ein wenig
anpassen im Block „Gehe zu XY“
ein wenig Für X verwende ich 185 und für Y negative 160. Das ist dieselbe
Y-Position,
die ich für den Highscore-Tech-Sprite
und
den Highscore-Ziffern-Sprite verwende Highscore-Tech-Sprite
und
den Highscore-Ziffern-Sprite . Okay, wie bei den anderen Sprites auf dem
Titelbildschirm werden
wir die
Umschaltflächen einblenden, wenn der Titelbildschirm erscheint, und sie ausblenden,
wenn Außerdem
werden sie durch die linken
und rechten Tasten größer, wenn sie mit der Maus über die Umschalttasten
fahren, und wenn sie sich von
ihnen die Umschalttasten
fahren, und wenn sie sich von
ihnen entfernen, werden sie kleiner. So können wir zum Beispiel zum Code für das
Sprite mit
der rechten Taste
gehen Code für das
Sprite mit
der rechten Taste und einige Skripte kopieren Wir wollen beides, wenn ich Titelbildschirm
anzeigen erhalte und wenn
ich das Startspiel erhalte Für die Anzeige des Titelbildschirms brauchen
wir hier unten allerdings nicht das Zeug mit den
Pfeiltasten. Also, bevor wir das Skript
überschreiben, ziehen
wir den Block mit der rechten
Pfeiltaste heraus. Kopieren Sie dann den Rest des Skripts in den
Soundeffekt-Schalter Sprite Und stellen wir sicher, dass der Block
I dann wieder an der Stelle platziert wird, an der
er sich unter den
Mauspunkten oder dem Block befindet, mit dem ich mich berührte Und wir können das
Skript „Wenn ich das Startspiel
erhalte“ so kopieren , wie es ist. Okay, jetzt gehen wir zurück
zu den Soundeffekten schalten Sprite um und ordnen
die Skripte ein wenig neu Da wir bereits die Position
der Sprites und das Skript mit
der grünen Flagge festlegen , können
wir den Block „Gehe zu
XY“ und „Wenn ich den Titelbildschirm anzeigen“
erhalte, loswerden Block „Gehe zu
XY“ und „Wenn ich den Titelbildschirm anzeigen“
erhalte Okay, für den
Musik-Schalter Sprite kopieren
wir zuerst alle
drei Skripte Dann gehen wir zum Code für
den Musik-Schalter Sprite
und bereinigen Die einzige Änderung, die wir vornehmen
müssen, betrifft den Wert der X-Eingabe
im Block Go to XY Ich nehme 215 und das war's. Wenn wir das Spiel jetzt starten, die Audio-Umschalttasten zusammen mit den anderen Sprites auf dem
Titelbildschirm ausgeblendet mit den anderen Sprites auf dem
Titelbildschirm ausgeblendet Und wenn wir auf die
Start-Schaltfläche klicken, werden die Sprites ausgeblendet. Fantastisch. Okay. Und in
der nächsten Lektion machen
wir es so, dass der
Spieler tatsächlich auf die Tasten klicken kann , um
die Soundeffekte und
die
Musik ein- und auszuschalten Soundeffekte und
die
Musik ein- und auszuschalten
63. Audio-Toggling implementieren: Wenn wir zur
Sound-Kategorie der Blöcke übergehen, wir bereits gesehen, dass wir die Lautstärke
geändert und
Lautstärkeblöcke eingerichtet haben , mit denen wir die Lautstärke der von uns abgespielten
Sounds
anpassen können die Lautstärke der von uns abgespielten
Sounds
anpassen Eine wichtige Sache, die man
über diese Blöcke wissen sollte, ist, dass sie nur die Lautstärke
der Sounds für die
aktuellen Sprites beeinflussen der Sounds für die
aktuellen Sprites Wenn wir also zum Beispiel dafür
sorgen wollen, dass alle
Spieler-Sprites unhörbar klingen, könnten
wir in den Code
für die Sprites der Spieler gehen, einen eingestellten Lautstärkeblock
in ein leeres Feld
bringen, die Eingabe auf
Null
ändern und auf den Block klicken Und wenn wir das Spiel jetzt starten, wird
beim Wechseln des Kostüms
nicht mehr der Whoosh-Sound abgespielt Und wenn wir das Spiel starten, Laserschießen kein Lasersound mehr
wiedergegeben Die Musik und die Soundeffekte
für die anderen Sprites sind
jedoch überhaupt nicht
betroffen Damit wir
die Sounds für das Sprite des
Players wieder hören können , müssen
wir nur einen Wert
verwenden, der
höher als Null für die eingestellte
Lautstärke ist , z. B. 100%,
was die Standardeinstellung ist Wenn wir auf den Block klicken, die Sprite-Sounds des Players jetzt genauso
abgespielt wie zuvor Okay, lass uns weitermachen und den eingestellten Lautstärkeblock
loswerden. Und wenn der Player die Soundeffekte ausschaltet, können
wir eine
Nachricht senden,
die alle Sprites, die
Sounds verwenden, veranlasst alle Sprites, die
Sounds verwenden, , ihre
Lautstärke auf 0% einzustellen Und um
die Soundeffekte einzuschalten, senden
wir eine
andere Nachricht, die die Sprites
veranlasst, ihre Lautstärke wieder auf 100% zu setzen Ähnlich wie
beim Umschalten der Musik senden
wir Nachrichten, die dazu führen
, dass die Lautstärke des Hintergrunds entweder
auf 0% oder 100% eingestellt Ordnung, weil das
Umschalten der Musik einfacher zu implementieren
sein wird , fangen
wir damit an Gehen wir zum Code für
den Musikschalter Sprite. Wir machen es so, dass der
Spieler auf
die Musik-Umschalttaste klicken oder
eine Taste auf der Tastatur drücken kann die Musik-Umschalttaste klicken oder
eine Taste auf der Tastatur drücken ,
um die Musik umzuschalten Gehen wir zu den Events und bringen wir sowohl
den Block, der mit dem Sprite gewonnen hat, als auch einen Block, der
mit der
Gewinntaste gedrückt wurde, ein Um die Musik umzuschalten, verwenden
wir Okay, jetzt wollen wir
das
Sprites-Kostüm mit Musikschalter verwenden , um zu
bestimmen, ob
die Musik ein- oder ausgeschaltet werden soll Und weil wir denselben Code
sowohl für
das
WinAsprite-Klickskript als auch für das
WinKeyPress-Skript verwenden sowohl für
das
WinAsprite-Klickskript als auch für das
WinKeyPress-Skript werden, fügen
wir den fügen
wir Gehen wir also zu Mblock
und erstellen einen neuen. Wir können es Toggle nennen
und auf Okay klicken. Lassen Sie uns den definierten
Umschaltblock irgendwo hierher verschieben
und dann
einen Umschaltblock hinzufügen, wenn
das Sprite geklickt
hat und das Sprite geklickt Für das Umschaltskript senden
wir nun je nach dem aktuellen Kostüm des Sprites eine
andere Nachricht je nach dem aktuellen Kostüm des Um das Kostüm zu überprüfen, gehen
wir zu Control und fügen einen
Block I und dann S ein Für die Bedingung gehen wir zu den Operatoren und fügen einen
Gleichheitsblock Gehen wir dann zu Looks fügen dem Block „Gleich“ einen Kostümblock
hinzu. Und lassen Sie uns überprüfen, ob der
Kostümname gleich Ein ist. Wenn ja, wollen wir
eine Nachricht senden , die den
Hintergrund auffordert, die Musik auszuschalten Wir wollen aber auch das Kostüm auf
das Aus-Kostüm umstellen . Fügen wir also zunächst Wenn-Teil des Wenn-if-Ist-Blocks
einen dem Wenn-Teil des Wenn-if-Ist-Blocks
einen Block zum Wechseln des Kostüms hinzu und schalten wir
das Kostüm auf Aus. Gehen wir nun zu Events, fügen einen Broadcast-Block hinzu und senden wir
eine neue Botschaft, die wir Musik
ausschalten nennen können. Was den Els-Teil angeht,
wollen wir natürlich die Musik einschalten. Also lasst uns die
Switch-Kostüm- und
Broadcast-Blöcke duplizieren und
sie dem Elts-Teil hinzufügen Und dieses Mal wollen wir
zum
On-Kostüm wechseln und eine neue
Botschaft namens Musik einschalten Wenn wir das Spiel jetzt starten und auf die
Musiktaste klicken oder die Taste drücken, wird das Kostüm
gewechselt Jetzt müssen wir es so machen, das tatsächlich auf die Musik auswirkt Gehen wir dazu
zum Hintergrundcode. Und hier wollen wir
die beiden Musik-Umschalt-Nachrichten empfangen die beiden Musik-Umschalt-Nachrichten und die Lautstärke entsprechend einstellen Lassen Sie uns also eintragen, wann
ich Blöcke erhalte. Für den ersten
erhalten wir Turn music on. Dann gehen wir zum
Sound und stellen
eine eingestellte Lautstärke auf 100% Block. Für den anderen Fall schalten wir Musik ein,
schalten die Musik aus, fügen einen eingestellten
Lautstärkeregler hinzu und stellen ihn auf 0%. Und damit können wir, wenn wir das Spiel erneut
starten, die
Musiklautstärke ein- und ausschalten Eines sollten Sie beachten Auch wenn wir kein Sprite auf der Bühne sehen
können, dann
werden Skripte bei Tastendruck trotzdem ausgeführt Wenn wir also auf die Starttaste klicken, können wir die
Musik
zwar nicht mehr sehen,
aber trotzdem die Taste drücken, um die
Musik ein- und auszuschalten Wenn wir sterben und
der Titelbildschirm wieder geöffnet wird
, verwendet der Sprite zum Umschalten
der Musik außerdem wird
, verwendet der Sprite zum Umschalten
der Musik verwendet Okay, und eine weitere
Sache, die Sie beachten sollten, ist , dass Scratch alle
Lautstärkeänderungen speichert, die wir vornehmen Wenn wir also die Musik ausschalten, das Spiel
beenden und erneut auf
die grüne Flagge klicken, können
wir die Musik immer noch nicht hören, und jetzt verwendet
Sprite beim Musikschalter nicht
das Um sicherzustellen, dass das
im Skript mit der grünen Flagge
für den Hintergrund nicht passiert , fügen
wir irgendwo
vor dem Block für immer eine festgelegte Lautstärke auf 100 Block Dadurch wird die
Musiklautstärke immer
bei 100% gestartet , wenn wir auf
die grüne Flagge klicken. Okay, jetzt müssen wir an der Umschaltung
der Soundeffekte arbeiten. Lassen Sie uns zunächst zum Code für
den
Musikschalter Sprite zurückkehren Code für
den
Musikschalter Von hier aus kopieren wir zunächst das definierte Toggle-Skript
in
den
Soundeffekt-Toggle in
den
Soundeffekt-Toggle Kopieren Sie dann sowohl
das Win this Sprite
Click-Skript als auch das
Win-Tastendruck-Skript Gehen wir nun zu
den Soundeffekten Toggle Sprite und
bereinigen Für das Win-Tastendruck-Skript möchten
wir natürlich eine andere Taste
verwenden Es wäre sinnvoll, die Taste
zu verwenden, aber da wir
den Spieler die
Taste benutzen lassen , um sich nach unten zu bewegen, müssen
wir etwas
anderes verwenden, um die Soundeffekte umzuschalten Ich denke, eine gute Alternative
wäre die X-Taste. Okay, im Toggle-Skript wollen
wir
Nachrichten senden, um die Soundeffekte umzuschalten also im
Broadcast-Block des I-Teils Lassen Sie uns also im
Broadcast-Block des I-Teils eine neue Nachricht senden, die wir als
Soundeffekte aus bezeichnen können Und was das Outs angeht, lassen Sie uns eine neue Botschaft mit dem
Begriff Soundeffekte an senden . Okay, damit diese
Nachrichten funktionieren, möchten
wir, dass alle Sprites, die Sounds verwenden, die Nachrichten
empfangen und
ihre Lautstärke entsprechend einstellen Fangen wir also mit
den Player-Sprites an. Und hier, lasst uns einen leeren
Raum finden. Dann lass uns zu den Veranstaltungen gehen und zwei Blöcke mit W
reinbringen, die ich
erhalten habe. Lassen Sie uns beim ersten die
Soundeffekte einschalten. Gehen Sie dann zum Ton und stellen Sie die eingestellte Lautstärke auf 100 Block
ein. Beim anderen lassen wir die
Soundeffekte ausschalten, einen
eingestellten
Lautstärkeblock einfügen und ihn auf 0% einstellen. Wir möchten auch sicherstellen, dass
die Lautstärke auf 100% zurückgesetzt wird , wenn
auf die grüne
Flagge geklickt wird Kommen wir also zum Skript mit der grünen Flagge und fügen ihm eine festgelegte Lautstärke von
100 Blöcken hinzu Wenn wir das Spiel jetzt starten und die Soundeffekte
ausschalten, hören
wir
beim
Kostümwechsel kein Rauschen mehr. beim Außerdem hören wir den
Lasersound nicht, wenn wir mit Lasern schießen. Und wir können die X-Taste verwenden, um die Soundeffekte
während des Spiels ein- und auszuschalten Ordnung, jetzt
müssen wir dasselbe für die verbleibenden Sprites tun ,
die Sounds verwenden Der nächste in der Liste
ist der Asteroid Sprite. also zunächst aus dem Sprite-Code des
Players die Lassen Sie uns also zunächst aus dem Sprite-Code des
Players die Skripte zum Einschalten von Soundeffekten und
zum Ausschalten von
Soundeffekten
in das Asteroiden-Sprite kopieren Skripte zum Einschalten von Soundeffekten und
zum Ausschalten von
Soundeffekten
in das Asteroiden-Sprite Gehen wir dann zum Sprite-Code des
Asteroiden und ordnen die Skripte neu an. Und lassen Sie uns dem Skript mit
grüner Flagge ein festgelegtes Volumen auf
100 Block hinzufügen grüner Flagge ein festgelegtes Volumen auf
100 Block Es scheint, als ob das alles
sein sollte, was wir tun müssen, aber wir werden
tatsächlich ein Problem haben. Um zu sehen, was ich meine, lassen Sie uns das Spiel starten, die Soundeffekte
ausschalten und das Spiel starten Wenn wir ein paar Asteroiden abschießen, wird immer noch der Treffersound abgespielt Der Grund dafür ist, dass Klone, die
als separate Sprites behandelt werden,
ihre eigene
Lautstärkeeinstellung erhalten Und wenn ein neuer
Klon erstellt wird, kopiert
er nicht die
aktuelle Lautstärkeeinstellung der ursprünglichen Wenn wir also
die Soundeffekte ausschalten bevor irgendwelche
Asteroidenklone erstellt wurden, erhalten
sie nicht die Meldung, dass die
Soundeffekte ausgeschaltet werden, und ihre Lautstärke
wird nicht Um dieses Problem zu beheben, können wir die
Änderung der Lautstärke in einer Variablen
verfolgen Änderung der Lautstärke in einer Variablen
verfolgen Und wenn wir einen neuen Klon erstellen, können
wir seine Lautstärke mithilfe
des Werts der
Volumenvariablen einstellen . Okay,
lassen Sie uns zunächst zu Variablen gehen
und eine neue erstellen. Nennen wir es Lautstärke, und wir wollen es nur für dieses Sprite erstellen,
weil wir für
jedes Sprite , das
Sounds und Klone verwendet,
eine separate Lautstärkevariable , das
Sounds und Klone verwendet, Wenn nun auf die grüne
Flagge geklickt wird, wollen
wir die
Volumenvariable auf 100 setzen und
müssen uns eigentlich keine Gedanken über die Lautstärke des ursprünglichen
Asteroiden-Sprites machen,
also können wir die auf 100 festgelegte Lautstärke
im
Green Flag-Skript loswerden , sie
durch einen Satz von zwei
Blöcken von Variablen ersetzen und die
Volumenvariable auf 100 setzen. Als Nächstes wollen
wir in den
Begriffsskripten zum Ein- und Ausschalten von Soundeffekten immer noch
die eingestellten Lautstärkeblöcke beibehalten. Das liegt daran, dass, wenn wir
die Soundeffekte während des Spiels mit der
X-Taste ein- und ausschalten , möglicherweise bereits
einige Klone existieren
und wir sicherstellen
möchten, dass ihre Lautstärke eingestellt Wir möchten jedoch auch
die Lautstärkevariable
auf denselben Wert setzen , damit wir sie bei der
Erstellung zukünftiger Klone verwenden können Okay, nehmen wir also
ein Set zum Blockieren und fügen es ganz unten im Skript zum
Aktivieren von Soundeffekten hinzu, und legen wir die
Lautstärkevariable Wir können entweder 100 als
Eingabe verwenden oder wir können zum
Sound gehen und einen Lautstärkeblock verwenden, der
die aktuelle Lautstärke des
Sprites Und jetzt können wir
die eingestellte Lautstärke auf den
Lautstärkeblock duplizieren und am Ende
des Skripts zum Ausschalten der
Soundeffekte hinzufügen am Ende
des Skripts zum Ausschalten der
Soundeffekte Alles klar, lass uns herausfinden wann ich als Klon-Skript anfange. Und hier
wollen wir die
tatsächliche Lautstärke der Klone anhand
des Werts der Volumenvariablen Das funktioniert, weil
Klone die Werte
der ursprünglichen
Sprites-Variablen kopieren Werte
der ursprünglichen
Sprites-Variablen Fügen wir also
irgendwo vor dem
Forever-Block einen festgelegten Volumenblock irgendwo vor dem
Forever-Block Dann gehen wir zu Variablen und setzen die Lautstärke auf
die Volumenvariable. Wenn wir bei all dem die Soundeffekte
ausschalten, wird die
Lautstärkevariable auf Null gesetzt. Und wenn danach ein Klon
erstellt wird, wird
seine Lautstärke
auf die Lautstärkevariable gesetzt, die Null sein wird, sodass wir seinen Treffersound nicht hören
sollten Okay, lass uns das
Spiel starten und es versuchen. Wenn wir die
Soundeffekte ausschalten und das Spiel starten, hören
wir das Treffergeräusch nicht mehr wenn wir auf einen Asteroiden schießen Und wir können während des
Spiels die Taste benutzen , um mit den ein- und auszuschaltenden
Soundeffekten zu sprechen Hervorragend. Wir
hören aber immer noch die Explosionsgeräusche ,
also werden wir als Nächstes am
Explosions-Sprite arbeiten Das Explosions-Sprite verwendet
auch Klone, also müssen wir das Gleiche
tun Asteroiden-Sprite,
nämlich die Lautstärkevariable auf 100
zu setzen, wenn auf die grüne
Flagge geklickt wird,
sowohl die
tatsächliche
Lautstärke als auch die Lautstärkevariable wenn auf die grüne
Flagge geklickt wird,
sowohl die in den
Term-Skripten zum Ein- und Ausschalten von Soundeffekten einzustellen und die tatsächliche Lautstärke auf die also müssen wir das Gleiche
tun wie beim
Asteroiden-Sprite,
nämlich die Lautstärkevariable auf 100
zu setzen, wenn auf die grüne
Flagge geklickt wird,
sowohl die
tatsächliche
Lautstärke als auch die Lautstärkevariable in den
Term-Skripten zum Ein- und
Ausschalten von Soundeffekten einzustellen und die tatsächliche Lautstärke auf
die Lautstärkevariable in das, wenn ich als Klonskript anfange
. Okay, lassen Sie uns damit beginnen, die eingestellte Lautstärke auf
100 Blöcke vom Skript mit der
grünen Flagge
in die Explosions-Sprites zu
kopieren 100 Blöcke vom Skript mit der
grünen Flagge in die Explosions-Sprites Und wenn wir schon dabei sind, verwenden
die Pickup- und Bomben-Sprites
auch Sounds und Klone Sparen wir also etwas Zeit, indem den Block auch in
diese Sprites
kopieren Lassen Sie uns nun den
Begriff Soundeffekte beim Ein - und
Ausschalten von Skripten in
alle drei Sprites kopieren - und
Ausschalten von Skripten in
alle drei Sprites Und schließlich, aus dem Skript Wenn
ich als Klone starte, kopieren
wir
den eingestellten
Lautstärke-zu-Volume-Block in
alle drei Sprites Und stellen Sie sicher, dass Sie
diese Blöcke danach wieder anhängen. Gehen wir jetzt zum Code
für das Explosions-Sprite. Lass uns die eingestellte Lautstärke
auf den Volumenblock setzen und
dann, wenn ich
als Klon-Skript irgendwo
vor dem F anfange , dann S-Block Jetzt verschieben wir die Skripte, wann ich sie
erhalten habe , in ein leeres Feld, und wir
müssen tatsächlich
ein Skript mit grüner Flagge für die
eingestellte Lautstärke auf 100 Block erstellen . Gehen wir zu den Ereignissen, einen Block
hinzu, auf den mit der grünen
Flagge geklickt wurde und fügen den eingestellten
Volumenblock hinzu Wenn wir jetzt das Spiel starten, die Soundeffekte
ausschalten
und einige Asteroiden zerstören, werden
wir die
Explosionsgeräusche nicht hören Wir werden sie auch nicht hören, wenn
der Spieler zerstört wird. Ordnung, jetzt
müssen wir dasselbe
für die Pickup- und Bomben-Sprites tun für die Pickup- und Bomben-Sprites Gehen wir also zuerst zum Pickup-Sprite-Code. Lass uns die eingestellte
Lautstärke auf Volumenblock und wenn ich als Klon anfange
vor dem Forever-Block Dann verschieben wir den Zeitpunkt, an dem ich Skripte
erhalte, in
ein leeres Feld. Und füge das eingestellte Volumen auf 100 Block zum Skript mit
grüner Flagge hinzu. Dann lass uns zum
Sprite-Bombencode gehen. Lass uns die eingestellte Lautstärke irgendwo
vor den Wiederholungsblöcken auf den
Volumenblock Und wenn ich als Klon anfange, verschiebe ich das Skript, wenn ich
Skripte erhalte, in ein leeres Feld, starte ein Skript mit grüner Flagge und füge die eingestellte Lautstärke
auf 100 Block hinzu. Wenn wir jetzt das Spiel starten und die Soundeffekte
ausschalten, werden
wir weder die Geräusche für die Tonabnehmer noch für
die Bombe hören Schließlich müssen wir uns mit dem Sound für
die Starttaste befassen Sound für
die Starttaste Das Sprite mit der Starttaste verwendet
keine Klone, sodass wir uns keine Gedanken
über die Einstellung einer Lautstärkevariablen machen müssen über die Einstellung einer Lautstärkevariablen Stattdessen können wir zum Sprite
des Players gehen und die Skripte zum Ein- und Ausschalten der
Soundeffekte
kopieren, mit
denen einfach die Lautstärke der Sprites eingestellt wird Gehen wir nun zur Starttaste
Sprite und ordnen die Skripte neu Wir müssen auch
sicherstellen, dass
die Lautstärke auf 100% zurückgesetzt wird, wenn auf
die grüne Flagge geklickt wird Lassen Sie uns also ein Skript mit
grüner Flagge starten. Gehen Sie dann zum Sound und fügen Sie eine eingestellte
Lautstärke von 100 Blöcken hinzu. Und wenn wir jetzt
das Spiel starten und
die Soundeffekte ausschalten, hören
wir den Startknopf
nicht mehr, wenn wir darauf klicken. Fantastisch. Und mit all dem sind
wir offiziell fertig
mit dem kosmischen Chaos Also wieder einmal hervorragende Arbeit, weiteres
komplettes Scratch-Spiel
abgeschlossen Und genau wie bei
Smack So Moles, wenn du beschließt, deinem
Cosmic Havoc-Spiel
einige Dinge hinzuzufügen , schicke mir
bitte einen Link denn ich würde es mir
gerne ansehen In Ordnung. Und wenn du bereit bist, sehe
ich dich in der ersten Lektion des letzten Spiels
dieses Kurses
64. Glims Abenteuer Einführung: Das letzte Spiel, das wir in diesem Kurs
entwickeln werden, und unser bisher größtes Spiel, ist ein Two-D-Plattformer
namens Glm's In diesem Spiel werden wir
als niedliches kleines Alien
namens Glm spielen , das
auf einem unbekannten Planeten gestrandet ist Ein böser Typ namens Nadnarb
hat Glens Raumschiff gestohlen, und wenn Glen diesen Planeten
verlassen will, muss
er in
jedem Level
alle Münzen sammeln, um sein Raumschiff zurückzukaufen muss
er in
jedem Level
alle Münzen sammeln, um sein Raumschiff zurückzukaufen Dies wird jedoch nicht so einfach sein, da der Spieler in den
Levels
verschiedene Feinde und Hindernisse überwinden muss verschiedene Feinde und Wenn der Spieler
es schafft, alle Münzen in
den ersten drei
Levels des Spiels zu
sammeln, wird
er außerdem alle Münzen in
den ersten drei
Levels des Spiels zu
sammeln , Nadnarb
gegenüberstehen, der beschließt, das Raumschiff des Spielers behalten zu wollen,
sodass der
Spieler gegen
ihn kämpfen muss, wenn er
sein Raumschiff wirklich
zurückhaben Nadnarb
gegenüberstehen, der beschließt, das Raumschiff des Spielers behalten zu wollen,
sodass der
Spieler gegen
ihn kämpfen muss, wenn er sein Raumschiff will will Das wird
eine Herausforderung, aber all die harte Arbeit und Mühe werden sich definitiv In Ordnung, lass uns anfangen.
65. Lade das Starterprojekt: In diesem Spiel werden
wir uns mehr auf
die Codierung und weniger auf die
Erstellung der Grafiken konzentrieren . Deshalb habe ich ein
Starterprojekt bereitgestellt, das bereits alle Sprites
zusammen mit ihren Kostümen enthält zusammen mit ihren Kostümen Wir müssen nur
den Code schreiben, der
alles zum Laufen bringt Um das Starter-Projekt zu laden, haben
Sie mehrere Optionen. Zunächst habe ich
die Projektdatei als
herunterladbare Ressource namens
glomsadventurstarter dot sp three bereitgestellt herunterladbare Ressource namens glomsadventurstarter Wenn Sie die Datei herunterladen, können
Sie sie von
einem neuen Scratch-Projekt aus öffnen , indem
Sie im Menü Datei die Option Von
Ihrem Computer laden
wählen, Von
Ihrem Computer laden
wählen, zum
Speicherort der Datei
navigieren, die Datei auswählen Daraufhin wird eine
Meldung angezeigt, die besagt, dass der Inhalt
des aktuellen Projekts ersetzt
wird. diesem Grund ist es wichtig
, sicherzustellen, dass wir dies von
einem neuen Projekt oder von
einem Projekt aus tun einem neuen Projekt oder von
einem Projekt aus , das wir
nicht behalten möchten. Ordnung, wenn wir also auf Okay klicken, wird das Projekt durch
das Glims
Adventure-Starterprojekt ersetzt das Glims
Adventure-Starterprojekt Alternativ kannst du
zu meiner Scratch-Kontoseite gehen ,
die sich unter
Scratch Dot mit Punkt EDU slash
USERS SweaterCat Designs befindet Dot mit Punkt EDU slash
USERS Ich werde auch einen Link zu
der Seite als herunterladbare Ressource bereitstellen der Seite als Auf meiner Kontoseite solltest
du
unter Geteilte Projekte
ein Projekt namens Glims
Adventure Starter sehen ein Projekt namens Glims
Adventure Starter Wenn du auf das Projekt
klickst, wirst du
zur Projektseite weitergeleitet. Und wenn Sie hier oben auf die
Remix-Schaltfläche klicken, wird eine Kopie
des Projekts in
Ihren eigenen Konten erstellt des Projekts in
Ihren eigenen Konten Okay, und sobald wir das
Startprojekt geladen haben, lassen Sie uns weitermachen und
den Namen einfach in
Glims Adventure ändern den Namen einfach in
Glims Lassen Sie uns nun einen kurzen
Blick auf den Inhalt des Projekts Wie ich bereits erwähnt
habe, habe ich alle Sprites, die
wir für das Spiel benötigen,
zusammen mit all ihren Kostümen beigefügt zusammen mit all ihren Kostümen Zuerst haben wir den
Spieler Sprite. Wie bei allen Sprites der Codebereich
derzeit leer Und wenn wir uns den Tab „Kostüme“ ansehen
, enthält
das Sprite
alle Kostüme
, die wir
während des Spiels verwenden werden Diese bestehen hauptsächlich aus Kostümen für die verschiedenen
Zustände des Spielers, wie Leerlauf, Gehen und Springen Und für viele Staaten wird
es eine Animation geben. Zum Beispiel hat Idle zwei Kostüme mit den Bezeichnungen
Idle Zero und Idol One Das bedeutet, dass der Ruhezustand
über eine Animation mit zwei Frames verfügt. Wenn der Spieler also
inaktiv ist oder sich nicht bewegt, wechselt das Sprites-Kostüm des Spielers kontinuierlich zwischen diesen beiden hin und
her, sodass das Sprite auf der Bühne
zu animieren scheint In ähnlicher Weise besteht die Walk-Animation aus
insgesamt sechs Frames mit den Bezeichnungen Walk Zero
bis Walk Five Und wenn der Spieler auf der Bühne
herumläuft, beginnt
das Kostüm bei Walk Zero, geht
dann bei Walk One über, Walk Two bis Walk Five und kehrt dann zu Walk
Zero zurück und wiederholt den Vorgang. Okay. Das nächste Sprite, das wir
haben, ist das Kontroll-Sprite Dieser
benötigt eigentlich keine Kostüme, da wir ihn einfach
verwenden, um zu überprüfen, ob der Spieler
irgendwelche Bewegungssteuerungen drückt Als nächstes kommt das Level Sprite. Dieser beinhaltet alle Plattformen , auf denen der Spieler
herumlaufen oder springen wird Das Spiel wird
insgesamt vier Level haben, und jedes Level wird aus mehreren Teilen bestehen
, die in Reihen und wie die
Zellen eines Rasters in Reihen und
Spalten angeordnet sind, und der Spieler
kann sich frei zwischen den
verschiedenen Teilen eines Levels
hin und her bewegen . Das Test-Level-Kostüm hier ist nur ein temporäres
Kostüm, das wir
verwenden werden , wenn wir anfangen, das Sprite des Spielers zu
programmieren Für die tatsächlichen Level, die im Spiel erscheinen
werden, beginnt
jedes Kostüm mit
dem Wort Level, gefolgt von
der Zahl für das Level Danach haben wir einen Strich,
gefolgt von einer weiteren Zahl, dann einen weiteren Strich,
gefolgt von einer weiteren Zahl. Diese beiden Zahlen geben
die Zeile und Spalte an, in ein
bestimmter Teil einer Ebene im
Ebenenraster erscheinen wird . Zeile Null befindet sich am
unteren Rand des Rasters, und die Zeilennummer erhöht um eins, wenn wir uns im Raster nach oben bewegen. Spalte Null befindet sich
auf der linken Seite, und die Zahl nimmt zu,
wenn wir uns nach rechts bewegen. So erscheint zum Beispiel das Kostüm
der Stufe eins mit Strich 0-0
in Zeile Null, Spalte Null,
also unten links im Raster,
und der Strich 1—1 der Stufe eins
erscheint in Zeile eins, Spalte eins, also über und rechts
von Stufe eins, Strich 0-0 Sie sich keine Sorgen, falls das im Moment
verwirrend sein sollte, denn es wird alles Sinn machen sobald wir mit
dem Programmieren des Level-Sprites beginnen Okay? Der nächste Geist, den
wir haben, ist Umwelt. Wir werden das
Umgebungs-Sprite verwenden, um Dinge wie
Pflanzen und Steine zu
den Levels hinzuzufügen Pflanzen und Steine zu , nur
damit sie hübsch aussehen Beim Level-Sprite müssen
wir
Kollisionen zwischen
ihm und dem Sprite des Spielers erkennen Kollisionen zwischen
ihm und dem Sprite des Spielers um zu verhindern, dass der
Sprite des Spielers durch das Level fällt Das Umgebungs-Sprite
ist jedoch nur zum Anschauen da, also lassen wir den Spieler direkt durch die Objekte hindurchgehen diesem Grund muss es
ein vom
Level-Sprite getrenntes Sprite sein ein vom
Level-Sprite getrenntes Sprite Außerdem stimmen die Namen der Kostüme für
den Umgebungs-Sprite exakt mit den Namen einiger Level-Sprites-Kostüme überein diese Weise können wir ganz einfach das richtige Kostüm
auswählen, das für den
Umgebungs-Sprite
angezeigt werden soll , wenn sich das der Level-Sprites
ändert Die Objekte in den einzelnen
Umgebungskostümen passen außerdem perfekt
zu
den Kacheln des
entsprechenden Level-Kostüms Nur um dir ein Beispiel zu zeigen Ich kann alle Kacheln und das Level-100-Kostüm
der Level-Sprites
kopieren Level-100-Kostüm
der Level-Sprites Und füge sie in
das Kostüm der
Umgebungssprites Level 100 ein Und jetzt können wir sehen, dass
alles richtig ausgerichtet ist. Okay, als Nächstes haben wir die
Hintergrund-Sprites. Wir werden
dieses Sprite natürlich verwenden, um den
Hintergrund des Spiels zu erstellen Der Hintergrund wird aus mehreren Ebenen
bestehen, die sich zusammen mit dem Spieler bewegen, wenn er sich im Spiel Die Ebenen werden unabhängig voneinander
und mit
unterschiedlichen Geschwindigkeiten
scrollen , wodurch ein Parallax-Effekt entsteht,
ähnlich dem, was wir mit
den Sternschichten im Spiel
Cosmic Havoc gemacht haben den Sternschichten im Spiel
Cosmic Havoc Der flüssige Sprite wird in
jedem Level des Spiels am unteren Rand befinden,
und der Spieler muss
verhindern, dass er hineinfällt,
sonst verliert er ein Leben In den meisten Levels
verwendet der Flüssiggeist das Wasserkostüm, aber es gibt auch ein Lavakostüm das wir für
das Boss-Level verwenden werden Als nächstes haben wir den
Blackout-Sprite. Der Blackout-Sprite ist ein großes schwarzes Quadrat, das die gesamte Bühne
bedeckt Wir werden es verwenden, um
den Bildschirm ein- und
auszublenden , wenn wir
zwischen verschiedenen Ebenen wechseln Als Nächstes verwenden wir das
Münzsymbol, um
die Münzen anzuzeigen , die der Spieler in jedem Level sammeln
muss Die Münzen werden mit einer Animation versehen , die den Anschein erweckt, als
würden sie sich drehen Der Slope-Slide-Effekt
und die Staubpartikel-Sprites sind nur einige
Spezialeffekte die bestimmten
Spieleraktionen hinzufügen können Wir verwenden den
Staubpartikel-Sprite, um
einen Staubeffekt zu erzeugen, wenn der
Spieler nach dem
Sprung wieder auf
dem Boden landet , und wir verwenden den Hangrutscheffekt,
wenn der Spieler den Hang hinunterrutscht Die Schnecken-, Bienen
-, Fliegen - und Fisch-Sprites sind für
die Feinde bestimmt , denen der Spieler in den Levels begegnen
wird Der Spieler muss den
Feinden entweder ausweichen oder auf sie springen,
um sie zu besiegen Und wie beim Spieler-Sprite haben
die gegnerischen Sprites
Kostüme, die
ihren verschiedenen Zuständen entsprechen, wie Move und
Dad, und sie werden auch einige
Animationen haben Als nächstes haben wir den
Spawnpunkt Sprite. Das Kostüm dafür ist ein einfaches schwarzes Rechteck
, das es unsichtbar
macht und
Klone davon an verschiedenen
Stellen in jedem Level platziert Klone davon an verschiedenen
Stellen in Der Hauptzweck besteht
darin, dafür zu sorgen ,
dass der Spieler, wenn
er in die Flüssigkeit
fällt noch
etwas Lebenspunkte übrig hat, an der Stelle des Spa-Punktes,
den
er zuletzt durchquert hat
, wieder erscheint oder wieder auftaucht Stelle des Spa-Punktes,
den , wieder erscheint oder wieder auftaucht Das nächste Sprite ist
das Exit-Sprite. Wir platzieren am Ende jedes Levels ein Exit-Sprite
. Und sobald der Spieler alle
Münzen eines Levels
gesammelt hat , wird
der Ausgang aktiv Wenn der Spieler dann mit dem Exit-Sprite in
Kontakt kommt, er
zum nächsten Level Je nach Level das Ausgangssprite
entweder eine Flagge mit einer
zufällig ausgewählten Farbe
oder es handelt sich um eine Tür, die zunächst geschlossen ist und sich
dann öffnet, sobald sie aktiv
wird Als nächstes haben wir den Lock-Sprite. Die Kostüme für dieses Sprite sind im Grunde nur Kacheln
mit Schlössern darauf, und sie verhindern, dass
der Spieler auf bestimmte
Teile einiger Level zugreift Wie beim
Umgebungs-Sprite entsprechen
die Kostümnamen dem Teil
des Levels, entsprechen
die Kostümnamen dem in dem die Kacheln
erscheinen sollen Namen der
Lock-Sprite-Kostüme geben jedoch auch an , welchen Schlüssel der Spieler sammeln
muss um die Steine freizuschalten und zu
entfernen Und für die Schlüssel, die
der Spieler sammeln muss, verwenden
wir hier den Schlüssel Sprite Okay, das nächste Sprite sind die Jump-Pad-Sprites. Diese erhöhen die Sprunghöhe des
Spielers und
ermöglichen es ihm, Teile
eines Levels zu erreichen , die zu
hoch sind, um sie normal zu erreichen Als nächstes folgt das Pause-Sprite. Wir verwenden hier das
Pause-Button-Kostüm, um während des Spiels oben rechts auf
der
Bühne
eine Pause-Taste anzuzeigen eine Pause-Taste während des Spiels oben rechts auf
der
Bühne Wenn der Spieler auf
die Pause-Taste klickt, pausieren
wir das Spiel und
öffnen das Pause-Overlay, das aus
Schaltflächen besteht, auf die der Spieler
klicken kann , um entweder
das Spiel fortzusetzen oder das Spiel zu beenden Als Nächstes haben wir das Herz Sprite und den
Münzzähler Diese werden während
des Spiels immer oben links auf der
Bühne erscheinen während
des Spiels immer oben links auf der
Bühne Wir verwenden den
Münzzähler, um die Anzahl
der Münzen anzuzeigen , die der Spieler
im aktuellen Level noch sammeln Dieses Sprite besteht hauptsächlich aus Kostümen für die Ziffern
Null bis Neun und funktioniert ähnlich wie die Punkteanzeigen, die wir in den beiden
vorherigen Spielen
erstellt haben in den beiden
vorherigen Spielen
erstellt Und mit dem Herz-Sprite zeigen
wir an, wie viel Gesundheit
der Spieler derzeit Der nächste Sprite ist
der Boss-Sprite. Wir werden dieses
Sprite natürlich für den Boss verwenden, den
der Spieler besiegen muss, um das Spiel zu beenden Ähnlich wie beim Herz-Sprite
für die Spielergesundheit verwenden
wir den
Boss-Gesundheitsbalken-Sprite, verwenden
wir den
Boss-Gesundheitsbalken-Sprite um die
Gesundheit des Bosses anzuzeigen Während des Bosskampfes feuert der Boss
Raketen ab, die
den Spieler suchen , und dafür verwenden wir
den Raketensprite Und wenn eine Rakete den Spieler
trifft, spielen
wir die Explode-Animation ab, wir
das Explosions-Sprite verwenden Als nächstes kommt das
Text-Overlay-Sprite. Bei diesem Sprite werden wir Text auf der ersten und
letzten Ebene des Spiels anzeigen Text auf der ersten und
letzten Ebene des Der Text erklärt
dem Spieler, was passiert
und was er tun muss Als nächstes folgt das Sprite auf dem Titelbildschirm. Wie bei Cosmic Havoc werden
wir zu
Beginn des Spiels einen Titelbildschirm anzeigen Dieser wird
aus einem Hintergrund, dem Titel für
das Spiel,
der Play-Schaltfläche und
einigen Buttons zum Ein- und
Ausschalten der Musik und der
Soundeffekte bestehen Titel für
das Spiel,
der Play-Schaltfläche und
einigen Buttons zum Ein- und
Ausschalten der Musik und der
Soundeffekte Endlich haben wir den
N-Screen-Sprite. Wir zeigen es an, wenn der
Spieler den Boss besiegt, und teilen ihm mit
, dass er das Spiel
erfolgreich abgeschlossen hat erfolgreich abgeschlossen Ordnung, es ist klar, dass wir noch
eine Menge Arbeit vor uns haben, aber wir werden
alles Schritt für Schritt aufbauen dabei eine Menge
Dinge
lernen Und bevor wir es wissen, werden
wir eine voll funktionsfähige
und großartige Plattform oder ein Spiel haben . Und wie üblich werden wir damit beginnen
, dass sich der Spieler auf der Bühne frei
bewegen kann.
66. Spielschleife und Kontrollbehandlung: Nun, dieses Spiel
wird offensichtlich viele
bewegliche Teile haben. Und damit alles korrekt
funktioniert,
insbesondere wenn wir
beginnen, Kollisionen zwischen
den verschiedenen Sprites zu erkennen , müssen
wir kontrollieren, wann bestimmte Ereignisse
im Spiel passieren Wir werden das mit
Hilfe einer Game-Loop tun, die in
jedem Frame
des Spiels läuft und Nachrichten
an die Sprites
sendet und ihnen
sagt, was und wann zu
tun Und weil der Game-Loop
alle Sprites steuert, erstellen
wir den Code
dafür im Hintergrund Okay,
lassen Sie uns im
Codebereich für den Hintergrund damit beginnen, zu den Ereignissen zu
gehen und auf den eine windgrüne
Flagge geklickt wurde Und hier werden wir
die Spielschleife laufen lassen. Und weil es kontinuierlich
laufen wird, müssen
wir die Kontrolle übernehmen
und einen Block für immer einbauen. Jetzt, im Spiel Loop, werden
wir eine
Reihe von Nachrichten senden. Die Sprites werden dann
die Nachrichten empfangen und
bestimmte Aktionen ausführen Mit der ersten Nachricht überprüfen
wir, ob der Spieler irgendwelche Steuertasten
drückt Gehen wir also zurück zu den Ereignissen und fügen einen Broadcast-Block hinzu. Und lass uns
eine neue Nachricht senden, die wir
Check Controls nennen können. Und bevor wir den Code
für die Überprüfung der Steuerelemente schreiben, wollen wir
die drei anderen
Game-Loop-Nachrichten übertragen . Diese drei werden
für die Aktualisierung der Sprites verwendet. Lassen
Sie uns für den ersten einen weiteren
Broadcast-Block hinzufügen und eine
Nachricht namens Update one senden Als Nächstes senden wir einen
weiteren
, den wir Update zwei nennen. Und zum Schluss wollen wir noch
ein weiteres mit dem Titel Update drei veröffentlichen. Der Grund, warum wir
drei separate Aktualisierungsnachrichten verwenden drei separate Aktualisierungsnachrichten ,
wird im
Laufe der Zeit immer sinnvoller. Aber im Grunde verwenden wir
die erste, um nach
Dingen wie Kollisionen zwischen dem Spieler-Sprite und
dem gegnerischen Sprite zu suchen Dingen wie Kollisionen zwischen dem Spieler-Sprite und
dem gegnerischen Sprite Wir verwenden die zweite um Dinge
wie Bewegungen,
Animationen und andere Aktionen auszuführen ,
und wir werden die
letzte verwenden, um sicherzustellen, dass alles auf der Bühne
richtig positioniert ist Okay. Jetzt kümmern wir uns um die
Check-Steuerungs-Meldung und
prüfen, ob der Spieler irgendwelche Steuerelemente
drückt, um
sein Sprite zu bewegen , und das machen
wir hier im
Kontroll-Sprite Der Grund dafür
ist hauptsächlich, den Hintergrund-
oder
Spieler-Sprite-Code nicht zu überladen Außerdem würde
es für
uns einfacher sein, in Zukunft einige zusätzliche
Steuerelemente hinzuzufügen, wie vielleicht einen
Joystick auf dem Bildschirm für Spieler
auf Ordnung,
lassen Sie uns im
Control-Sprite-Code damit beginnen, den Block W
I received check Controls einzufügen I received check Controls Um zu verfolgen, ob eine Steuertaste gedrückt
wird oder nicht, erstellen
wir ein
paar globale Variablen Gehen wir also zu Variablen
und erstellen eine neue. Und lass uns diese eine X-Achse nennen und sie für alle Sprites erstellen Der Wert dieser Variablen
ist entweder Eins,
minus Eins oder Null,
je nachdem , ob der Spieler eine rechte Steuerungstaste,
eine linke Steuerungstaste oder keine der beiden
drückt eine linke Steuerungstaste oder keine Lassen Sie uns auf ähnliche Weise
eine weitere Variable erstellen, sie Y-Achse
nennen und sie auch
für alle Sprites erstellen Diese hat
einen Wert von eins,
wenn der Spieler eine Aufwärts- oder Abwärtstaste drückt
, einen
negativen Wert von eins, wenn er eine Abwärtstaste
drückt oder Null, wenn er keine Aufwärts- oder Abwärtstaste
drückt Um die Werte
der Variablen festzulegen, verwenden
wir denselben Trick, den
wir bei Cosmic Havoc verwendet haben Lassen Sie uns also zuerst einen Block mit
zwei X-Achsen einfügen und ihn
dem Skript hinzufügen, wenn ich ihn erhalte Für die richtigen Steuerelemente überprüfen
wir, ob entweder
die rechte Pfeiltaste oder die D-Taste gedrückt wird. Gehen wir also zu Operatoren und fügen einen O-Block
zum Block Set Two hinzu. Gehen wir dann zur Erkennung über und verwenden
einen Tastendruckblock für jede
der Bedingungen des Oder-Blocks. Lassen
Sie uns beim ersten Mal überprüfen, ob die
Rechtspfeiltaste gedrückt ist. Und für den zweiten überprüfen
wir, ob die
D-Taste gedrückt ist. Wenn wir das Spiel jetzt starten, können
wir sehen, dass der
Wert der X-Achse
falsch ist , wenn wir keine rechte Steuertaste drücken
, aber wenn wir
eine der Tasten gedrückt halten, wird
der Wert wahr. Und wie wir
in Cosmic Havoc gelernt haben, Scratch und andere
Programmiersprachen einen wahren Wert oft behandeln
Scratch und andere
Programmiersprachen einen wahren Wert oft als Eins
und einen falschen Wert als nun zu überprüfen, ob eine linke Steuertaste gedrückt
wird, gehen
wir zurück zu den Variablen und führen eine Änderung der
X-Achse für Block durch Wenn wir die X-Achse um
Null ändern und das Spiel starten, können
wir jetzt tatsächlich
sehen, dass Scratch
eine Eins oder eine Null anstelle
von Zwei oder Falsch verwendet . Und jetzt
wollen wir den
aktuellen Wert der
X-Achse davon subtrahieren , ob eine linke
Steuertaste gedrückt wird oder nicht Gehen wir also zunächst zu den Operatoren und fügen dem Block
zur Änderung
der X-Achse
einen Subtraktionsblock hinzu Verwenden wir eine Null als erste Eingabe, und
für die andere können
wir den
O-Block hier duplizieren und
prüfen, können
wir den
O-Block hier duplizieren und ob entweder der Linkspfeil oder die A-Taste gedrückt wird Wenn wir jetzt das Spiel starten, ist
der Wert Null, wenn wir
keine Steuertaste drücken. Es ist eins, wenn wir
eine rechte Steuertaste drücken, und es ist negativ, wenn wir eine
linke Steuertaste drücken. Okay? Jetzt müssen wir nur noch dasselbe für die vertikalen Steuerungen tun. Wir können also
diese beiden Blöcke duplizieren und sie
am Ende des Skripts
hinzufügen. Für diese wollen wir die Variable yXs setzen
und ändern. bei den Aufwärtspfeilen Achten
wir bei den Aufwärtspfeilen auf den
Aufwärtspfeil und die W-Taste Für die Abwärtstasten verwenden
wir den
Abwärtspfeil und die S-Taste. Wenn wir es jetzt versuchen, durch Drücken einer Aufwärts-Steuertaste
die Y-Achse auf eins und durch Drücken einer
Abwärtstaste auf eine negative Achse geändert Außerdem können wir
die horizontalen und vertikalen
Steuerelemente gleichzeitig verwenden . Okay, jetzt, wo wir wissen, dass die Steuertasten korrekt
funktionieren, können
wir zu Variablen gehen und Anzeige der
Steuervariablen
ausblenden. Als Nächstes verwenden wir
die Variablen, Als Nächstes verwenden wir um
die Spieler-Sprites zu bewegen
67. Spielerbewegung hinzufügen: Für die Spielerbewegung bewegen
wir zunächst das Sprite auf der Bühne nach links und
rechts Dazu
überprüfen wir bei jeder
Iteration der Spielschleife den Wert der
X-Achse Wenn der Wert nicht Null ist, bewegen
wir das Sprite des
Spielers um bestimmte Beträge entweder nach links oder rechts Für diesen bestimmten Betrag verwenden
wir eine lokale Variable im Sprite-Code des Players Lassen Sie uns im Sprite-Code des Players eine neue Variable erstellen Wir können es Beschleunigung nennen. Und mach es nur für
dieses Sprite,
dann können wir weitermachen
und die Variable verstecken Der Wert der Beschleunigung
bleibt immer gleich. Also stellen wir ihn ein, wenn der
Spieler auf die grüne Flagge klickt. Gehen wir dazu zu den Events und geben dort Block ein
, auf den die grüne
Flagge geklickt wurde Gehen wir dann zu
Variablen und fügen Skript mit der grünen Flagge
einen festgelegten Beschleunigungsblock
hinzu, und setzen wir ihn auf zwei Als Nächstes kümmern wir uns jedes
Mal um die
Spielerbewegung , wenn das Sprite
die zweite Aktualisierungsnachricht erhält Gehen wir also zuerst zu den Ereignissen und fügen einen Block hinzu,
wenn ich erhalte, um zu
überprüfen, ob die Nachricht
aktualisiert wurde Damit
alles schön und sauber bleibt, werden
wir
verschiedene benutzerdefinierte Blöcke
für verschiedene Aktionen erstellen . Andernfalls werden die Skripte ziemlich
schnell chaotisch. also für die horizontale Bewegung Gehen
wir also für die horizontale Bewegung zu M-Blöcken
und erstellen einen neuen Wir können es „
horizontale Bewegung handhaben“ nennen .
Und klicken Sie auf Okay. Lassen Sie uns den definierten
Block irgendwo hin verschieben und fahren wir fort und fügen einen Block mit horizontaler
Bewegung hinzu, wenn ich Update zwei erhalte. nun die horizontale Bewegung angeht, nehmen wir
im Moment einfach den Wert der
X-Achsenvariablen, der wiederum entweder Eins,
minus Eins oder Null sein wird , und multiplizieren ihn mit dem
Wert der Beschleunigung. Dann ändern Sie die
Exposition der Spieler-Sprites anhand
des Ergebnisses dieser Multiplikation Gehen wir also zunächst zur Bewegung und fügen wir dem Skript für die
horizontale Bewegung des Griffs eine Änderung x pro
Block hinzu Gehen wir für die Eingabe zu Operatoren und fügen
einen Multiplikationsblock hinzu Gehen wir dann zu Variablen und machen wir die X-Achse
mal die Beschleunigung Wenn wir das Spiel jetzt ausführen, können
wir das
Sprite des Spielers nach links und rechts bewegen Im
Moment ist das nicht besonders ausgefallen, aber zumindest funktioniert es. Um es ein bisschen besser zu machen, können wir die Bewegung
etwas glätten , wie wir es in Cosmic Havoc getan haben Dazu können wir eine
SpeedX-Variable verwenden, um die
Geschwindigkeit des Spielers schrittweise zu erhöhen und zu verringern, wenn
er die Bewegungstaste Lassen Sie uns also zunächst
eine neue Variable namens
Speed x erstellen und sie nur
für dieses Sprite verwenden Und lassen Sie uns weitermachen und dem Skript mit
der grünen Flagge einen Satz zum Blockieren
hinzufügen und Geschwindigkeit x auf Null
initialisieren Fügen wir nun eine
blockweise Änderung am Anfang des Skripts für
horizontale Bewegungen Und lassen Sie uns es verwenden, um Geschwindigkeit x um das
Xx-fache der Beschleunigung zu
ändern, indem wir den Block von hier aus
verwenden Wenn wir nun die Exposition
der Sprites durch
Geschwindigkeit x ändern und das Spiel starten, gibt es derzeit keine Beschränkungen für den Wert
für Geschwindigkeit x, also bewegen wir uns immer schneller wir eine Bewegungstaste
gedrückt halten Geschwindigkeit x geht auch nie wieder auf
Null zurück, selbst wenn wir die
Bewegungstaste loslassen Um das zu beheben,
müssen wir etwas Reibung hinzufügen. Lassen Sie uns also einen Block mit zwei Sätzen einfügen
und ihn direkt über
dem Change-Spy-Block platzieren Damit setzen wir SpeedX auf den aktuellen Wert von
selbst
, multipliziert mit
einer Dezimalzahl von 0-1. Dadurch wird eine
Ober- und Untergrenze für den Wert von SpeedX
festgelegt und er wird schrittweise
auf
Null zurückgesetzt den Wert von SpeedX
festgelegt und er wird schrittweise
auf , wenn der Spieler die
Bewegungstaste loslässt Gehen wir also zunächst
zu Operatoren und fügen eingestellten SpeedX-Block
einen Multiplikationsblock
hinzu Gehen wir dann zurück zu den Variablen
und machen wir SpeedX
mal, und machen wir SpeedX
mal Je näher der Wert an einem liegt, desto schneller erreicht das Sprite seine Höchstgeschwindigkeit und desto schneller wird es vollständig
zum Stillstand kommen Wenn wir das Spiel jetzt ausführen, ist
das Starten und Stoppen etwas flüssiger und SpeedX hat jetzt eine Obergrenze
von Acht und eine
Untergrenze Es wirkt allerdings etwas nervös, wenn der Sprite zum Stillstand Das liegt daran, dass wir, wenn das Sprite kurz
davor ist, zum Stillstand zu kommen, versuchen,
die Position zu ändern, indem
wir sehr
kleine Werte für Geschwindigkeit X verwenden, was bei Scratch nicht
so gut funktioniert Und auf jeden Fall müssen die
X- und Y-Positionen eines Sprites immer ganze Zahlen
sein Wenn wir versuchen, einen
Dezimalwert zu verwenden, wird dieser aufgerundet. Um dieses Problem zu beheben, können
wir also versuchen,
X um den exakten Wert von SpeedX zu ändern,
sondern X um den exakten Wert von SpeedX zu ändern, nicht versuchen,
X um den exakten Wert von SpeedX zu ändern,
sondern um
den gerundeten Wert Gehen wir dazu zu Operatoren und bringen einen runden Block
in einen leeren Bereich Lassen Sie uns den
SpeedXBlock hier in
den runden Block und den runden Block in
den Change-X-Block verschieben den runden Block und den runden Block in
den Change-X-Block Und jetzt geht es etwas reibungsloser, zum
Stillstand zu kommen. Okay. Jetzt können wir zu Variablen gehen und
die Variable Geschwindigkeit x ausblenden, und als Nächstes fügen wir etwas Schwerkraft hinzu, damit der Spieler nicht in der Luft herumschwebt
68. Gravität hinzufügen: Um mit der Arbeit an
der vertikalen Bewegung zu beginnen, gehen
wir zu Meine Blöcke und
erstellen einen neuen benutzerdefinierten Block. Nennen wir es „Vertikale
Bewegung handhaben“ und klicken Sie auf Okay. Lassen Sie uns den definierten
Block in
ein leeres Feld verschieben Bewegungsblock hinzufügen und dann, wenn ich Update 2 erhalte,
direkt nach dem Block
für die
horizontale Bewegung mit dem Griff einen vertikalen wenn ich Update 2 erhalte, . Ähnlich wie bei der
horizontalen Bewegung erstellen
wir eine
Geschwindigkeits-Y-Variable, wir die Y-Position der
Sprites ändern Wir reduzieren jedoch auch den Geschwindigkeits-Y-Wert für jedes
Bild um einen bestimmten Betrag
, den wir Schwerkraft nennen Das führt dazu, dass das
Sprite immer bis zum
Ende der Bühne
fällt Gehen wir also zuerst zu Variablen
und erstellen eine neue. Wir können es Geschwindigkeit Y nennen und es nur für dieses Sprite
machen. Und lassen Sie uns weitermachen und
dem Skript mit grüner Flagge einen Block mit zwei Sätzen
hinzufügen und
damit Geschwindigkeit Y auf Null setzen Als Nächstes erstellen wir eine
Variable für die Schwerkraft. Wir werden die Schwerkraft tatsächlich auch
für die feindlichen Sprites verwenden auch
für die feindlichen Sprites Also machen wir die
Gravitationsvariable global und setzen sie
in den Hintergrundcode also im Hintergrundcode Lassen Sie uns also im Hintergrundcode eine neue globale
Variable namens Gravity erstellen. Fügen wir nun oben im Skript mit
grüner Flagge einen Satz
zum Blockieren oben im Skript mit
grüner Flagge einen Satz
zum und setzen wir die Schwerkraft
auf minus 1,5. Das ist ein willkürlicher Wert , der meiner Meinung nach
für dieses spezielle Spiel gut funktioniert. Die Hauptsache ist
, dass es
negativ sein muss, um die Sprites nach unten zu
bewegen Okay? Gehen wir jetzt zurück zum Code für
die Spieler-Sprites. im Skript „Vertikale
Bewegungen handle Lassen Sie uns im Skript „Vertikale
Bewegungen handle“ eine
Änderung pro Block vornehmen und damit die
Geschwindigkeit Y anhand der Gravitationsvariablen ändern Geschwindigkeit Y anhand der Gravitationsvariablen Dann können wir die Geschwindigkeitsvariable
Y verwenden , um die Y-Position der Sprites
zu ändern , indem wir zur
Bewegung gehen und blockweise
eine Änderung Y vornehmen, dann zu den Variablen zurückkehren und einen SpeedY-Block
als Eingaben
verwenden Wenn wir nun das Sprite des
Spielers an
den Anfang der Stufe bringen und das Spiel starten, fällt
es mit immer schnellerer Geschwindigkeit bis
ganz nach unten Jetzt können wir das Sprite des
Spielers jedoch nicht mehr sehen. Lassen Sie uns
also dafür sorgen, dass es nicht
mehr fällt, sobald die Y-Position beispielsweise
unter minus Gehen wir dazu
zur Steuerung und fügen am Ende des einen Wenn-Block Skripts für
vertikale Bewegungen
einen Wenn-Block Und was die Bedingung angeht, gehen
wir zu den Operatoren und
geben einen Block kleiner als ein. Gehen wir nun zur Bewegung über
und überprüfen wir, ob die Y-Position kleiner als minus 140
ist. Wenn dies der Fall ist, bringen
wir einen Block mit
zwei Ys ein und setzen
ihn auf minus 140. Gehen wir auch zu Variablen und fügen dem Block I dann einen Block
mit zwei und setzen wir Geschwindigkeit
Y auf Null, damit Geschwindigkeit Y nicht
einfach kontinuierlich abnimmt, wenn der Spieler
nicht wirklich fällt. Wenn wir das Sprite jetzt
wieder nach oben bewegen und das Spiel starten, fällt
es herunter, bis es sich dem Boden
nähert, und stoppt dann Ordnung, jetzt
können wir die
Geschwindigkeitsvariable und die
Gravitationsvariable ausblenden , und der nächste Schritt besteht darin, den Spieler springen
zu lassen
69. Lass den Spieler springen: Um das Sprite des Spielers zum Springen zu bringen, müssen wir
lediglich die Geschwindigkeit Y auf
einen positiven Wert setzen , wenn der Spieler
eine Steuertaste nach oben drückt, und die Schwerkraft
sorgt dafür, dass das
Sprite wieder nach unten gebracht wird sorgt dafür, dass das
Sprite wieder nach unten gebracht also zunächst für den Wert, mit dem
wir Geschwindigkeit Y eingestellt haben, Lassen Sie uns also zunächst für den Wert, mit dem
wir Geschwindigkeit Y eingestellt haben, eine neue Variable erstellen Wir können es Jump Force nennen und es nur für
diesen Sprite machen Lass uns die Variable verstecken. Dann fügen wir dem Green Flag-Skript einen Block
mit zwei Sätzen hinzu. Und lassen Sie uns damit die Sprungkraft auf 12
setzen. Dies ist eine weitere willkürliche Zahl , von der ich festgestellt habe, dass sie mit diesem Spiel
gut funktioniert. Als nächstes, zurück in Definiere,
handhaben Sie die vertikale Bewegung. Bevor wir die Geschwindigkeit
Y durch die Schwerkraft ändern, überprüfen
wir, ob der Spieler eine Steuertaste nach oben
drückt, und wenn ja, setzen wir Geschwindigkeit Y
auf die Variable Sprungkraft. Lassen Sie uns also zunächst all
diese Blöcke vorerst vom
Skript trennen diese Blöcke vorerst vom
Skript Gehen wir dann zur Steuerung und fügen dem Skript einen I Then-Block
hinzu Um zu überprüfen, ob der Spieler eine Steuertaste nach oben
drückt, können
wir überprüfen, ob die
Y-Achsenvariable gleich eins ist. also für die Bedingung Gehen
wir also für die Bedingung zu den Operatoren und fügen
einen Gleichheitsblock hinzu Gehen wir dann zu Variablen
und prüfen wir, ob die
Y-Achse gleich eins Wenn ja,
bringen wir einen Satz zum
Blockieren und die Geschwindigkeit
W zur Sprungkraft Jetzt können wir
diese anderen Blöcke wieder
am Ende des Skripts anhängen diese anderen Blöcke wieder
am Ende des Skripts Und wenn wir das Spiel starten, sich das Sprite
durch Drücken
der Aufwärtspfeiltaste oder der W-Taste bewegt sich das Sprite
durch Drücken
der Aufwärtspfeiltaste oder der W-Taste nach oben und die Schwerkraft senkt
es wieder, wenn
wir die Taste loslassen Im Moment bewegt sich das Sprite jedoch einfach weiter nach oben,
solange wir eine Sprungtaste gedrückt halten Um das zu beheben, können wir verfolgen ob sich das
Sprite gerade
in der Luft befindet oder nicht , und Geschwindigkeit Y nur dann auf
Sprungkraft
setzen , wenn der Spieler
eine Sprungtaste drückt , obwohl er sich
noch nicht in der Um den Überblick zu behalten, erstellen
wir eine neue Variable Wir können es in der Luft aufrufen und es nur für diesen Sprite
machen. Der Fehlerwert ist
entweder Null, wenn der Spieler nicht in
der Luft ist , oder eins,
wenn er in der Luft Um sicherzugehen, dass der Spieler zu
Beginn des Spiels springen
kann, gehen
wir zunächst Beginn des Spiels springen
kann, zum Skript mit
der grünen Flagge über und setzen den Fehler auf Null. Als Nächstes, zurück im Skript für vertikale
Bewegungen
im Block I und dann, wo wir
überprüfen, ob die Y-Achse gleich eins ist, setzen
wir die Geschwindigkeit Y nur dann auf
Sprungkraft , wenn der
Fehlerwert aktuell Null ist Gehen wir zur Steuerung über und wickeln wir einen dünnen Block mit I
um den Block mit der eingestellten Geschwindigkeit Y. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock hinzu Gehen wir dann zurück
zu den Variablen und überprüfen
wir, ob
ein Fehler gleich Null ist Nehmen wir nun ein Set zum
Blockieren und platzieren es
im IY-Zugriffsblock direkt
nach dem I- und Fehlerblock. Setzen wir den Fehler auf eins. Sobald das
Sprite anfängt zu springen, gibt es bei der nächsten Ausführung dieses Blocks einen Fehler, sodass
speedY nicht auf Jump Force
gesetzt wird Wir können sehen, dass das funktioniert, wenn wir das Spiel
starten und eine
Sprungtaste gedrückt halten Im Moment
geht Irrtum jedoch nie wieder auf Null zurück, sodass wir nicht mehr springen können. Um das in diesem
unteren, wenn dünnen Block zu beheben, wo wir das
Sprite daran hindern, sich zu bewegen, müssen
wir einen weiteren Satz zum Blockieren hinzufügen und den Fehler auf Null setzen Und jetzt, sobald das Sprite den Boden
erreicht hat, können
wir Das Problem
ist jetzt allerdings, dass wir überhaupt nicht
sehr hoch springen können Wir könnten einfach
einen höheren Wert für die Variable
Sprungkraft verwenden . Aber ein
gängiges Merkmal von Plattformen oder Spielen ist natürlich, dass
der Spieler die Sprungtaste
gedrückt halten kann,
um
seine Sprunghöhe bis zu einem
bestimmten Punkt zu erhöhen . Wenn wir eine Sprungtaste
gedrückt halten, springt
das Sprite außerdem sofort wieder, sobald es den Boden
erreicht Um diese beiden Probleme zu beheben, erstellen
wir zunächst
eine neue Variable Nennen wir es Springen und
machen es nur für diesen Sprite. Wir verwenden die
Jumping-Variable, um zu verfolgen wie lange der Spieler eine Sprungtaste
gedrückt gehalten hat Solange der Wert
unter einem bestimmten Wert liegt, setzen
wir weiterhin
Speed Wide auf Sprungkraft. Dadurch kann der
Spieler
etwas höher springen , wenn er eine Sprungtaste
gedrückt hält. also zunächst wie gewohnt zum Lassen Sie uns also zunächst wie gewohnt zum Skript mit der
grünen Flagge übergehen und einen weiteren Satz zum Blockieren und den Satzsprung auf Null setzen. Jetzt geht es wieder um
die
vertikale Bewegung. Wenn ich dann hier blockiere, die
vertikale Bewegung. Wenn ich dann hier blockiere kann
Geschwindigkeit Y
derzeit nur einmal auf
Sprungkraft gesetzt werden einmal auf
Sprungkraft , sobald der
Spieler eine Sprungtaste drückt. Anstatt
dies nur zuzulassen , wenn der Fehler gleich Null ist, werden
wir es auch zulassen, wenn der Wert des Springens größer als Null ist Gehen wir dazu zu Operatoren und bringen einen OR-Block in einen
leeren Bereich für den Moment Lassen Sie uns nun den Block In air ist gleich Null hier als eine der Bedingungen für
den Or-Block Und für den anderen Fall fügen
wir einen Block „
größer als Gehen wir dann zu Variablen
und überprüfen wir, ob das Springen größer als Null
ist. Jetzt können wir diesen Block oder Block als Bedingung für
den Block I then verwenden. Als Nächstes nehmen wir eine Änderung
für Block und legen sie innerhalb des Wenn-Dann-Blocks
oberhalb der eingestellten Geschwindigkeit Y-Block, und ändern wir das Springen um eins. Und jetzt
wollen wir Geschwindigkeit Y nur dann auf
Sprungkraft setzen , wenn das Springen derzeit
unter einer bestimmten Zahl liegt. Gehen wir also zur
Steuerung über und wickeln wir einen
If-Block um nur
den Block mit der eingestellten Geschwindigkeit Y. Für die Bedingung gehen wir zu den Operatoren und geben einen Block mit
weniger als einem Block ein. uns nun anhand eines Duplikats
des Sprungblocks überprüfen, Lassen Sie uns nun anhand eines Duplikats
des Sprungblocks überprüfen, ob weniger als sieben gesprungen
werden. Sobald
wir mit dem Springen beginnen, wird
der Fehler Null sein, also dieser I-Block wird ausgeführt die
Sprungvariable wird 0-1
geändert Und weil weniger als sieben Sprünge gemacht
werden, wird
Geschwindigkeit Wi auf Sprungkraft gesetzt Wenn wir dann weiterhin die Sprungtaste
gedrückt halten, wir
das nächste Mal auf I drücken
, dann Block, im Fehler wird eins sein, aber jetzt wird das Springen größer als Null
sein, sodass der Block trotzdem läuft. Springen erfolgt auf 1—2
, Das Springen erfolgt auf 1—2
, also weniger als sieben, also wird Geschwindigkeit Wi wieder
auf Sprungkraft gesetzt, wodurch das Sprite
noch höher geht.
Das wird so lange fortgesetzt, bis der
Sprung sieben erreicht Im Moment wird das
Springen nie wieder
auf Null zurückkehren und wir
werden nicht wieder springen können Damit das korrekt
funktioniert, müssen
wir sicherstellen, dass das Springen
auf
Null gesetzt ist, wenn der Spieler
keine Sprungtaste drückt. Um das zu tun,
müssen wir hier
die I, Y-Achse entspricht
einem Block, durch einen I, glaube ich, TS-Block ersetzen die I, Y-Achse entspricht hier
die I, Y-Achse entspricht
einem Block, durch einen I, glaube ich, TS-Block Gehen wir also zuerst
zu Control und bringen einen, wie ich finde, TS-Block
in einen leeren Bereich Lassen Sie uns die Y-Achse, die
einem Block von hier aus entspricht,
als Bedingung verwenden und die Blöcke
aus dem
ITN-Block in den I-Teil
des I-Thints-Blocks
verschieben ITN-Block in den I-Teil
des I-Thints-Blocks Und was den LTs-Teil angeht, gehen
wir zu Variablen über, in einen Block ein
und setzen den Satz auf Null springen Dann können wir
den leeren ITN-Block hier durch den neuen
ITN-LS-Block ersetzen und
dabei sicherstellen, dass alles wieder
angehängt Wenn wir nun das Spiel starten und eine Sprungtaste
gedrückt halten, springt das
Sprite höher Und wenn wir die Taste weiter
gedrückt halten, nimmt
die Sprungvariable
weiter zu, sodass wir nicht sofort
wieder springen , wenn wir den Boden erreichen Um wieder zu springen,
müssen wir zuerst
die Sprungtasteneinstellung loslassen und auf Null
zurückspringen und sie dann erneut
drücken. Außerdem steigt das Sprite nicht so hoch,
wenn wir schnell eine Sprungtaste drücken
und wieder loslassen Im Moment können wir die Variablen „In der
Luft“ und „Springen“ verstecken. Und als Nächstes werden wir die Dinge
etwas spannender machen,
indem wir einige Plattformen hinzufügen , auf denen der Spieler
laufen und springen kann.
70. Gehen auf dem Niveau: Wenn wir
hier auf das Level-Sprite eingehen und uns die Kostüme
ansehen, habe ich vor ein
paar Lektionen kurz erwähnt, dass
wir das Test-Level-Kostüm
hier zu Testzwecken verwenden werden hier zu Testzwecken Lasst uns
das Test-Level-Kostüm auswählen
und das
Level-Sprite auf der Bühne sichtbar machen Okay, also wenn wir zum
Code für das Spieler-Sprite zurückkehren, weil das Level aus
mehreren Plattformen auf verschiedenen
Höhen besteht , können
wir
das Spieler-Sprite nicht einfach auf
einer bestimmten Y-Position halten , wie
wir es bisher getan haben Stattdessen
müssen wir kontinuierlich
überprüfen, ob das
Sprite des Spielers
mit dem Level-Sprite kollidiert , und die
Y-Position des Spieler-Sprites so
anpassen , dass es
auf den Plattformen zu stehen scheint Okay? Und damit
alles schön und ordentlich bleibt, machen
wir das in
einem benutzerdefinierten Block. Gehen wir also zu mBloxs
und erstellen einen neuen. Geben wir zunächst
move vertical B und erstellen wir eine
neue Eingabe namens DY Klicken Sie dann auf Okay. Lassen Sie uns
den definierten Block hier nach unten verschieben. Und im Handle-Skript für
vertikale Bewegungen können
wir die eingestellte Geschwindigkeit
Y auf Null speichern und einen Fehler
auf Null Blöcke setzen und den Rest
des ITN-Blocks hier
loswerden den Rest
des ITN-Blocks hier
loswerden Lassen Sie uns auch den Block „
Änderung Y nach Geschwindigkeit Y“ beiseite legen und ihn durch
einen Block zur vertikalen Bewegung ersetzen Und für die Eingabe können
wir hier den Block
Geschwindigkeit Y verwenden. Alles klar und
definiere „Vertikal bewegen Lass uns weitermachen und die
Änderung Y blockweise hineinbewegen und Y
durch die DY-Eingabe ändern. Als Nächstes überprüfen wir, ob
das Spieler-Sprite das Level-Sprite berührt Wir werden dies im gesamten Code tatsächlich
mehrmals tun. Um
also zu vermeiden, dass
der Code mehrmals neu geschrieben wird, führen
wir die Prüfung
in einem Lassen Sie uns also einen neuen Block erstellen. Im Moment werden wir den Block
nur verwenden, um zu überprüfen, ob wir
die Level-Sprites berühren, aber irgendwann werden wir ihn auch verwenden, um zu überprüfen,
ob wir
andere feste Objekte wie
das Lock-Sprite und
das Jump-Pad-Sprite berühren andere feste Objekte wie das Lock-Sprite und
das Jump-Pad-Sprite Lassen Sie uns den Blockcheck aufrufen, indem wir Festkörper
berühren und dann auf Okay klicken. Wir können den definierten
Block irgendwo hier drüben verschieben. Und lassen Sie uns weitermachen und am unteren Rand des Skripts „Vertikal verschieben“ ein Häkchen
hinzufügen,
das den
durchgehenden Block berührt . Okay, und definiere ein
Häkchen, das einen Festkörper berührt Wir brauchen eine Möglichkeit,
das Skript
für den vertikalen Zug darüber zu informieren ob der
Spieler einen Festkörper berührt oder nicht. Dafür erstellen wir
eine neue Variable. Gehen wir also zu Variablen und erstellen wir eine neue, Touch-Solid
nennen. Und wenn wir es nur für
dieses Sprite machen, können wir weitermachen
und die Variable verstecken Das erste, was wir
im Skript Check Touching
Solid machen , ist dass
wir ein Set auf
Block setzen und Touching
Solid auf Null setzen Das bedeutet, dass das Sprite
keinen Festkörper berührt. Als Nächstes prüfen wir, ob das
Sprite das Level berührt. Gehen wir also zur Steuerung
und fügen einen IN-Block ein. Gehen
wir für den Zustand zur Erkennung über, bringen einen berührenden
Mauszeigerblock hinein und prüfen, ob wir das Level-Sprite
berühren Wenn das der Fall ist, gehen
wir zu Variablen, ein Set zum Blockieren hinzu und
setzen das Berühren von Solid auf eins Das bedeutet, dass wir einen Festkörper
berühren. Okay? Jetzt, zurück im Skript „Vertikal
bewegen“, nachdem wir den Check
ausgeführt haben, der den festen Block berührt, können
wir die Variable Touching
Solid verwenden. Gehen wir dazu zu Control und fügen einen
Wenn-Dann-Block ein. Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen wir dann zu Variablen und
prüfen, ob das Berühren eines Festkörpers gleich eins ist. Wenn ja, wollen wir das Sprite
des Spielers
ein wenig nach oben bewegen , sodass es das Level
nicht mehr berührt Eine Möglichkeit, dies
zu tun, besteht darin, das Sprite wieder nach
oben zu bewegen , um den es sich im
aktuellen
Frame nach unten bewegt Der Betrag, um den es sich nach unten bewegt hat,
wird durch
die DY-Eingabe bestimmt, die denselben
Wert wie Geschwindigkeit Y hat. Wir können
also den absoluten Wert
von DY
nehmen und ihn wieder zur Y-Position
des Sprites hinzufügen Wenn sich das Sprite also beispielsweise um
zehn Schritte
nach unten bewegt, können wir
es wieder um zehn Schritte nach oben bewegen Gehen wir dazu
zu Motion und fügen I then
einen Block mit der Änderung Y B
hinzu Für die Eingabe gehen wir zu Operatoren und fügen einen
Block mit Bauchmuskeln hinzu. Und wir wollen den
absoluten Wert von DY ermitteln. Dadurch wird der
Wert positiv, was das Sprite wieder nach oben treibt Wir wollen auch die Geschwindigkeit
Y und die
Fehlervariablen wieder auf Null setzen Y und die
Fehlervariablen wieder auf Null Nehmen wir also die
Blöcke, die wir
hier gespeichert haben, und fügen sie
dem Block I then hinzu. Lassen Sie uns nun das Sprite des
Spielers so bewegen, dass es sich
etwas über dem Boden befindet,
und es versuchen Es ist definitiv nicht perfekt, aber es hält
uns meistens auf den Plattformen Wenn wir jedoch auf und ab springen, hält
der Sprite kurz am Boden inne
, der Sprite kurz am Boden inne bevor er sich Das passiert, weil, wenn der Wert von speedY ziemlich hoch
wird, das Sprite während eines einzigen Frames
von ein paar Schritten über
dem Level auf ein paar Schritte in das Level hineinfällt Das Sprite bewegt sich also zurück
zu seiner ursprünglichen Position,
ein paar Schritte über dem Level, ein paar Schritte über dem Level, fängt
dann Die Lösung ist jedoch ziemlich
einfach. Anstatt
das Sprite
um den gesamten Betrag, den es nach unten bewegt hat
, wieder nach
oben zu bewegen, können
wir es nur einen Schritt nach dem anderen wieder nach oben bis es das Level
nicht mehr berührt Also zuerst können wir hier
die Änderung Y durch Bauchmuskeln
des DY-Blocks loswerden hier
die Änderung Y durch Bauchmuskeln
des DY-Blocks Und jetzt müssen wir eine Wiederholung
verwenden, bis der
Block, der sich wiederholt, bis das
Berühren eines Festkörpers gleich Null ist Gehen wir also zu Control, nehmen eine Wiederholung bis zum
Block und legen sie
in den Wenn-Dann-Block unter den beiden gesetzten Für die Bedingung können
wir hier duplizieren, dass ein sich
berührender Festkörper gleich
einem Block entspricht,
und es so ändern, dass sich berührender
Festkörper gleich Null Innerhalb der Wiederholung bis zum Block erhöhen
wir die
Y-Position um Überprüfe dann, ob das Sprite das Level
immer noch berührt. Gehen wir also zur Bewegung über, fügen einen Y-Block zur Änderung und ändern wir ihn um eins Gehen wir dann zu
Mblocks und setzen ein Häkchen durchgezogenen Block
unter dem Y-Änderungsblock
berührt Im Moment funktioniert das allerdings nicht,
weil
die Wiederholung bis zum
Block sich über mehrere Frames erstreckt und
da die Schwerkraft das Sprite um mehr
als einen Schritt pro Frame
bewegt, bewegt
es sich einfach weiter nach unten Um das zu beheben, müssen wir es so
machen, dass es sich wiederholt, bis der
Block alle Wiederholungen in
einem einzigen Frame durchläuft Wiederholungen in
einem einzigen Wie wir in Cosmic Havoc gesehen
haben, können wir dies mit
benutzerdefinierten Blöcken tun, die ohne die Funktion zur
Bildschirmaktualisierung ausgeführt werden Um es für das Skript „Vertikal
verschieben“ zu aktivieren, können
wir mit der rechten Maustaste auf den Block „Definieren“ klicken
, „Bearbeiten“, „
Ohne Bildschirmaktualisierung prüfen“
auswählen hier „Bearbeiten“, „
Ohne Bildschirmaktualisierung prüfen“
auswählen und auf „Okay“ klicken Wenn wir den Spieler nun knapp
über den Boden bewegen und das Spiel erneut
ausführen, bleibt
das Sprite immer oben auf den Levelplattformen und unterbricht nicht mehr
am Ende eines Sprungs Ordnung, wir machen jetzt
ziemlich gute Fortschritte mit den Levelkollisionen, aber wir müssen noch ein
paar Probleme beheben Erstens: Wenn wir springen, während wir uns unter einer niedrigen
schwimmenden Plattform befinden, gehen
wir direkt durch sie hindurch
und landen darauf Zweitens, wenn wir in einen
senkrechten Teil des Levels gehen, bewegen
wir uns sofort nach
oben. Und drittens sind wir in
der
Lage, uns mit
verschiedenen Körperteilen
des Spielers,
wie Armen und Helmen, auf die Plattformen des Spielers,
wie Armen und Helmen, die Wir werden all diese Probleme in den
nächsten Lektionen beheben .
71. Kollisionen mit mehr Ebenen: Das erste Problem, das wir mit
den Level-Kollisionen beheben werden,
ist, dass wir es
so gestalten , dass wir nicht durch
den Boden der Plattformen springen können Das Problem ist momentan, dass wir davon ausgehen, dass alle
Kollisionen mit dem Level nur am unteren
Rand des Sprites
des Spielers auftreten am unteren
Rand des Sprites
des Spielers Also bewegen wir es nach oben, um aus dem Level
herauszukommen. Was wir auch tun müssen
, ist zu überprüfen, ob die Spitze des Sprites
des Spielers das Level
berührt, und wenn ja,
bewegen wir das Sprite Schritt für
Schritt nach unten , bis
es das Level nicht mehr berührt Wenn wir springen, der Wert der DY-Eingabe und der vertikalen Bewegung
positiv Und wenn wir fallen oder wenn uns die
Schwerkraft
nach unten zieht, ist DY negativ. Wenn
wir also einen Festkörper berühren und DY positiv ist, wollen
wir uns im Grunde DY positiv ist, um jeweils einen
Schritt nach unten bewegen. Und wenn es negativ ist, wollen
wir um einen Schritt nach oben gehen. Um das zu tun, gehen wir
zur Steuerung und bringen einen I dann S-Block in
einen leeren Raum. Gehen wir für die Bedingung zu Operatoren und fügen
einen Block größer als ein
und überprüfen wir, ob DY größer als Null
ist. Das bedeutet, dass wir springen, also ist es wahrscheinlich, dass das Level irgendwo in der Nähe der Spitze
des Sprites
kollidiert, und das bedeutet, dass wir uns jeweils um einen Schritt nach unten
bewegen müssen einen Schritt nach unten
bewegen Gehen wir also zur Bewegung über, fügen dem Teil I blockweise eine Änderung Y hinzu und ändern wir
sie um eine negative Für das Häkchen, das hier einen
festen Block berührt wollen
wir ihn an der
Unterseite des Ithen-S-Blocks anhängen, da wir unabhängig vom Wert von
DY überprüfen müssen,
ob wir einen
Festkörper berühren . Jetzt können wir die Änderung Y
um einen Block in den Outs-Bereich verschieben um einen Block in den Outs-Bereich dann alles in
den Block Repeat Until einfügen. Wenn wir das Spiel jetzt ausführen, funktionieren
Kollisionen mit dem Boden
immer noch wie gewohnt Aber wenn wir jetzt springen und auf
den Boden einer Plattform stoßen, uns nicht mehr durch sie
bewegen Aber wenn wir hier unter
die unterste Hängeplattform kommen und eine Sprungtaste gedrückt halten, können
wir sehen, dass der
Sprite für kurze Zeit am Boden der
Plattform hängen bleibt für kurze Zeit am Boden der
Plattform Das passiert, weil
unser Springen weniger als sieben Blocks in den vertikalen
Bewegungsskripten des Griffs Selbst wenn unser Kopf
den Boden einer Plattform berührt, versucht er, Sprite höher zu
bewegen,
solange
es weniger als sieben den Sprite höher zu
bewegen,
solange
es weniger als sieben Sprünge Um dieses Problem zu beheben, können wir, wenn wir einen
Festkörper berühren und DY
größer als Null ist, den Sprung
auf einen hohen Wert setzen. Dadurch wird
verhindert, dass das Sprite
versucht, sich höher zu bewegen also im Skript „
Vertikal verschieben Gehen
wir also im Skript „
Vertikal verschieben“ zu Variablen
und fügen dem I-Teil
des In s-Blocks einen Satz zu Block Jetzt müssen wir das
Springen nur noch auf sieben setzen , damit das funktioniert,
aber nur
für den Fall, dass
wir uns später für
eine Zahl entscheiden , die höher
als sieben ist, setzen
wir sie auf einen
wirklich hohen Wert wie 99. Wenn wir jetzt das Spiel starten, wenn wir springen und unser
Kopf auf eine Plattform trifft, fallen
wir sofort
wieder auf den Boden zurück, auch wenn wir die Sprungtaste
gedrückt halten. Ein weiteres kleines Problem, das wir haben ist, dass
wir
wieder in der Luft springen können, wenn unser
Kopf auf eine Plattform trifft . Das liegt daran, dass wir
derzeit die
Luft auf Null setzen , wenn
wir das Level berühren,
unabhängig davon, ob
wir fallen oder springen. Dadurch können wir
sofort
wieder springen , sobald wir das Level
berühren. Um das Problem zu beheben,
wollen wir die Luft nur dann auf
Null setzen , wenn der Wert von DY nicht größer als Null
ist. Das können wir tun, indem wir
den Block in Air to
Zero in den
Outs-Teil des IN-Outs-Blocks verschieben . Wenn wir es erneut versuchen, können wir
nicht mehr in die Luft springen, nachdem unser Kopf den Boden
einer Plattform berührt hat. In Ordnung. Lassen Sie uns nun das Problem beheben, dass wir,
wenn wir in
einen senkrechten Teil
des Levels gehen einen senkrechten Teil
des , plötzlich
nach oben kommen. Das liegt daran, dass
wir
den Spieler derzeit nur dann entweder nach oben oder
unten bewegen den Spieler derzeit nur dann entweder nach oben oder , wenn er das Level
berührt. Sobald das Skript „
Vertikal bewegen “ feststellt
, dass wir
das Level berühren und der Wert von
DY nicht größer als Null ist, das Sprite sofort nach bis es das Level nicht mehr
berührt Um dies zu verhindern, wollen wir, nachdem
wir
das Sprite horizontal bewegt haben,
was passiert, bevor
wir es vertikal bewegen , überprüfen, ob die linke oder rechte Seite des Sprites des Spielers das Level
berührt, und wenn ja, bewegen wir es
einen Schritt nach dem anderen zurück , bis
es das Level nicht mehr berührt. Wenn dann das Skript „
Vertikal bewegen“ ausgeführt wird, finden
alle Kollisionen, die es
erkennt, zwischen
dem Level und dem
unteren oder oberen Rand
des Sprites des Spielers statt,
nicht zwischen den Seiten. Okay, um mit
Kollisionen umzugehen , wenn wir uns horizontal
bewegen, gehen
wir zu MyBlock
und erstellen einen neuen Block Geben wir für dieses Beispiel move horizontal ein, indem wir eine neue Eingabe namens DX hinzufügen Stellen Sie sicher, dass die Option
Ohne Bildschirmaktualisierung ausführen aktiviert ist. Klicken Sie dann auf Okay. Lassen Sie uns den definierten Block unter Skript für
die horizontale
Bewegung des Griffs verschieben. Und im Skript „
Horizontale Bewegung bearbeiten ziehen
wir den X-Block für die
Änderung heraus, ersetzen ihn durch einen Block mit
horizontaler Bewegung und verwenden hier den
Block für runde Geschwindigkeit X als Eingabe. Dann können wir den Block „
X ändern“ in das Skript „
Horizontal verschieben “ verschieben und X mit der Dx-Eingabe
ändern. Als Nächstes wollen
wir, wie im Skript „
Vertikal bewegen“, prüfen, ob das
Sprite einen Festkörper berührt,
und wenn ja, es wiederholt um einen Schritt
zurück bewegen , bis
es keinen Festkörper mehr berührt Wir können also damit beginnen,
alles im Skript „
Vertikal bewegen“ zu duplizieren, indem wir damit
beginnen, dass das
erste Häkchen auf einen
durchgezogenen Block trifft, und es dann dem Skript „Horizontal
bewegen“ hinzufügen Anstatt Geschwindigkeit Y auf Null zu
setzen, wollen
wir natürlich Geschwindigkeit x auf Null setzen Und anstatt DY hier zu verwenden, wollen
wir Dx verwenden. Und da es sich um
horizontale Bewegungen handelt, müssen
wir
nichts mit der Sprungvariablen
oder der Fehlervariablen machen. Außerdem müssen wir
X statt Y ändern. Lassen Sie uns
also
die Change-Y-Blöcke loswerden Gehen Sie dann zur Bewegung über
und fügen Sie jedem Teil
des
Wenn-Dann-S-Blocks eine Änderung X für Block hinzu Wenn der Wert von DX
positiv ist ,
bewegen wir uns nach rechts. Um aus dem Level herauszukommen, müssen
wir uns also nach links bewegen. Also lasst uns X
durch minus eins ändern. Andernfalls müssen wir uns
nach rechts bewegen, also ändern wir X
durch ein positives. Okay, ich denke, wir sind
bereit, es zu versuchen. Wenn wir jetzt in einen
senkrechten Teil des Levels gehen, hindert uns das
daran, uns weiter zu
bewegen, und es schießt uns nicht nach
oben, nett. Wir haben jedoch ein kleines Problem, das uns
derzeit nicht klar ist. Um das Problem zu sehen, gehen
wir zum
Tab Kostüme für das Level der Sprites. Jetzt schnappen wir uns eine
dieser kleinen Hängeplattformen
und kopieren sie und fügen sie ein Und lassen Sie uns die Kopie nach unten bewegen bis sie
etwas über dem Boden herausragt. wir nun sicher, dass wir
alles abwählen , damit wir nicht versehentlich Dinge verschieben Dann lass uns das Spiel starten. Wenn wir zu
dem Teil des Bodens gehen , der herausragt, können
wir ihn nicht überqueren. An
solchen leichten Unebenheiten hängen zu bleiben, kann
ziemlich nervig sein Es wäre viel besser, den Spieler direkt
über
die Unebenheiten laufen zu lassen Spieler direkt
über
die Unebenheiten laufen Zu diesem Zweck können wir, wenn wir mit
dem Level kollidieren , während wir uns horizontal
bewegen, bevor wir das Sprite
rückwärts bewegen , um das Level zu verlassen, zunächst überprüfen, ob
wir
herauskommen , wenn wir
es nur ein bisschen nach oben bewegen es nur ein bisschen nach oben Wenn ja, können wir loslegen. Wir müssen den Sprite nicht rückwärts bewegen
. Andernfalls bewegen wir es
wieder dahin, wo es war, und fahren
dann damit fort, es rückwärts zu
bewegen Im Skript „Horizontal bewegen“
wollen wir innerhalb
der Einstellung, ob das Berühren eines Festkörpers einem Block
entspricht, als Erstes ob das Berühren eines Festkörpers einem Block
entspricht damit beginnen, das
Sprite des Spielers Schritt für Schritt nach oben zu bewegen , also
insgesamt vielleicht Bei jedem Schritt
überprüfen wir, ob das Sprite das Level
berührt,
und wenn nicht, können wir das gesamte Skript „Horizontal bewegen
“ beenden gesamte Skript „Horizontal bewegen Gehen wir also zunächst zur Steuerung und bringen einen Wiederholungsblock
in eine leere Stelle, und wir wollen das zehnmal wiederholen Bei jeder Wiederholung
wollen wir das
Sprite um einen Schritt nach oben bewegen Gehen wir also zur Bewegung über, bringen eine Änderung Y für
Block ein und ändern wir sie um Als Nächstes wollen wir überprüfen, ob das Sprite immer noch einen Festkörper
berührt Gehen wir also zuerst
zu M-Blöcken und setzen ein Häkchen, wenn wir den durchgezogenen Block
direkt unter dem Y-Änderungsblock berühren direkt unter dem Y-Änderungsblock Dann gehen wir zur Steuerung und platzieren einen, wenn auch dünnen
Block direkt darunter. Für die Bedingung können wir hier
ein Duplikat des sich berührenden
Volumenkörpers verwenden , der gleich Null ist. Wenn das der Fall ist, berührt
das Sprite
das Level nicht mehr und wir
müssen nichts weiter tun Also stoppen wir das gesamte
Skript, indem einen Stopp-Block einfügen und
ihn so einstellen, dass er dieses Skript stoppt Wenn der
Wiederholungsblock nun beendet ist, bedeutet
das, dass das Sprite
immer noch einen Festkörper berührt Wir müssen
ihn also rückwärts bewegen, um aus
dem Festkörper
herauszukommen Das Sprite ist jetzt jedoch zehn Schritte höher
als es sein sollte, also müssen wir
es zuerst wieder um zehn Schritte nach unten bewegen Dazu müssen wir nur
zur Bewegung zurückkehren, eine Änderung Y für
Block an den unteren Rand
des Wiederholungsblocks
anhängen und Y um minus zehn
ändern Jetzt können wir uns
das alles schnappen und wir wollen
es direkt am oberen Rand des I platzieren , wenn der Festkörper einem Block entspricht, noch bevor die
Geschwindigkeit X blockweise auf Null gesetzt Das liegt daran, dass wir
, wenn wir das Sprite über eine Unebenheit bewegen können , seine horizontale Bewegung nicht stoppen müssen Und wenn wir das Spiel jetzt ausführen, können
wir direkt über
kleine Unebenheiten im Level laufen Wenn die Unebenheit jedoch höher
als zehn Stufen ist, können
wir sie nicht überwinden
, was genau
das ist, was wir wollen Und das
ermöglicht uns tatsächlich auch, Hänge hinaufzugehen. Irgendwann schaffen
wir es aber so, dass wir einen Hang
hinunterrutschen, wenn
wir versuchen, darauf zu laufen. Ordnung, wir können zurück zu den Kostümen für die
Stufe Sprite Und werd dieses
zusätzliche Teil des
Test-Level-Kostüms los , das wir hinzugefügt haben Das letzte Problem,
um das wir uns kümmern müssen, ist, wo verschiedene Teile
des Sprites des Spielers das Level erreichen
können
72. Verwende die Player-Hitbox: Da wir anhand des aktuellen Kostüms
des
Spieler-Sprites nach Kollisionen mit dem Level
suchen , die Teile des Kostüms, die herausragen
, wie können
auch
die Teile des Kostüms, die herausragen
, wie Arme und Helme, mit
dem Level kollidieren Um das Problem zu beheben, können wir
vorübergehend zu
einem einfacheren Kostüm wechseln , bevor wir nach Kollisionen
suchen, danach wieder zu
einem komplizierteren Kostüm wechseln einem Das ähnelt
dem, was wir in
Cosmic Havoc gemacht haben , wo wir
ein einfacheres
Hitbox-Kostüm verwenden , wenn wir nach Kollisionen zwischen dem
Spieler-Sprite und
den Asteroiden
suchen Kollisionen zwischen dem
Spieler-Sprite und
den Asteroiden
suchen Spieler-Sprite und
den Asteroiden Wenn wir zum
Tab Kostüme für das Spieler-Sprite gehen, ganz unten ein paar
Hip-Box-Kostüme, haben
wir
ganz unten ein paar
Hip-Box-Kostüme, ein normales und eines für den Moment, in
dem der Spieler hockt, worauf Bevor wir nach Kollisionen
suchen, wechseln
wir vorerst vorübergehend zum normalen Hip-Box-Kostüm, bei
dem es sich um ein einfaches
Rechteck handelt Und nur um
dir zu zeigen, welchen Bereich
des Spieler-Sprites
die Hip-Box abdecken wird, gehe
ich zum
Idle Zero-Kostüm und
kopiere die Kostümteile kopiere die Kostümteile Und klebe sie auf
das Hip-Box-Kostüm. Jetzt können wir sehen, dass die Hip Box die Arme der Sprites des
Spielers
sowie den größten Teil des Helms ignoriert sowie den größten Teil des Helms Dadurch können wir uns Teilen des Levels nähern
und verhindern,
dass unsere Arme
oder unser Helm auf dem Level hängen bleiben Okay,
lassen Sie uns zunächst zum Sprite-Code des
Players gehen Bevor wir uns mit der horizontalen
und vertikalen Bewegung im Skript „Wenn ich
Update 2 erhalte“ befassen, wollen
wir das
Sprites-Kostüm
des Spielers auf das Hipbox-Kostüm umstellen . Das machen wir dann, wenn der Spieler die Nachricht von
Update 1 erhält Das wird später Sinn machen, wenn wir damit beginnen, nach
Kollisionen zwischen
dem Spieler-Sprite und den Sprites
des Feindes sowie
der Sprites für Sammelobjekte zu suchen Kollisionen zwischen
dem Spieler-Sprite und den Sprites
des Feindes sowie
der Sprites Feindes sowie
der Lassen Sie uns also zunächst das
Skript W Ich
erhalte Update 2 etwas nach unten verschieben Skript W Ich
erhalte Update 2 Dann gehen wir zu den Ereignissen, fügen einen neuen
Block ein, wenn ich erhalte , und setzen ihn auf, wenn
ich Update eins erhalte. Wir werden versuchen, all diese Skripte ziemlich
sauber zu halten, indem wir alles
innerhalb
von benutzerdefinierten Blöcken erledigen. Gehen wir also zu M-Blöcken
und erstellen einen neuen. Nennen wir es Set Hit
Box und klicken wir auf Okay. Wir können weitermachen und dem Skript W
I receive Update one
einen Set-Trefferbox-Block hinzufügen . Dann bringen wir den definierten Set-Hit-Box-Block
irgendwo hier drüben hin. Wie wir bereits gesehen haben, hat
das Spieler-Sprite tatsächlich zwei Trefferfelder und wir werden irgendwann den Status
des Spielers verwenden , um zu bestimmen
, welche Trefferbox verwendet werden soll Aber vorerst verwenden wir einfach
das normale Hitbox-Kostüm. also in der definierten Set-Hitbox Gehen
wir also in der definierten Set-Hitbox zu Looks, bringen ein Switch-Kostüm in den Block und schalten das
Kostüm in die Hitbox um. Da das Sprite nun die Nachricht „Update eins“ vor
der Nachricht „Update zwei“ erhält , wechselt
sein Kostüm zum Hip-Box-Kostüm bevor es nach
Kollisionen mit dem Level sucht Okay, nachdem das alles
erledigt ist, wollen
wir wieder
zu einem normalen Kostüm wechseln Gehen wir dazu zu Mblocks und erstellen
einen neuen benutzerdefinierten Block Nennen wir es animiert
und klicken wir auf Okay. Platzieren wir nun einen
Animationsblock ganz unten im
Update-to-Skript und verschieben den definierten
Animationsblock hierher Irgendwann werden wir
das Animate-Skript verwenden, um das
Sprites-Kostüm zu animieren. Aber jetzt gehen wir
einfach zu Looks, bringen einen Switch-Kostümblock rein
und wechseln zum
Idle Wenn wir das Spiel jetzt ausführen, können
wir nicht feststellen, dass viel
anders ist , weil der Sprite wieder zum
Idle Zero-Kostüm
wechselt,
bevor der Bildschirm aktualisiert wird wieder zum
Idle Zero-Kostüm
wechselt , aber jetzt
können die Füße des Sprites mehr in das Level hineingehen, und wenn wir zu einem
senkrechten Teil des Levels gehen, können
wir näher an ihn herankommen weil der Helm nicht mehr mit dem Level
kollidiert. Wenn wir auf eine
Plattform springen und von der Seite fallen, verfangen sich
unsere Arme und unser Helm auch
nicht daran. Fantastisch. Gut, also ich
weiß, dass du es wahrscheinlich genauso leid bist, nur
ein einziges Kostüm
für den Spieler Sprite zu sehen wie ich Also werden wir als Nächstes daran arbeiten, die Sprites zu
animieren.
73. Fehlerbehebung und Coyote-Zeit: Bevor wir anfangen, den Spieler
zu animieren, gibt es einen Bug beim Springen,
den wir wirklich schnell beheben
sollten Wenn wir auf eine Plattform springen
und herunterfallen, können
wir in der
Luft springen . Das liegt daran, dass
wir im Skript für
vertikale Bewegungen die Variable in
der Luft nur
auf eins setzen , wenn der
Spieler springt, aber wir müssen sie auch auf eins
setzen, wenn der
Spieler fällt Dazu können wir das Set in der
Luft zu einem Block von hier aus
bewegen und es in das Skript „
Vertikal verschieben“
einfügen bevor der erste Check den festen Block
berührt. Und jetzt können wir nicht mehr in die
Luft springen , nachdem wir von einer Plattform
gefallen Dies macht
es jedoch etwas schwierig zu springen, wenn wir
vom Rand einer Plattform gehen Wenn sich der Sprite auch nur leicht von der Plattform entfernt, können wir nicht springen Dies ist ein häufiges
Problem, das ich bei
Plattformern sehe , die von
neuen Spieleentwicklern entwickelt wurden Eine Lösung für dieses Problem besteht darin, etwas
zu verwenden, das
als Coyote Time bezeichnet wird Dies ist nach dem Kojoten in
den Zeichentrickserien Coyote und
Roadrunner benannt Roadrunner In fast jeder Folge der
Jagd nach dem Straßenläufer ein paar
Meter über den Rand
einer Klippe, rennt der Kojote auf der
Jagd nach dem Straßenläufer ein paar
Meter über den Rand
einer Klippe,
bevor er es schließlich
bemerkt und zu Boden fällt bevor er es schließlich rennt der Kojote auf der
Jagd nach dem Straßenläufer ein paar
Meter über den Rand
einer Klippe,
bevor er es schließlich
bemerkt und zu Boden fällt. In ähnlicher Weise können
wir bei Coyote Time
auf einer Plattform oder einem Spiel dem
Spieler das Springen ermöglichen, auch wenn er sich leicht vom Der Spieler
bemerkt vielleicht nicht einmal, dass das passiert, aber es fühlt sich für ihn einfach besser an und ist viel
weniger Um Coyote
Time in unserem Spiel zu implementieren
, können wir,
anstatt nur Null oder Eins für
die Fehlervariable zu
verwenden, kontinuierlich erhöhen ihren Wert kontinuierlich erhöhen, während der
Spieler in der Luft ist und ihm erlauben zu
springen, solange der Wert unter einer
bestimmten kleinen Zahl liegt also zunächst im Handle-Skript zur
vertikalen Bewegung den Wert Nir, Lassen Sie uns also zunächst im Handle-Skript zur
vertikalen Bewegung den Wert Nir, der gleich
Null ist, aus dem Oder-Block herausziehen und ihn zur
Seite Gehen wir dann zu Operatoren, ersetzen ihn durch einen Block, der
kleiner als ist, und überprüfen wir, ob der
Fehler weniger als vier ist Das sollte reichen. Jetzt können wir den Gleichheitsblock loswerden, und im Skript „
Vertikal verschieben“ wollen
wir ihn um eins erhöhen, anstatt den Fehler auf eins zu setzen anstatt den Fehler auf eins zu Lassen Sie uns also den Block „Set
in error“ von hier entfernen. Gehen wir dann zu Variablen, ersetzen sie durch eine Änderung pro Block und die
Änderung des Fehlers durch eine. Und stellen wir sicher, dass wir
diese Blöcke wieder am
Ende des Skripts anhängen diese Blöcke wieder am
Ende des Skripts Wenn wir die Luftvariable
sehr schnell zeigen und das Spiel ausführen, können
wir sehen, dass sie Null ist,
wenn wir am Boden sind, und wenn wir springen, nimmt sie
kontinuierlich zu, bis
wir wieder auf dem Boden landen Das passiert auch, wenn wir von einer Plattform
fallen. Und wenn wir jetzt anfangen, von der Seite einer Plattform zu
fallen, können
wir immer noch
innerhalb von Sekundenbruchteilen springen. Das fühlt sich definitiv
befriedigender an. In Ordnung, wir können die Variable
in der Luft wieder verstecken. Und jetzt denke ich, dass wir
bereit sind, mit der Animation zu beginnen.
74. Leerlauf- und Walk-Animationen: Um animieren zu können,
muss der Spieler seinen aktuellen Status verfolgen Wenn wir uns die Sprites-Kostüme des
Spielers ansehen, sind die möglichen Zustände, in denen sich
der
Spieler befinden kann, „inaktiv“, „
Gehen, Springen“, „Fall“, „Land“, „
Hocken“, „Wall Slide“
und „Slope Slide Außerdem gibt es in einigen Bundesstaaten
mehrere Kostüme oder
Animationsframes, und auch das müssen wir im
Auge behalten Zurück im Code werden wir
ein paar neue Variablen erstellen. Rufen wir den ersten Status und machen ihn nur für
dieses Sprite Für den zweiten nennen
wir ihn NM-Frame
und machen ihn auch nur für
dieses Sprite Lassen Sie uns nun weitermachen und die Variablen
initialisieren,
wenn auf die grüne Flagge
geklickt wird , indem wir den Skripten mit
der grünen Flagge ein paar weitere Blöcke hinzufügen Lassen Sie uns State vorerst auf Idle setzen. Und lassen Sie uns den
Anim-Frame auf Null setzen. Wenn wir diese beiden Werte
zusammenfügen, erfahren wir, wie das aktuelle
Kostüm des
Sprites heißen sollte Im Moment haben
wir also Idle Zero. Was wir jetzt tun können, ist zurück zur Definition von Animate zu
gehen Und anstatt das Kostüm direkt auf Null im Leerlauf
umzuschalten, können
wir es auf
das Kostüm umstellen, das sich aus
der Kombination von State und Num Frame ergibt. Gehen wir dazu zu Operatoren und fügen einen Join-Block zum
Switch-Kostümblock hinzu. Dann gehen wir zurück zu den Variablen und wir wollen den
Status mit dem Num Frame verbinden. Wenn wir das Spiel jetzt ausführen, ändert sich
nichts, weil wir immer noch nur das
Idle Zero-Kostüm verwenden. Der Ruhezustand hat jedoch tatsächlich zwei Frames. Um den Player zu animieren, können
wir den Anime-Frame also 0-1 hin und
her schalten Das ist
allerdings nicht so
einfach,
den Wert bei jedem Frame auf 0-1 zu ändern, da
die Animation dadurch viel zu schnell abläuft Stattdessen können wir den
Anime-Frame bei jedem Frame um einen kleinen
Bruchteil erhöhen Anime-Frame bei jedem Frame um einen kleinen
Bruchteil Fügen wir dazu am Ende des animierten Skripts eine Änderung pro
Block hinzu und ändern wir das
Anum-Frame um 0,1 das aber zum ersten Mal
passiert, sucht
der
Switch-Kostümblock nach einem inaktiven 0.1-Kostüm, das es natürlich nicht gibt Anstatt also den Status
mit dem exakten Wert
des Atom-Frames zu verbinden , müssen
wir den
Dezimalteil des Atom-Frames abschneiden. Um das zu tun,
gehen wir zu Operatoren und lassen uns einen
Block in einen leeren Bereich bringen. Die Funktion, die wir hier verwenden
wollen, ist Floor. Floor schneidet den
Dezimalteil einer Zahl
ab, sodass wir nur
den ganzen Zahlenteil haben. Jetzt können wir also
den Tom-Frame-Block hier
in die Ebene des Blocks verschieben den Tom-Frame-Block hier
in die Ebene des Blocks dann den Boden des
Blocks in den Join-Block legen. Außerdem
wollen wir
sicherstellen , dass der Boden von Tom Frame
nie über eins liegt,
da die Kostüme, die wir
verwenden, die ID Null und die ID eins haben. Um das zu tun, gehen wir zu Variablen
und platzieren ein Set Two-Block unter dem Change-Tom-Frame-Block und setzen es auf Nom Frame. Gehen wir nun zu Operatoren und fügen einen Mod-Block
zum Set-Zwei-Block hinzu. Was wir
hier tun wollen, ist zu
Variablen zurückzukehren und
den aktuellen Wert
von Nom Frame mit zwei zu modifizieren . Dadurch wird sichergestellt, dass der Nom Frame immer kleiner als zwei bleibt. Wenn wir es jetzt versuchen, haben
wir eine nette kleine Animation. Wir können sehen, dass der
Anime-Frame-Wert in Schritten von 0,1 auf
0-1 0,9 steigt Schritten von 0,1 auf
0-1 0,9 dann wieder auf Null zurückgeht In Ordnung, lassen Sie uns jetzt mit der
Walk-Animation weitermachen. Dafür müssen wir uns
um Änderungen
im Spielerstatus kümmern , und
zwar innerhalb eines benutzerdefinierten Blocks. Gehen wir also zu Mbloxs
und erstellen einen neuen. Wir können es Update
State nennen und auf Okay klicken. Wir möchten das
Update-State-Skript ausführen bevor wir das
Animate-Skript ausführen Wir führen das Animate-Skript aus und wenn ich Update zwei erhalte Um also zuerst das
Update-State-Skript auszuführen, nehmen
wir einen Update-State-Block und platzieren ihn direkt über
dem Animate-Block Lassen Sie uns nun den definierten Block für den
Aktualisierungsstatus
hierher in einen leeren Bereich verschieben hierher in einen leeren Bereich Wir überprüfen
hier,
ob sich der Spieler horizontal
bewegt, und wenn ja, setzen wir
den Status auf Gehen. Andernfalls setzen wir ihn auf Leerlauf. Okay? Gehen wir also zuerst zur Steuerung und fügen dem Skript einen
ITN-S-Block hinzu Um zu überprüfen, ob der
Spieler läuft, können
wir überprüfen, ob
der absolute Wert von Geschwindigkeit x größer als Null ist Gehen wir also zur Kontrolle. Verwenden Sie einen
Größer-als-Block als Eingabe fügen Sie
dann einen Abso-Block in die erste Eingabe des
Größer-als-Blocks Gehen wir nun zu Variablen
und überprüfen wir, ob ABS der
Geschwindigkeit x größer als Null ist Wenn ja, ändern wir
den Status auf Gehen. den Staat zu ändern,
sind jedoch einige Dinge erforderlich. Zuerst müssen
wir natürlich
ein Set zum Blockieren und den Status auf Laufen
setzen. Aber wir müssen auch ein weiteres Set zum Blockieren
hinzufügen und den Anim-Frame
auf Null
setzen Blockieren
hinzufügen und den Anim-Frame
auf Null Dadurch wird sichergestellt, dass
die neue Animation korrekt
funktioniert und am Anfang
beginnt Da diese
Bedingung jedoch immer
zutrifft, solange sich der Player
horizontal bewegt, führt
dies dazu, dass der Atom-Frame kontinuierlich
auf Null gesetzt wird . Um das zu beheben, können wir
dafür sorgen, dass diese Blöcke nur ausgeführt werden, wenn der
aktuelle Status des Spielers nicht bereits der neue Status ist, weil
dafür
mehrere Blöcke erforderlich sein werden und
weil wir es im
Status-Aktualisierungsskript viele
Male
wiederholen werden es im
Status-Aktualisierungsskript viele
Male
wiederholen , werden
wir alle Dinge, die den
Status ändern,
innerhalb eines neuen Blocks erledigen . Gehen wir also zu Mbloxs
und erstellen einen neuen. Geben wir zunächst set state two ein. Fügen Sie dann eine neue Eingabe namens
Neue Staaten hinzu und klicken Sie auf Okay. Lassen Sie uns die
beiden Blöcke aus
dem Update State Script
in das Set State Script verschieben dem Update State Script
in das Set State Script und die State-Variable
auf die neue State-Eingabe setzen. Und weil wir das alles nur machen
wollen,
wenn sich der neue Status
vom aktuellen Status unterscheidet, gehen
wir zur Steuerung über und wickeln einen
Wenn-Dann-Block um
die beiden Satz-Zwei-Blöcke. Für die Bedingung gehen
wir zu Operatoren und fügen zuerst einen
Not-Block und
dann einen Gleichheits-Block ein Gehen wir nun zu Variablen
und prüfen wir, ob der Status nicht der
neuen Statuseingabe entspricht Okay, jetzt können wir
zu „Meine Blöcke“ gehen und jedem Teil des
Eingangs
- und Aktualisierungsstatus
einen festgelegten Statusblock hinzufügen jedem Teil des
Eingangs
- und Aktualisierungsstatus
einen festgelegten . Für den ersten
wollen wir den Status auf Walking und
für den zweiten auf Inaktivität setzen. Wir sind aber noch nicht ganz
fertig. Wir müssen uns immer noch um
die Walk-Animation und
die Animationsskripte kümmern die Walk-Animation und
die Animationsskripte Wenn wir einen Blick auf
die Registerkarte „Kostüme“ werfen, hat
die Walk-Animation insgesamt sechs Frames von Walk
0 bis Walk Five Das bedeutet, dass
wir für den Spaziergang, anstatt einen
Anim-Frame mit zwei zu modifizieren, anstatt einen
Anim-Frame mit zwei zu modifizieren, ihn mit sechs modifizieren müssen Außerdem möchten wir vielleicht
eine andere Geschwindigkeit für
die Walk-Animation verwenden eine andere Geschwindigkeit für
die Walk-Animation Okay, wir
können also I und dann Blöcke
verwenden, um den aktuellen Status zu
überprüfen und dann zu entscheiden,
wie mit
der Nom-Frame-Variablen umgegangen werden soll. Gehen wir also zuerst zur Steuerung über
und lassen Sie uns die Änderung abschließen, dann blockieren wir die Änderung
und setzen hier Blöcke. Das ist für den Ruhezustand. Gehen wir also zu Operatoren und verwenden einen Gleichheitsblock
als Bedingung Gehen wir dann zu Variablen und prüfen, ob State gleich Idle ist. Jetzt können wir das I duplizieren, dann blockieren und an der Unterseite anhängen Lassen Sie uns für diesen Fall überprüfen,
ob State gleich Walk ist. Wenn ja, ändern wir
Tom Frame um 0,5, und für den Set-Block verwenden
wir Mod Six Lass es uns jetzt versuchen. Ordnung, sobald
wir anfangen zu laufen, wechseln
wir zur Geh-Animation. Wenn wir aufhören, kehren
wir jedoch nicht
zur Leerlaufanimation zurück. Es sei denn, wir
stoßen auf eine Wand. Der Grund dafür ist, dass wir, wenn wir
uns das Skript „
Horizontal bewegen“ ansehen,
wenn wir auf eine Wand stoßen,
Geschwindigkeit x auf Null setzen,
was uns das Skript „
Horizontal bewegen“ ansehen, wenn wir auf eine Wand stoßen, Geschwindigkeit x auf Null setzen, dazu führt, dass der
Status in den Leerlauf wechselt. Im Skript „Horizontale
Bewegung bearbeiten reduzieren
wir zwar ständig
den Wert von SpeedX, aber er wird nie
genau Null, es sei denn,
wir stoßen auf eine Wand Wenn wir die
Variable Geschwindigkeit X einblenden und das Spiel ausführen, wenn wir uns
horizontal bewegen und dann aufhören, scheint
sie irgendwann Null auf dem Display zu
werden, aber es ist tatsächlich eine
sehr kleine Zahl wie 0,00 001 oder so Um dies zu beheben, können wir, wenn wir zum Update State-Skript zurückkehren , anstatt
den Status auf Gehen zu setzen, wenn der absolute Wert von
Geschwindigkeit X größer als Null ist, anstatt
den Status auf Gehen zu setzen,
wenn der absolute Wert von
Geschwindigkeit X größer als Null ist,
zuerst den
gerundeten Wert von Geschwindigkeit X dann den absoluten
Wert davon ermitteln. Gehen wir also zu Operatoren und bringen einen runden Block
in einen leeren Raum. Dann verschieben wir den SpeedX-Block von den Bauchmuskeln des Blocks in den runden Block und fügen den runden Block zum
Abso-Block Damit werden
wirklich kleine Werte von
SpeedX ignoriert und wir kehren in
den Ruhezustand zurück, sobald wir
sichtbar zum Stillstand kommen Wir können tatsächlich
dieselbe Logik verwenden, um
das horizontale
Bewegungsskript etwas effizienter zu gestalten das horizontale
Bewegungsskript etwas effizienter Wenn der gerundete Wert
von Geschwindigkeit X Null ist, ist es eigentlich
Zeitverschwendung, den
Block „Horizontal bewegen“ hier
auszuführen ,
da das Sprite dadurch sowieso nicht Wir können
also dafür sorgen , dass der Block „Horizontal bewegen nur ausgeführt wird, wenn der
absolute Wert
des gerundeten Werts von Geschwindigkeit
X größer als Null ist Gehen wir dazu zunächst zur Steuerung und legen ein I und dann
einen Block um
den Block „Horizontal bewegen“. Gehen wir für die Bedingung zu Operatoren und fügen
einen Block größer als ein. Dann verwenden wir den
Block abs of als erste Eingabe. Jetzt können wir
den runden Geschwindigkeitsblock
hier duplizieren den runden Geschwindigkeitsblock und ihn in
den Block abs of einfügen. Und lassen Sie uns überprüfen, ob es
größer als Null ist. Wenn wir das Spiel erneut ausführen, sollte
alles so aussehen wie zuvor,
aber jetzt
wird das Skript „
Horizontal bewegen“ nicht
ausgeführt, es Skript „
Horizontal sei denn, wir
bewegen uns tatsächlich horizontal. Okay? Und wir können die Geh-Animation
sogar
ein bisschen verbessern, indem wir sie so gestalten, dass die Animationsgeschwindigkeit zusammen
mit der Variablen Geschwindigkeit X allmählich zunimmt und abnimmt. Dadurch wird die
Animation langsamer, wenn wir zum ersten Mal laufen und
wenn wir zum Stillstand kommen. Kehren wir dazu zum Animationsskript zurück
. Im
Change-Tom-Frame-Block für den Walk-Status können
wir den absoluten
Wert von Geschwindigkeit
x verwenden , um die
Geschwindigkeit der Animation zu bestimmen Da Geschwindigkeit X
jedoch ziemlich hoch
werden kann , wollen wir nur
einen Bruchteil des Werts verwenden. Lassen Sie uns also zunächst
einen Multiplikationsblock
zum Änderungsblock hinzufügen einen Multiplikationsblock
zum Änderungsblock Dann verwenden wir einen
ABS-Of-Block als eine der Eingaben. Gehen wir nun zu
Variablen und
machen wir ABS von SpeedX mal 0,1 Wenn wir nun das Spiel starten
und anfangen zu laufen, beginnt
die Animation
langsam und wird schneller,
und sie wird auch langsamer, wenn
wir die Bewegungstaste loslassen Okay, das Letzte,
was wir mit
der Geh-Animation machen müssen , ist, sie
so zu gestalten , dass der Sprite tatsächlich nach links
schaut, wenn er nach links geht,
anstatt immer nach rechts zu schauen Dazu
müssen wir zum Handle-Skript für
horizontale
Bewegungen zurückkehren Handle-Skript für
horizontale
Bewegungen Lassen Sie uns hier ein bisschen Platz schaffen. Hier wollen wir den
Wert der X-Achsenvariablen überprüfen. Wenn er Null ist,
wollen wir die Richtung der
Sprites nicht ändern Wenn es eins ist, setzen wir
die Richtung auf 90, was nach rechts zeigt,
und wenn es negativ ist, setzen
wir die Richtung
auf minus 90, was nach links Dadurch wird jedoch auch
das Sprite gedreht , was wir nicht wollen Um das zu beheben, haben wir hier drei
Umschaltflächen. Die Standardeinstellung „Rundum“ ermöglicht es dem Sprite,
sich um 360 Grad zu drehen Außerdem haben wir die Option „Nicht rotieren“ aktiviert, wodurch verhindert wird, dass sich das
Sprite Und wir sind nach rechts gegangen. Dadurch wird
das Sprite immer entweder direkt
nach links oder direkt nach rechts schauen Okay, also gehen
wir im Skript für horizontale
Bewegungen zur Steuerung und bringen einen Wenn-und-Block in einen
leeren Bereich Für die Bedingung wollen
wir überprüfen, ob die X-Achse nicht gleich Null ist. Gehen wir
also zu Operatoren, fügen einen
Nicht-Block ein und fügen dann einen Gleichheits-Block ein Gehen wir nun zu Variablen
und prüfen wir ob die X-Achse nicht gleich Null ist Um in die
richtige Richtung zu zeigen, müssen wir nur die Richtung
der Sprites auf den Wert
der X-Achse
multipliziert mit 90 setzen Wert
der X-Achse
multipliziert mit 90 Gehen wir also zunächst
zur Bewegung über und fügen I then
einen Punkt- und
Richtungsblock hinzu Gehen wir dann zu
Operatoren und fügen Punkt- und Richtungsblock
einen Multiplikationsblock hinzu und multiplizieren wir die X-Achse mit 90. Außerdem hat der
X-Block zur Änderung der Geschwindigkeit, den wir
hier verwenden , eigentlich keine Auswirkung,
wenn die X-Achse Null ist, sodass wir ihn auch in den
neuen Block I Thin verschieben können Dann können wir den Block I thin
an den Anfang des Skripts setzen an den Anfang des Skripts und alles andere anhängen. Und lass es uns
versuchen. Viel besser. In Ordnung, wir sind fertig mit den
Idle- und Walk-Animationen. Als Nächstes werden wir an
den Animationen für
Springen und Fallen arbeiten den Animationen für
Springen und Fallen
75. Jump-, Fall- und Land-Animationen: Wenn wir uns die Sprite-Kostüme der
Spieler ansehen, haben
wir drei Zustände, die mit Springen und Fallen
zusammenhängen Wir haben springen, fallen und landen. Wir verwenden Sprung
, wenn der Spieler springt oder
sich in die Luft bewegt. Wir verwenden Fall, wenn sie
wieder auf den Boden fallen, und wir nutzen kurz den Landzustand sobald sie wieder
auf dem Boden landen. Beachten Sie außerdem, dass in
allen drei Bundesstaaten Einzelbildanimationen
verwendet werden. Okay, zurück im Code, gehen
wir zum
Update-State-Skript über. Wenn der Spieler in der Luft ist, er sich
je nach
dem Wert von Geschwindigkeit Y entweder im Sprungzustand oder im Fallzustand. Ein positiver Wert bedeutet, dass springt und ein negativer Wert
bedeutet, dass er fällt Also überprüfen wir zunächst, ob
der Spieler in der Luft ist indem wir prüfen, ob die
Variable Nir größer als Null ist Gehen wir also zur Steuerung
und bringen wir für den Moment einen Wenn-Block in ein
leeres Feld Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block mit dem Wert größer als ein. Gehen wir dann zu Variablen
und überprüfen wir, ob Nir größer als Null
ist Jetzt stellen wir den Status Abhängigkeit vom
Wert der Geschwindigkeit Y ein. Gehen wir
also wieder zur Steuerung und fügen dem Block I thin einen Block I thin else
hinzu Für die Bedingung können wir den Block „Größer als“
duplizieren hier den Block „Größer als“
duplizieren und prüfen, ob Geschwindigkeit
Y größer als Null ist Wenn ja, setzen wir
den Status auf Jump. Gehen wir also zu Mblocks, fügen dem I-Teil einen festgelegten Statusblock hinzu und verwenden
Jump als Eingabe Andernfalls fügen wir dem anderen Teil
einen Block mit
festem Status hinzu
und setzen ihn auf fallend Lassen Sie uns nun all
diese Blöcke schnappen und sie ganz oben im
State-Aktualisierungsskript
platzieren. Im Moment setzt dieser unterste ITN-Ls-Block den Status
sofort ITN-Ls-Block den Status
sofort
auf „Walk“ oder „Idle Wir wollen also, wenn der
N-Fehler größer als Null ist, das
aktuelle Skript beenden und so
verhindern, dass der untere I
Thin-Ls-Block ausgeführt wird Gehen wir dazu zu Control, fügen wir einen Stopp-Block
ganz unten am Block IN-Fehler ist größer als Null und verwenden ihn, um dieses Skript zu beenden. Okay. Und weil in
den Zuständen Jump und Fall
Einzelbildanimationen verwendet werden, müssen
wir im
Animationsskript eigentlich
gar
nichts für sie tun im
Animationsskript eigentlich
gar
nichts für sie Also lasst es uns versuchen. Die Idle- und
Walk-Animation funktioniert immer noch, und wenn wir jetzt springen, wechselt
sie in den
Sprungzustand, wenn wir
hochgehen , und in den Fallzustand
, wenn wir wieder herunterkommen. Das funktioniert auch, wenn wir
auf Plattformen springen und von ihnen fallen. Eine Sache, die ärgerlich
ist, ist, dass, wenn
wir Coyote Time verwenden, also kurz nachdem wir von einer Plattform gefallen sind, es kurz nach dem
Sturz von einer Plattform springen, kurz zum
Herbstkostüm wechselt, bevor
es zum Sprungkostüm
wechselt Das sieht komisch aus. Da wir in der Kojotenzeit springen
können wenn der Wert von in error kleiner als vier
ist, anstatt in
den Sprung- oder Fallstatus zu wechseln, können
wir, und jetzt wird es nicht mehr in wann immer der Fehler hier
größer als Null ist, dies tun, wenn er
größer als drei ist, den Falls-Zustand wechseln , wenn
wir Coyote Time verwenden Alles klar, jetzt
müssen wir nur noch kurz den Landstatus
wechseln,
wenn der Spieler
wieder auf dem Boden landet Das sollte passieren
, wenn sich der Spieler
im Sturzzustand befindet und die
Variable in der Luft gleich Null ist. Um das zu überprüfen,
bringen wir zuerst einen Wenn-Dann-Block
in ein leeres Feld. Gehen wir für die Bedingung zu den Operatoren und fügen einen
UND-Block ein. Und lassen Sie uns für jede Bedingung einen
Gleichheitsblock verwenden. Gehen wir nun zu Variablen
und überprüfen
wir auf der einen Seite, ob
State gleich Fall ist Auf der anderen Seite werden wir
prüfen, ob ein Fehler gleich Null ist. Wenn das der Fall ist, gehen
wir zu M Blöcken, fügen einen festgelegten
Statusblock hinzu und setzen ihn auf Land Wir möchten auch, dass du zu Control gehst, einen Stopp-Block einfügst
und dieses Skript beendest. Jetzt setzen wir diesen, den
ich dann blockiere, direkt unter den ersten im
Update-State-Skript. Und lass es uns versuchen. Wenn wir springen und
wieder auf dem Boden landen, wechseln
wir zwar in den Landstatus, aber nur für ein einzelnes Bild. Es wäre wahrscheinlich besser,
wenn wir ein paar Frames im
Zustand „und“ bleiben würden, bevor wir in den Leerlauf- oder Walkmodus
wechseln. Wir können dies mit der
Anim-Frame-Variablen tun. Um zu sehen, was ich meine, gehen
wir zum Animate-Skript und lassen Sie uns
den Block if state equals
walk hier duplizieren und ihn unten
anhängen Für diesen wollen wir
überprüfen, ob Staat gleich Land ist. Lassen Sie uns nun diese Blöcke
aus dem Change-Tom-Frame-Block entfernen aus dem Change-Tom-Frame-Block und sie um 0,1 ändern Wir können hier auch den
Set-Tom-Frame-Block loswerden. Wie wir bereits gesehen haben, verfügt der Landstaat nun, wie bei den Zuständen Jump und Fall, wie bei den Zuständen Jump und Fall,
über eine
Einzelbildanimation. Das heißt, wir
wollen nicht, dass der Wert von Nom Frame jemals eins oder höher
erreicht. Wir können also wieder
in das Update-State-Skript zurückkehren. Bevor wir entweder in
den Walk- oder Idle-Status wechseln, können
wir das Skript beenden, wenn
wir uns gerade im
Und-Status befinden und der Wert des
Atom-Frames kleiner als 0,5 ist. Dadurch bleiben wir für fünf Frames im Zustand
und. Okay?
Lassen Sie uns also zuerst einen anderen Block in einen
leeren Raum bringen. Gehen wir für die Bedingung zu den Operatoren und fügen einen
UND-Block hinzu. Und lassen Sie uns auf der einen Seite einen Gleichheitsblock und auf
der anderen Seite einen
Block mit dem Wert „Weniger als“ platzieren und auf
der anderen Seite einen
Block mit dem Wert „Weniger als Gehen wir nun zu Variablen
und überprüfen wir, ob
State gleich Land ist Atom-Frame ist kleiner als 0,5 Wenn ja, gehen wir zur Steuerung,
fügen einen Stopp-Block ein
und beenden dieses Skript Lassen Sie uns nun all das direkt
über dem unteren Rand platzieren , wenn wir es dann blockieren. Und lass es uns versuchen. Da haben wir's. In Ordnung, das erledigt ist, werden wir
als Nächstes daran arbeiten,
den Spieler ducken zu lassen , indem er eine
Steuertaste nach unten
76. Lass den Spieler hocken: Wenn wir uns die Sprite-Kostüme der
Spieler noch einmal ansehen, haben
wir ein einziges Kostüm für die Crouch-Staaten Dieses Kostüm hat
eine kürzere Höhe als die Kostüme
der anderen Staaten Der Hauptzweck des Hockens besteht
darin, dem Spieler zu ermöglichen, sich unter tief fliegenden Feinden zu
ducken ,
damit sie nicht getroffen werden vor diesem Hintergrund Lassen Sie uns vor diesem Hintergrund zum
Update-State-Skript zurückkehren Am Anfang des Skripts überprüfen
wir, ob der Spieler eine nach unten gerichtete Steuertaste
drückt, und wenn ja, setzen wir den Status auf Hocken und beenden den
Rest des Skripts Das möchte ich
dir als Herausforderung stellen. Halten Sie das Video jetzt an und sehen Sie, ob Sie den Hockenzustand
zum Laufen bringen können Okay,
lassen Sie uns zunächst einen I-Dann-Block
in einen leeren Raum bringen Wenn der Spieler
eine nach unten gerichtete Steuertaste drückt, die Y-Achsenvariable
negativ. Gehen
wir also für die Bedingung zunächst zu den Operatoren und fügen dort
einen Gleichheitsblock ein. Gehen Sie dann zu Variablen und prüfen Sie, ob die Y-Achse
gleich einer negativen Achse ist. Wenn das der Fall ist, gehen
wir zu meinen Blöcken, fügen einen festgelegten Statusblock hinzu und setzen ihn auf Crouch Lassen Sie uns abschließend zu Control gehen, einen Stopp-Block einfügen
und dieses Skript beenden Jetzt können wir all dies an
den Anfang des Skripts für die
Aktualisierungsphase setzen . Und wenn wir es ausführen, können
wir jetzt den
Abwärtspfeil oder die S-Taste drücken, um uns zu ducken Wenn wir die Taste loslassen, befinden wir uns
wieder im Ruhezustand. Das ist ziemlich gut,
aber im Moment können
wir uns horizontal bewegen, können
wir uns horizontal bewegen, während wir uns in der Hocke befinden,
was ziemlich seltsam ist Um das zu beheben, können wir den Spieler
daran
hindern sich horizontal zu bewegen,
wenn er sich in der Hocke befindet. Gehen wir dazu zum Handle-Skript für horizontale
Bewegungen Wenn die X-Achse hier nicht
gleich Null ist, können
wir festlegen, dass
Geschwindigkeit X
sich nur ändert , wenn sich der Spieler
gerade nicht in der Hocke befindet Lassen Sie uns dazu den Block mit
der Änderungsgeschwindigkeit X
mit einem Wenn-Dann-Block umschließen Gehen wir für die Bedingung zu Operatoren und fügen einen
Knotenblock dann einen Gleichheitsblock Gehen wir nun zu Variablen
und prüfen wir, ob state nicht gleich Crouch
ist Lass es uns versuchen. Wenn wir uns jetzt hinducken und versuchen zu gehen, zeigt
es in die Richtung
, in die wir uns bewegen wollen, aber es bewegt sich nicht wirklich Wenn wir auch verhindern wollen, dass sich
die Richtung ändert, können
wir den Punkt
- und
Richtungsblock auch in diesen Block verschieben , aber ich lasse meinen so, wie er ist Ein weiteres Problem, das
wir haben, ist, dass wir momentan in der Lage sind,
uns in der Luft zu hocken. Das liegt daran, dass ein Aktualisierungsstatus uns
jedes Mal, wenn wir eine Steuertaste
nach unten drücken
, in den Hockenzustand versetzt. Stattdessen
wollen wir es so einrichten, dass wir nur dann in den Hockerzustand
wechseln können den Hockerzustand
wechseln wenn wir
gerade nicht in der Gehen wir dazu zu Operatoren und bringen einen Block
in einen leeren Raum Lassen Sie uns die Y-Achse, die einem
negativen Block entspricht, hier in die
eine Seite des UND-Blocks verschieben , und für die andere Seite fügen wir einen Gleichheitsblock ein Gehen wir dann zu Variablen und prüfen, ob der Fehler gleich Null ist Wenn wir all das jetzt als Bedingung für
das Hocken verwenden, sollten
wir nicht in der Lage sein, uns
beim Springen oder Fallen zu ducken In Ordnung, wir sind fast fertig
mit dem Hocken. Aber im Moment würde
ein Feind, der
direkt über uns fliegen würde,
uns tatsächlich treffen Das liegt daran, dass wir, wenn wir in die Kostüme
gehen, derzeit immer noch
das normale Hip-Box-Kostüm
zur Kollisionserkennung verwenden , auch wenn wir in der Hocke sitzen Stattdessen wollen
wir beim Hocken die Hocker-Hipbox verwenden, die
im Grunde genommen
eine kürzere Version
der normalen Hüftbox ist der Gehen wir dazu zum Set Hip
Box-Skript. A und hier
wollen wir überprüfen, ob wir uns
gerade im Hockenzustand befinden,
und wenn ja, wechseln wir zum
Crouch Hip Box-Kostüm Andernfalls
wechseln wir weiterhin zur normalen Hüftbox Gehen wir also zu Control und bringen einen
Wenn-Dann-Else-Block rein. Dann verschieben wir das
Switch-Kostüm zu Hip Box-Block in den anderen Teil und hängen
alles an das Drehbuch an. Für die Bedingung können wir
ein Duplikat eines
dieser State-Equals-Blöcke
aus dem Update-State-Skript verwenden ein Duplikat eines
dieser State-Equals-Blöcke und prüfen, ob State gleich Falls ja, bringen
wir ein Duplikat des Switch-Kostümblocks
rein
und wechseln dann zum
Crouch Hip Box-Kostüm Wir können nicht wirklich sagen, dass im Spiel momentan
etwas anders ist, aber sobald wir fliegende Feinde hinzugefügt
haben, können wir es testen Ordnung, unsere Spielermechanik kommt ganz gut zurecht Jetzt müssen wir nur noch Rutschen
auf Hängen und Rutschen
und Springen an Wänden hinzufügen auf Hängen und Rutschen
und Springen an Wänden
77. Gleiten auf Pisten: Im Moment können wir Hänge
rauf und runter laufen,
was in Ordnung ist, aber es sieht ein bisschen komisch aus, als würden wir in der Luft
schweben. Stattdessen machen wir es
so, dass das Sprite den Hang
hinunterrutscht Wenn wir uns die Kostüme
ansehen, haben wir hier
unten ein
Slope Slide Zero-Kostüm Dieses Kostüm ist fast genau das gleiche wie das
Herbst-Zero-Kostüm, außer dass es etwas weiter unten ist. Dadurch wird der Geist so
aussehen, als würde er
am Hang sitzen Okay. Und wir haben hier auch ein Kostüm mit
Neigungssensor. Das ist einfach ein winziges
Rechteck, mit dem wir den Winkel
der Oberfläche
bestimmen, auf der
wir uns befinden, wenn wir uns im Level
bewegen. Wenn die Oberfläche nicht flach ist, befinden
wir uns wahrscheinlich an einem Hang. Also lassen wir die Spieler
nach unten rutschen , bis sie
eine ebene Oberfläche erreichen. Also gut, um
anzufangen, gehen wir zurück zum Code. Lassen Sie uns zunächst zum Skript „
Wenn ich
Update 2 erhalte“
übergehen . Und hier, bevor wir
den Status aktualisieren und animieren, prüfen
wir, ob wir an einem Hang rutschen müssen
, und das tun wir
in einem benutzerdefinierten Block Gehen wir also zu Mblock
und erstellen einen neuen. Wir können es Slide on
Slope nennen und auf Okay klicken. Lassen Sie uns hier einen Slide on
Slope-Block direkt über dem Block mit dem
Aktualisierungsstatus
hinzufügen . Dann verschieben wir den definierten
Block in einen leeren Bereich. Bei der Entscheidung, ob wir
einen Hang rutschen wollen oder nicht, müssen
wir das nur tun, wenn der Spieler gerade
auf dem Boden befindet. Wenn sie in der Luft sind, dann befinden sie sich offensichtlich
nicht am Hang. Gehen wir also zunächst
zur Steuerung und fügen Skripten für
Slide on Slope
ein „Wenn der Block“ hinzu. Gehen wir für die Bedingung zu den Operatoren und fügen den Block „Größer als“
ein. Gehen wir dann zu Variablen
und überprüfen wir, ob in der Luft
ein Wert größer als Null ist. Wenn das der Fall ist, ist
der Spieler in der Luft und wir
müssen nichts tun, also können wir wieder die Kontrolle übernehmen, einen Stopp-Block einfügen
und dieses Skript beenden. Als Nächstes verwenden wir das Kostüm mit dem
Neigungssensor , um zu überprüfen, ob sich der Spieler gerade auf einem Hang
befindet, und das tun wir auch in einem
benutzerdefinierten Block. Gehen wir also zu MyBlocks
und erstellen einen neuen. Nennen wir es Set Slope Sensor. Und für diesen Fall
möchten wir sicherstellen, dass die Option Ohne
Bildschirmaktualisierung ausgeführt aktiviert ist.
Klicken Sie dann auf Okay. Lassen Sie uns nun weitermachen und am Ende der
Folie zu Skripten für Böschungen einen
Block mit einem bestimmten Neigungssensor
hinzufügen . den Neigungssensor einzustellen, kehren
wir zunächst
zu den Kostümen
zurück das Kostüm mit dem
Neigungssensor ausgewählt haben, wir das Kostüm mit dem
Neigungssensor ausgewählt haben, ändern wir die Farbe
des Quadrats
, damit wir
es auf der Bühne besser sehen können. Wenn wir nun zwischen
dem Hit-Box-Kostüm und
dem Kostüm für den Neigungssensor wechseln , können
wir sehen, dass sich das Quadrat für den Neigungssensor genau
in der unteren Mitte
des Sprites befindet in der unteren Mitte
des Sprites Das heißt, wenn wir uns auf einer ebenen Fläche
befinden, befindet sich das Quadrat direkt
über der Oberfläche Wenn wir uns jedoch an einem Hang befinden, das Quadrat etwas
höher als die Oberfläche. Dies wird jedoch
auch der Fall sein wenn wir an
der Seite einer Plattform baumeln Um zu überprüfen,
ob wir uns an einem Hang befinden, können
wir das Quadrat daher nach unten bewegen,
bis es auf die Oberfläche trifft Solange die Entfernung nicht
wirklich klein oder sehr groß ist, können
wir mit Sicherheit davon ausgehen, dass wir uns an einem Hang befinden. Okay? Also lass uns sehen, wie wir das im Code machen
können. Zunächst möchten
wir im Skript zum Festlegen des
Neigungssensors sicherstellen, dass das Kostüm für
den Neigungssensor verwendet wird. Gehen wir also zu Looks, bringen einen Switch-Kostümblock rein und wechseln wir zum Neigungssensor. Als Nächstes fangen wir an,
das Sprite nach unten zu bewegen , bis
es einen
Festkörper berührt , und wir müssen
eine Variable verwenden , um die Entfernung zu
verfolgen Gehen wir also zu Variablen
und erstellen eine neue. Wir können es Neigungssensor nennen und es nur für
dieses Sprite machen Dann nehmen wir ein Set zum Blockieren
und fügen es dem Skript hinzu, und wir werden es verwenden, um den
Neigungssensor am Anfang auf Null zu Als Nächstes wollen wir überprüfen, ob wir gerade einen Festkörper berühren. Gehen wir also zu meinen Blöcken und einen Scheck ein, der einen festen Block
berührt. Wenn wir einen Festkörper nicht berühren, wollen
wir immer wieder eine Stufe
nach unten gehen, bis wir es sind. Gehen wir also zu Control und
führen eine Wiederholung ein, bis wir blockieren. Nun zu der Bedingung, wir wiederholen wollen, bis die sich berührende feste
Variable gleich eins ist Nehmen wir jedoch an, dass wir einer hohen
Plattform baumeln Das Sprite
jedes Mal so weit nach unten zu bewegen , wird ewig dauern
und das Spiel verlangsamen also, sagen wir, 30 Stufen nach
unten Wenn wir also, sagen wir, 30 Stufen nach
unten gehen und immer noch keinen Festkörper
berühren, hängen
wir wahrscheinlich über einer Kante und müssen nicht
weiter nach einem Gefälle suchen Okay? Also für die „
Bis wiederholen“ -Bedingung gehen
wir zu den Operatoren und
geben zuerst einen OR-Block ein. Und lassen Sie uns einen
Gleichheitsblock für beide Seiten verwenden. Gehen wir dann zu Variablen
und überprüfen wir, ob das
Berühren eines Festkörpers gleich eins oder der Neigungssensor gleich Bis eine dieser
Bedingungen erfüllt ist, möchten
wir den
Wert des Neigungssensors erhöhen das
Sprite eine Stufe nach unten bewegen Also fügen wir zunächst eine Änderung
pro Block zur
Wiederholung bis Block hinzu
und ändern den Neigungssensor um eins Als Nächstes gehen wir zur Bewegung über, fügen einen
Block der Änderung Y B hinzu und ändern ihn
durch einen negativen Block. Dann müssen wir
einen weiteren gründlichen Test durchführen. Gehen wir also zu MyBlocks und bringen einen Scheck rein, der einen festen Block
berührt Jetzt, nach der Wiederholung,
bis der Block fertig ist müssen
wir den Sprite wieder seine ursprüngliche Y-Position bringen zum richtigen
Hip-Box-Kostüm zurückkehren Um das Sprite wieder nach oben zu bewegen, müssen
wir nur
seine Y-Position um den aktuellen
Wert des Neigungssensors ändern seine Y-Position um den aktuellen
Wert des Neigungssensors Gehen wir also zur Bewegung über
und fügen am Ende
der Wiederholung bis zum Block eine Änderung Y für Block Dann können wir Y ändern, indem hier
ein Duplikat des
Neigungssensorblocks verwenden. Wenn wir auf das Skript klicken, können
wir sehen, dass sich das Quadrat Schritt für Schritt nach unten
bewegt bis es entweder
das Niveau erreicht oder der
Neigungssensor 30 wird, dann sofort wieder
an seine ursprüngliche Position bewegt. Und zum Schluss gehen wir
zu MyBlock und fügen am Ende des Trefferbox Skripts für
den
Neigungssensor
einen Block mit eingestellter Wir sind noch nicht ganz fertig, aber lassen Sie uns das Spiel ausführen, um
sicherzustellen, dass alles soweit richtig
funktioniert Wenn wir uns an einem Hang befinden, hat der
Neigungssensor einen Wert , der höher als
eins und kleiner als 30 ist. Wenn wir über einer Kante hängen, ist
der Wert 30, und wenn wir uns auf einer flachen
Oberfläche befinden, ist der Wert eins. Der
Wert ist nicht Null, weil wir die vertikale Bewegung
übernehmen,
bevor der Hang abrutscht. Sprite des Spielers nähert sich also den Level-Sprites, berührt sie
aber nicht ganz Okay? Also können
wir im Slide
on Slope-Skript jetzt den Wert
des Neigungssensors verwenden. Wenn der Wert eins ist, befinden wir uns auf einer flachen Oberfläche, und wenn er 30 ist, hängen wir
wahrscheinlich an einer Kante davon In beiden Fällen können
wir das Skript also beenden Gehen wir dazu zunächst zur Steuerung und fügen
am Ende des Skripts einen IT-Block hinzu. Gehen
wir für die Bedingung zu Operatoren, OR-Block ein und fügen einen Kleiner-als-Block auf der Seite und
einen
Gleichheits-Block auf der anderen Gehen wir dann zu Variablen
und überprüfen, ob der
Neigungssensor weniger als zwei hat,
was bedeutet, dass wir uns auf einer ebenen Fläche befinden,
oder ob der Neigungssensor gleich 30 ist was bedeutet, dass wir uns auf einer ebenen Fläche befinden, ,
was bedeutet, dass wir an einem Alter hängen. Wenn eine dieser
Bedingungen zutrifft, gehen
wir zur Steuerung über, einen Stopp-Block ein und
beenden dieses Skript Andernfalls befinden wir uns an einem Hang, also fangen wir an zu rutschen. Das Problem
ist jedoch, dass wir
derzeit nicht wissen, in welche
Richtung wir rutschen sollten. Im Moment
haben wir nur einen einzigen Hang
, der nach unten
und nach rechts geht, aber wir werden auch Steigungen im Spiel haben ,
die nach unten
und links gehen. Deshalb müssen wir die Richtung
der Steigung
bestimmen. Außerdem
erkennt der Neigungssensor im Moment,
sobald die Hälfte des Sprites
den Hang überquert hat,
das Gefälle
und das Sprite beginnt vorzeitig die Hälfte des Sprites
den Hang überquert hat,
das Gefälle
und das zu
rutschen Wir wollen warten,
bis das Sprite
vollständig auf dem Hang
ist , bevor wir anfangen zu rutschen Wir können
diese beiden Probleme tatsächlich mit
einer einzigen Technik Zuerst bewegen wir das Sprite
ein paar Schritte nach links und prüfen
dann, ob es das Level
berührt Wir bewegen es dann
ein paar Schritte von seiner
ursprünglichen Position nach rechts ein paar Schritte von seiner
ursprünglichen Position und überprüfen erneut, ob es das Level
berührt Wenn keine dieser Bewegungen dazu führt, dass der Sprite das Level
berührt, dann ist er noch nicht ganz
am Hang Befindet sich das Sprite jedoch an einem Hang, der nach rechts
verläuft, an einem Hang, der nach rechts
verläuft, führt eine
Bewegung nach links zu
einer Levelkollision,
eine Bewegung nach rechts Wenn der Hang nach links
verläuft, führt eine
Bewegung nach rechts ebenfalls führt eine
Bewegung nach rechts einer Levelkollision, eine
Bewegung nach links dagegen nicht Okay, wir beginnen also damit,
eine neue Variable zu erstellen , die die
Richtung der Neigung festlegt. Gehen wir also zu Variablen
und erstellen eine neue, nennen sie Slope Dr und machen
sie nur für dieses Sprite Als erstes
wollen wir Slope Dur auf Null setzen. Lassen Sie uns also
ein Set zum Blockieren hinzufügen. Und lassen Sie es uns tatsächlich
über dem unteren, wenn es sich um einen
dünnen Block handelt, platzieren , denn wenn wir uns nicht an einem Hang befinden, sollte
die Richtung Null sein. Und lassen Sie uns den Block verwenden
, um die Steigung Dur auf Null zu setzen. Wenn wir das Skript noch nicht
gestoppt haben, gehen
wir als Nächstes ein paar Schritte nach links und prüfen, ob
wir einen Festkörper berühren. Gehen wir dazu zur Bewegung über, fügen eine
Änderung X für
Block ein und ändern wir sie
um minus Zwei. Gehen wir dann zu MyBlocks und einen Scheck ein, der einen festen Block
berührt Wenn wir einen Festkörper berühren, befinden wir uns auf einem Hang,
der nach rechts Deshalb setzen wir die Steigung DR auf eins Gehen wir also zuerst zur Steuerung
und fügen einen ITN-Block ein. Und was die Bedingung angeht, gehen
wir zu den Operatoren und fügen einen Equals-Block Gehen Sie dann zu Variablen und prüfen Sie, ob das Berühren eines
Festkörpers gleich eins ist. Wenn ja, lassen Sie uns einen Satz von zwei Blöcken einfügen und die Steigung d auf eins
setzen Als Nächstes wollen wir eine
ähnliche Prüfung durchführen, außer dass wir das Sprite zwei Schritte nach
rechts von seiner
ursprünglichen Position
bewegen rechts von seiner
ursprünglichen Position Und wenn wir einen Festkörper berühren, befinden
wir uns auf einer nach links gerichteten Neigung, also setzen wir die Steigung
DR auf minus eins Was wir tun können, ist zuerst all
diese Blöcke zu duplizieren, beginnend mit dem
Change-X-Block, und sie an
der Unterseite anhängen . Um das Sprite
zwei Schritte nach rechts von
seiner ursprünglichen Position zu
bewegen , können
wir X um vier ändern Und wenn wir jetzt einen Festkörper
berühren, setzen
wir die Steigung DR
auf minus eins Ordnung. Nun, wenn nach all dieser Steigung DR immer noch Null ist, dann ist das Sprite noch nicht
ganz am Hang, also werden wir nichts weiter tun Andernfalls befinden wir uns an einem Hang, also werden wir ihn hinunterrutschen Zunächst wollen wir
das Sprite jedoch wieder an seinen
ursprünglichen Standort bringen das Sprite jedoch wieder an seinen
ursprünglichen Standort Gehen wir also zur Bewegung über, bringen eine Änderung x um
Block hinein und ändern wir sie
um minus zwei Als Nächstes stellen wir sicher, dass die Steigung
du nicht gleich Null ist. Gehen wir also zuerst zur Steuerung und fügen ein Wenn hinzu, dann Block. Und was die Bedingung angeht, gehen
wir zu den Operatoren und fügen einen Not-Block
und einen Gleichheits-Block Gehen Sie dann zu Variablen und prüfen Sie , ob die Steigung dur
nicht gleich Null ist Wenn das der Fall ist, können
wir den
Status des Spielers auf Slope Slide setzen. Wir müssen jedoch auch
sicherstellen, dass wir in die
richtige Richtung schauen. Das liegt daran, dass wir versuchen
könnten, vom
unteren Ende des Abhangs
nach oben zu klettern,
also müssen wir die Richtung
der Sprites umdrehen bevor wir nach unten rutschen Gehen wir dazu in Bewegung. Und fügen Sie dem
Wenn-Dann-Block einen Punkt- und Richtungsblock hinzu. Um die Richtung
für das Sprite zu ermitteln, müssen
wir nur
die Neigungsrichtung mit 90 multiplizieren Gehen wir also zu Operatoren und fügen Punkt- und Richtungsblock
einen Multiplikationsblock Dann können wir hier ein Duplikat
des Slope-DR-Blocks verwenden und es mit 90 multiplizieren Jetzt können wir zu M-Blöcken gehen, einen Block
mit festem Status
hinzufügen
und ihn auf die Slide Slope
Underscore setzen Wir müssen sicherstellen, dass wir genau
diese Schreibweise verwenden, damit
sie zum genau
diese Schreibweise verwenden, damit Slope-Slide-Kostüm passt Alles klar,
damit das funktioniert, müssen
wir ein paar Dinge
im Update-State-Skript tun. Zunächst überprüfen wir zu Beginn
des Skripts, ob
wir uns
im Zustand Slope Slide befinden. Gehen wir also zur Steuerung und bringen
einen IN-Block in
einen leeren Bereich. Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen wir dann zu
Variablen und prüfen ob der Status der
unterstrichenen Folie der Steigung entspricht Achten Sie auch hier darauf, die richtige Schreibweise
zu verwenden. Als Nächstes wollen wir den Wert für
die Steigung überprüfen. Wenn er nicht gleich Null ist, befinden
wir uns immer noch auf einer Steigung. Das bedeutet, dass wir
im Zustand Slope Slide bleiben wollen, also beenden wir das Script. Andernfalls lassen wir das
Skript weiter laufen, wodurch wir in einen anderen Status versetzt werden. Okay? Gehen wir also
zurück zur Steuerung und setzen einen Wenn-Dann-Block
in den aktuellen Block. Und was den Zustand angeht, gehen
wir zu den Operatoren und bringen
einen Knotenblock rein Dann wird ein Gleichwertiges blockiert. Jetzt können wir zu
Variablen gehen und prüfen ob die Steigung DR nicht
gleich Null ist. Wenn das der Fall ist, gehen
wir zur Kontrolle über. Bringen Sie einen Stopp-Block ein
und beenden Sie dieses Skript. In Ordnung, lassen
Sie uns
das alles ganz oben im
Update-State-Skript platzieren und es versuchen. Jetzt bleiben wir immer im
Hanglauf-Zustand, wenn wir uns an einem Hang befinden, und wenn wir
uns auf
eine ebene Fläche bewegen , werden wir in den Geh-Zustand versetzt. Cool. Als Nächstes wollen wir es so machen, dass das Sprite automatisch
den Hang hinunterrutscht Gehen wir dazu zum Handle-Skript für
horizontale
Bewegungen über Handle-Skript für
horizontale
Bewegungen Am Anfang des Skripts überprüfen
wir zunächst, ob wir uns
gerade im
Slide-Status befinden. Bringen wir also vorerst einen
Wenn-Dann-Block in ein
leeres Feld. Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen Sie dann zu Variablen und prüfen Sie, ob der Status
gleich der Steigungsrutsche Es gibt ein paar Dinge, die
wir hier machen wollen. Zuerst wollen wir
den Sprite in
Richtung Hang bewegen den Sprite in
Richtung Hang Um das Sprite horizontal zu bewegen, ändern
wir die Geschwindigkeitsvariable X. Lassen Sie uns also eine Änderung
durch Block vornehmen und SpeedX ändern. den Betrag, um den sich das ändert, können
wir die
Beschleunigungsvariable nehmen und sie mit der Variablen
Steigung Dur multiplizieren Gehen wir also zu Operatoren und fügen Block für
die Änderungsgeschwindigkeit X
einen Multiplikationsblock Gehen Sie dann zurück zu Variablen und machen Sie Acceleration Time
Slope Dur. Als Nächstes wollen
wir verhindern, dass sich der Spieler manuell
horizontal bewegt Andernfalls
können sie den Hang hinauffahren. Dazu können wir einen Satz
zum
Blockieren hinzufügen und die X-Achse auf Null setzen. Dadurch wird
sichergestellt, dass das Drücken einer horizontalen
Steuertaste keine Wirkung hat. Jetzt können wir
das an den Anfang
des
Skripts für horizontale Bewegungen setzen und es ausprobieren. Okay, jetzt rutschen wir tatsächlich
den Hang hinunter und
können den Hang nicht hinauffahren. Das Rutschen
ist jedoch etwas sprunghaft. Das passiert, weil
die Schwerkraft nicht stark genug ist, um uns die ganze Zeit
am Hang zu halten Um das zu beheben, müssen wir
sicherstellen, dass sich der Sprite immer so weit nach unten bewegt
, dass er den Hang berührt Und weil das mit der vertikalen Bewegung zusammenhängt
, machen
wir das innerhalb des Handle-Skripts für
vertikale Bewegungen Wie bei der horizontalen Bewegung wollen
wir zunächst überprüfen, ob wir uns
im Zustand der Schräglage befinden. Gehen wir also zur Steuerung und bringen einen INN-Block in
einen leeren Raum. Und für die Bedingung können
wir ein Duplikat
des Slideblocks mit gleicher
Steigung
aus dem Griff für
horizontale Bewegungen verwenden des Slideblocks mit gleicher
Steigung . Um das Sprite ausreichend nach unten zu bewegen, können
wir den Wert des
Neigungssensors nehmen und ihn vom
aktuellen Geschwindigkeits-Y-Wert subtrahieren Außerdem wollen
wir verhindern, dass der Spieler beim Rutschen
springt oder sich duckt Wir können also damit beginnen, diese beiden Blöcke
zu duplizieren , wenn
der Zustand I gleich Neigung ist, Slideblock und
horizontale Bewegungen handhaben und sie dann zu unserem neuen Wenn-Dann-Block hinzufügen sie dann zu unserem neuen Aber dieses Mal wollen
wir Geschwindigkeit Y ändern und wir wollen
sie um den negierten Wert
des Neigungssensors ändern, sodass
wir
den Beschleunigungsblock
hier loswerden und ihn durch einen
negativen ersetzen und ihn mit der Variablen des Neigungssensors multiplizieren
können einen
negativen ersetzen und ihn mit der Variablen des Neigungssensors multiplizieren des Neigungssensors Und hier wollen wir die Y-Achse auf Null
setzen. Lassen Sie uns nun den Block Ich
dann an den Anfang
des
Skripts für vertikale Bewegungen verschieben und es ausprobieren. Fantastisch. Jetzt bleiben wir auf
dem Hang, während wir nach unten rutschen. Versuch, von unten nach oben zu gehen , wird
allerdings ziemlich verrückt. Um das zu beheben, können wir es
so einrichten, dass das Sprite ein wenig über den Boden gleitet , bevor es aus dem Slide-Status „
Slope Slide“
wechselt Gehen wir dazu zum
Update-State-Skript über. Und hier hören wir nur auf, wenn Steigung DU nicht gleich Null ist. Sobald wir also
abseits der Piste sind, wechseln
wir sofort
in einen neuen Zustand. Stattdessen können wir also den absoluten
Wert von Geschwindigkeit x überprüfen, und wenn er größer als, sagen wir,
0,5 ist , beenden wir das Skript. Dadurch rutscht das Sprite für
eine kurze Zeit
weiter eine kurze Zeit nachdem es den
unteren Rand des Abhangs erreicht Um das zu tun, schnappen wir uns
einen If-the-Block und platzieren
ihn direkt unter dem Block „Wenn nicht, ist
Neigung dr gleich Null“. Dabei achten wir
darauf, dass er sich innerhalb des Slideblocks darauf, dass er sich innerhalb des Slideblocks Wenn Zustand ist gleich
Neigung Gehen wir für die Bedingung zu Operatoren und geben zuerst einen Block
größer als ein Dann legen Sie einen
Block Bauchmuskeln auf die linke Seite. Gehen wir nun zu Variablen
und prüfen wir, ob der Bauchmuskelwert der
Geschwindigkeit X größer als 0,5 ist. Wenn ja, gehen wir zur Steuerung, fügen einen Stopp-Block ein
und beenden dieses Skript. Und lass es uns versuchen. Fantastisch. Jetzt rutschen wir etwas
weiter unten entlang. Im Moment
müssen wir allerdings warten, bis wir mit dem
Rutschen fertig sind, bevor wir springen können. Es
wäre wahrscheinlich besser,
den Spieler springen zu lassen ,
sobald er den Boden erreicht hat. Um das zu tun, können wir das Script
hier nur beenden , wenn der absolute Wert von Geschwindigkeit x größer als 0,5 ist und die springende Variable gleich Null
ist. Wenn das Springen gleich Null ist, versucht
der Spieler nicht zu springen, also bleiben wir im Zustand
Slope Slide. Andernfalls
erlauben wir dem Skript, uns
in den Sprungstatus umzuschalten Okay.
Gehen wir also zuerst zu Operatoren und bringen einen A-Block
in einen leeren Raum. Dann lassen Sie uns die Bauchmuskeln mit einer Geschwindigkeit von
x größer als 0,5 Block
auf eine Seite des A-Blocks bewegen x größer als 0,5 Block auf eine Seite des A-Blocks und den A-Block
als neue Bedingung verwenden. Für die andere Seite
des A-Blocks fügen wir einen Gleichheitsblock ein Gehen Sie dann zu Variablen und
prüfen Sie, ob Springen gleich Null ist. Im
Moment funktioniert das allerdings nicht wirklich, denn wenn wir zum Skript für vertikale
Bewegungen zurückkehren , verhindern
wir, dass der Spieler
springt , solange er sich
im Hanglauf-Zustand befindet Stattdessen wollen wir
diese beiden Blöcke nur ausführen , wenn Slope DR ebenfalls ungleich Null
ist. Gehen wir also wieder zu Operatoren und bringen einen A-Block
in einen leeren Raum, verschieben den Slideblock mit dem Status gleicher
Steigung in den A-Block und verwenden den
A-Block als neue Bedingung. Für die andere Seite fügen
wir einen Knotenblock und
einen Gleichheitsblock
ein Gehen Sie dann zu Variablen
und prüfen Sie, ob Steigung du nicht gleich Null ist Damit verhindern wir nur dann, dass der Spieler springt, wenn er sich tatsächlich an einem Hang befindet und
nicht auf einer ebenen Fläche rutscht. Okay? Ich denke, wir sind
bereit, es zu versuchen. Wir können jetzt
springen, sobald wir den Grund
eines Abhangs erreichen. Hervorragend. Und nur um sicherzugehen, dass bei nach
links gerichteten Hängen alles richtig
funktioniert, wählen
wir die
Sprite-Stufe aus, ändern die Richtung auf minus 90 und setzen den
Rotationstyp auf links nach rechts Dann probiere es aus.
Perfekt. Gut, lassen Sie uns die
Richtung des Levels wieder auf 90 ändern. Und wir sind endlich fertig
mit dem Hangrutschen. Das war definitiv
eine Herausforderung. Aber zum Glück sind wir jetzt fast fertig mit
den Spielermechaniken, und wir haben uns das Beste für das letzte Wandrutschen
und Wandspringen aufgehoben.
78. Gleiten an Wänden: Wenn der Spieler
gegen eine Wand springt, sofort
aufhalten und
wieder auf den Boden fallen lassen,
sondern aufhalten und
wieder auf den Boden fallen lassen, wir ihn nicht sofort
aufhalten und
wieder auf den Boden fallen lassen,
sondern ihn an der Wand festklammern und langsam
die Wand
hinunterrutschen Und während wir die
Wand hinunterrutschen, lassen wir sie springen. Dadurch können
sie von
einer Wand zur anderen springen , die sich möglicherweise in der Nähe befindet. Wenn wir uns mit den Kostümen
für die Sprite der Spieler befassen, haben
wir hier unten ein Kostüm
für die Wandslide-Staaten Dieses Kostüm lässt
das Monster so aussehen,
als würde es
sich an der Wand festklammern, wenn es die Wand herunterrutscht Okay, um zu beginnen, gehen
wir zum Code und dann
zum Skript Wenn ich
Update 2 erhalte Und hier fügen wir einen neuen benutzerdefinierten Block für das Verschieben
von Wänden hinzu. Gehen wir also zu MyBlocks
und erstellen wir einen neuen. Nennen wir es Slide on
Wall und klicken wir auf Okay. Fügen wir nun dem
Update to-Skript einen Block mit Folie an der
Wand hinzu. Es spielt keine Rolle, ob wir zuerst eine
Schrägstellung oder eine
Wandschiebung
ausführen, solange wir beides
nach den
Bewegungsblöcken und vor dem Block „Status
aktualisieren“ tun . Ordnung, jetzt schnappen wir uns
die definierte Folie auf dem Wandblock und verschieben sie
in einen leeren Bereich. Okay. Um auf einer Wand zu
rutschen, muss
der Spieler in
der Luft sein und sich
auf die Wand zubewegen. Und wenn sie immer noch
die horizontale Bewegungstaste drücken die horizontale Bewegungstaste während sie auf den Boden
fallen, wir die Wand gleiten. Wir machen es auf diese Weise, weil der Spieler vielleicht nicht
jedes Mal, wenn er gegen eine Wand stößt, die Wand rutschen möchte , da dies ihn verlangsamen und ziemlich nervig
werden
kann. Solange sie
die horizontale Bewegungstaste loslassen ,
bevor sie anfangen zu fallen, rutschen
sie nicht an der Wand. diesem Hintergrund überprüfen
wir im
Slide-on-Wall-Skript zunächst, ob sich der Spieler gerade in der
Luft
befindet und fällt. Um das zu tun, gehen wir zur Steuerung und fügen
einen Wenn-und-Block ein. Gehen wir für die Bedingung zu den Operatoren und fügen einen
UND-Block ein. Lassen Sie uns auf der einen Seite einen „
Mehr als“ -Block einfügen. Und für die andere Seite fügen wir zuerst einen
Nicht-Block und
dann einen Block mit dem Wert
größer als ein. Gehen wir nun zu Variablen
und überprüfen wir, ob der Fehler größer als Null
ist. Und Geschwindigkeit Y ist nicht
größer als Null. Dadurch wird sichergestellt, dass sich der
Sprite gerade in der Luft befindet und zu Boden
gefallen Als Nächstes müssen wir sicherstellen, dass
der Spieler immer noch
die horizontale Bewegungstaste drückt und dass sich das Sprite
tatsächlich neben einer Wand befindet Dazu müssen wir lediglich die Exposition des Sprites
anhand des aktuellen X-Achsenwerts
ändern anhand des aktuellen X-Achsenwerts und prüfen, ob das Sprite Gehen wir also zunächst zur Bewegung und bringen die
Änderung X für Block ein Gehen wir dann zu Variablen
und ändern X durch X-Achse. Wenn das Sprite also bereits an der Wand
steht und
der Spieler
weiterhin versucht, sich auf die Wand
zuzubewegen, wird das Sprite
dadurch gegen und
der Spieler
weiterhin versucht, sich auf die Wand die Wand gedrückt Kollision auslöst Um nach der Kollision zu suchen, gehen
wir zunächst zu M-Blöcken und bringen einen Scheck hinein, der sich auf einen festen Block bezieht
. Dann gehen wir zur Steuerung und fügen einen
Wenn-Dann-Block ein. Und was die Bedingung angeht, gehen
wir zu den Operatoren und
fügen einen Gleichheitsblock Gehen Sie dann zu Variablen und prüfen Sie, ob das Berühren eines
Festkörpers gleich eins ist. Wenn das der Fall ist, können
wir zu MI-Blöcken gehen, einen Block mit
festem Status und ihn auf die Folie Wall
Underscore setzen, wobei wir
darauf achten müssen, dass
die korrekte Schreibweise verwendet wird Und wenn wir uns
das Wandslide-Kostüm ansehen, es standardmäßig nach rechts, wie alle
anderen Kostüme Also zurück im Slide
on Wall-Skript, sobald wir anfangen, auf der Wand zu
rutschen, wollen
wir auch die
Richtung der Sprites umkehren Gehen wir dazu zu Motion und fügen einen Punkt-
und Richtungsblock hinzu Gehen Sie dann zu Operatoren und verwenden Sie einen
Subtraktionsblock als Eingabe Verwenden wir eine Null als erste Eingabe des
Subtraktionsblocks, und für die zweite Eingabe wir zur Bewegung zurück und
fügen einen Richtungsblock Dadurch wird das Sprite
in die entgegengesetzte Richtung zeigen. Schließlich wollen wir das Sprite unabhängig davon,
ob wir mit dem Verschieben der Wand beginnen
oder nicht ,
wieder in seine ursprüngliche Position Dazu
müssen wir nur
X um Null minus X-Achse ändern X um Null minus X-Achse Lassen Sie uns also eine weitere
Änderung X für Block nehmen und sie direkt unter dem Punkt
platzieren, dass die
Berührung eines Festkörpers einem Block entspricht. Achten Sie
dabei darauf, dass sie sich innerhalb
des äußeren I-Dünnblocks Für die Eingabe können wir hier
ein Duplikat des
Subtraktionsblocks verwenden ein Duplikat des
Subtraktionsblocks Und werde den
Positionsblock los, gehe
dann zu Variablen und ersetze
ihn durch einen X-Achsenblock In Ordnung, wir sind fast
bereit, es zu testen. Aber zuerst müssen wir zum Update-State-Skript gehen und uns um den Status der Wandfolie
kümmern. Dazu
überprüfen wir, ob wir uns im Zustand
der Wandrutsche befinden
und noch in der Luft sind. Wenn ja, bleiben wir im Zustand
der Wandfolie, indem wir das Skript
beenden. Gehen wir also zur Steuerung und bringen
einen Wenn-Dann-Block in
ein leeres Feld. Gehen
wir für die Bedingung zu Operatoren, fügen Und-Block ein und setzen
dann einen Gleichheitsblock auf Seite und einen
Größer-als-Block auf der anderen Seite Gehen wir nun zu Variablen
und prüfen, ob der Status gleich der Folie mit dem
Wandunterstrich ist und ob der
Fehler größer als Null ist Wenn ja, gehen wir zur Steuerung,
fügen einen Stopp-Block hinzu
und beenden das Skript Damit bleiben wir im Zustand
der Wandrutsche,
bis wir den Boden berühren. Jetzt schnappen wir uns den Block I then, und wir können das entweder direkt
nach dem
Slide-Check am Hang machen oder davor. Okay, es ist Zeit
, es zu testen. Wenn wir jetzt gegen diese Wand springen dabei eine
rechte Steuertaste gedrückt halten, können
wir sie runterrutschen und gehen wieder in den Leerlauf, sobald
wir den Boden berühren. Wenn wir gegen die Wand
springen, aber die Bewegungstaste
loslassen,
bevor wir anfangen zu fallen, rutschen
wir nicht auf
der Wand. Perfekt. Abgleiten von Wänden ist momentan
allerdings etwas
sinnlos, weil die Schwerkraft uns viel zu schnell nach unten
zieht Um das zu beheben, wollen wir die
Schwerkraft außer Kraft setzen und mit konstanter, langsamerer Geschwindigkeit
nach unten rutschen Gehen wir dazu zum
Skript „ Vertikale
Bewegung handle“. Hier unten, in der Nähe des Bodens
, nutzen wir Schwerkraft, um den Sprite immer schneller
nach unten zu ziehen Wir können also zunächst überprüfen,
ob
wir uns im Zustand der
Wandrutsche befinden, und wenn ja, setzen
wir Geschwindigkeit wy auf einen
kleinen negativen Wert,
sodass setzen
wir Geschwindigkeit wy auf einen
kleinen negativen Wert, sich das Sprite mit einer langsamen, konstanten Geschwindigkeit
nach unten bewegt Andernfalls
ändern wir die Geschwindigkeit Y weiterhin durch die Schwerkraft. Okay? Lassen Sie uns also zuerst
einen In-Din-Block in einen leeren
Raum bringen einen In-Din-Block in einen leeren
Raum Wir können den Block zur Änderung der Geschwindigkeit
Y hier in den TS-Teil verschieben , I thinouts
an das Skript anhängen und
den Block „Vertikal
verschieben“ an den unteren Rand Für die Bedingung duplizieren
wir den
Slideblock State gleich Slope von hier oben. Aber überprüfen Sie jetzt, ob es der unterstrichenen Folie der
Wand entspricht. Wenn ja, können wir zu Variablen gehen, einen Satz zum
Blockieren hinzufügen und Geschwindigkeit
wy auf minus Drei setzen Mal sehen, ob es funktioniert. Sehr cool. Wenn wir jedoch versuchen, auf
diesem Teil zu rutschen , der den Boden nicht
erreicht, können
wir sehen, dass wir
weiter an der Wand rutschen ,
auch wenn wir unter
den Boden der Wand gegangen sind. Um dieses Problem zu beheben, müssen wir kontinuierlich überprüfen, ob
wir immer noch gegen die Wand stoßen, und wenn nicht, werden wir den
Status der Wandfolie verlassen. Um das zu tun, gehen wir zurück
zur Folie auf Wandskripten. Am Anfang des Skripts überprüfen
wir zunächst, ob wir uns bereits im Status
der Wandfolie befinden, und wenn ja, werden
wir etwas Ähnliches wie hier tun, nämlich die Exposition
des Sprites
ändern und
nach die Exposition
des Sprites
ändern Kollisionen
suchen Gehen wir also zunächst zur Steuerung und bringen einen ITN-Block
in einen leeren Raum. Für die Bedingung gehen wir zu den Operatoren und fügen einen
Equals-Block ein Gehen Sie dann zu Variablen und überprüfen Sie, ob Status
gleich Wandfolie ist Ich weiß, dass wir den Wert von X X
verwenden, um das Sprite
zu bewegen Aber wenn wir das auch hier tun, wird der Spieler gezwungen, ständig die Bewegungstaste drücken
zu müssen ,
um
die Wand hinunterzurutschen Wir wollen es ihnen ermöglichen, die Taste
loszulassen, sobald
sie zu rutschen beginnen. Stattdessen
können wir also die
Richtung des Sprites nehmen,
das von der Wand
weg zeigen sollte,
geteilt durch minus 90, geteilt durch minus 90, was uns entweder
eins oder minus eins ergibt, dann die Exposition
um diesen Betrag ändern Dadurch wird das Sprite um einen Schritt
rückwärts bewegt. Wenn das zu einer
Kollision mit der Wand führt, dann sind wir immer noch auf der Wand, also rutschen wir weiter Andernfalls werden wir aus den Folienzuständen
der Wand herauskommen. Gehen wir also zunächst zur Bewegung über und fügen dem Block I dann eine Änderung X Byblock
hinzu Dann gehen wir zu Operatoren und verwenden einen Divisionsblock
als Eingaben für den Divisionsblock wir für den Divisionsblock zurück zur Bewegung und dividieren
wir die Richtung
durch minus 90. Jetzt wollen wir überprüfen, ob
wir einen Festkörper berühren. Gehen wir also zu M-Blöcken und einen Scheck ein, der einen festen Block
berührt. Wenn wir keinen Festkörper berühren, verlassen
wir den Zustand der
Wandfolie. Gehen wir also zur Steuerung und fügen ein
Wenn-und-Block ein. Und für die Bedingung verwenden
wir hier ein Duplikat des sich
berührenden Festkörpers entspricht
einem Block, außer dass wir überprüfen wollen,
ob es gleich Null ist Wenn das der Fall ist, verlassen
wir die Slide-Status auf der
Wand Um das zu tun, können wir zu
Mblocks gehen , um einen
festgelegten Statusblock einzufügen und ihn auf den leeren Wert zu setzen Das Update-State-Skript sorgt dann dafür, dass
wir in den richtigen Status versetzt Schließlich wollen wir, unabhängig davon, ob wir einen Festkörper berühren
oder nicht, wir einen Festkörper berühren
oder nicht,
das Sprite an
seine ursprüngliche Position zurückbringen seine ursprüngliche Position das Skript stoppen, damit dieser andere, falls der dünne
Block nicht ausgeführt wird Lassen Sie uns also zuerst
den Change-X-Block hier duplizieren, diese anderen Blöcke entfernen
und ihn direkt unter
den inneren, wenn dünnen Block platzieren Aber dieses Mal wollen wir die Richtung durch positive 90
teilen. Gehen wir nun zur Steuerung
an einem Stopp-Block direkt unter dem
Change-X-Block und beenden dieses Skript. Dann schnappen wir uns das alles
und platzieren es ganz oben im
Slide-On-Wall-Skript. Wenn wir das jetzt gleich
ausprobieren, macht das
unsere Wandrutsche tatsächlich komplett kaputt. Jetzt ist es so, als würden wir uns ständig die Wand zu und von ihr
weg
bewegen. Der Grund dafür ist
, dass im Skript „Horizontale
Bewegung bearbeiten“
jedes Mal, wenn die X-Achse nicht Null
ist, der Wert so verwendet wird, dass er uns in die Richtung zeigt, in die
wir uns bewegen wollen. Sobald das Skript „Folie an der Wand“ erneut
ausgeführt wird und wir uns
im Status „Folie an der Wand“ befinden, schauen
wir tatsächlich zur Wand, statt
von ihr weg. Das bedeutet, dass wir, wenn wir
X durch die Richtung dividiert durch
minus 90 ändern ,
uns tatsächlich von der Wand wegbewegen. Um dieses Problem zu beheben, können wir verhindern, dass das Skript
für die horizontale
Bewegung die Richtung der
Sprites ändert wenn wir uns im Zustand der
Wandfolie Um das zu tun, wickeln wir einen
Wenn-Dann-Block um den Punkt
- und Richtungsblock Stellen wir sicher, dass wir
den Block „Wenn nicht gleich
ducken“ herausnehmen und
ihn an der Unterseite
des neuen Wenn-Dann-Blocks anhängen und
ihn an der Unterseite
des neuen Wir haben also nur den Punkt- und Richtungsblock
innerhalb des neuen Für die Bedingung können
wir tatsächlich Nicht der Zustand ist
gleich der Hocker“
duplizieren Aber die Zustandsprüfung ist
nicht gleichbedeutend mit einer Wandrutsche. Das Skript ändert jetzt nur noch unsere Richtung, wenn wir uns nicht
im Status „Wandfolie“ befinden. Wenn wir es noch einmal versuchen, können
wir wieder auf
Wänden rutschen und wir hören auf zu rutschen, sobald wir nicht
mehr an der Wand stehen. Wir können das Rutschen auch beenden,
indem wir uns von der Wand entfernen. Wir können auch an den Seiten von
Hängeplattformen herunterrutschen ,
was ziemlich cool ist. Okay, jetzt, wo das
Wandrutschen ganz gut funktioniert, sind
wir bereit, mit
dem Wandspringen fortzufahren
79. Springen auf Wänden: Im Moment können
wir nicht springen, wenn
wir auf einer Wand rutschen . Das liegt daran, dass
wir am Ende
des Skripts für die vertikale
Bewegung des Griffs die Geschwindigkeit Y auf
einen konstanten Wert setzen, Skripts für die vertikale
Bewegung des Griffs die Geschwindigkeit Y auf
einen konstanten Wert setzen wenn
wir uns im Zustand der Wandfolie befinden. Dadurch werden alle Änderungen
überschrieben, die wir möglicherweise
durch den Versuch, zu springen, daran vorgenommen haben Wir können es also so einrichten, dass
die Geschwindigkeit Y nur dann variabel ist , wenn wir uns im Zustand
der Wandfolie befinden
und nicht versuchen zu springen Gehen wir dazu zu Operatoren und bringen einen Block
in einen leeren Bereich. Lassen Sie uns den Zustand gleich der
Wand verschieben, den Block auf
eine Seite des Blocks verschieben und
den Block als Bedingung verwenden Für die andere Seite können
wir einen Gleichheits-Block einfügen. Gehen Sie dann zu Variablen und
prüfen Sie, ob Springen gleich Null ist. Das bedeutet, dass der Spieler
nicht versucht zu springen, also werden wir den
Spieler weiterhin langsam die Wand hinunterrutschen Andernfalls lassen wir wie gewohnt die Schwerkraft
die Oberhand gewinnen. Das wird aber
noch nicht funktionieren, weil der Fehlerwert höher als vier sein
wird, was uns sowieso am Springen
hindern wird. Um das zu beheben,
gehen wir zur Steuerung und bringen einen Wenn-Dann-Block
in ein leeres Feld. Für die Bedingung
verwenden wir
hier ein Duplikat des gesamten Zustands ist gleich
Wandfolie und Springen ist
gleich Nullblock Dann gehen wir zu Variablen, fügen dem ITN-Block einen Satz zu Block hinzu und
setzen
den Fehler auf eins Jetzt platzieren wir diesen
dünnen Block direkt
über dem Block , der überprüft, ob
ein Fehler von weniger als vier vorliegt Sicherzustellen, dass es sich auch innerhalb der FY-Achse befindet, entspricht einem Block Das heißt, wenn wir eine Sprungtaste drücken, uns
aber gerade im Zustand
der Wandfolie und noch nicht springen, wird der Fehler auf eins gesetzt Da eins
natürlich weniger als vier ist, können wir mit
dem nächsten
Block „Ich dünn“ springen
, auch wenn wir uns im Status „Wandfolie“ befinden. Wenn wir das Spiel jetzt starten
und an einer Wand rutschen, können
wir eine Sprungtaste drücken, um zu
springen, oder weitere rutschen die Wand hinauf. Das ist aber nicht ganz das, was
wir wollen. Stattdessen
wollen wir den Sprite von der Wand stoßen,
sodass der Spieler von Wand zu Wand
springen Dazu
müssen wir auch das
Skript für
die horizontale Bewegung ins Bild bringen und es
verwenden, um eine gewisse
horizontale Kraft auf die Sprites auszuüben Wir wissen, dass wir von der Wand
springen, wenn wir uns immer noch im Zustand
der Wandrutsche befinden und die Variable für das Springen größer als Null
ist Um das zu überprüfen,
suchen wir nach einer leeren Stelle. Dann geh zur Steuerung und
bring ein I und dann Block rein. Gehen wir für die Bedingung zu den Operatoren und fügen einen
AND-Block hinzu. Auf der einen Seite können wir hier
ein Duplikat des Slideblocks State
gleich Wall verwenden hier
ein Duplikat des Slideblocks State
gleich Wall Und für die andere Seite fügen wir einen „
Mehr als“ -Block hinzu Gehen Sie dann zu Variablen und prüfen Sie, ob das Springen
größer als Null ist. Wenn das der Fall ist, können
wir Geschwindigkeit X um
einen Betrag ändern, der groß genug ist, um
den Sprite von der Wand zu stoßen Lassen Sie uns also eine Änderung
pro Block vornehmen und Geschwindigkeit X ändern. Da das Sprite von der Wand weg
zeigt, während es nach unten
rutscht, um das Sprite von der Wand wegzustoßen, können
wir seine
Richtung durch 90 teilen, was uns entweder eins
oder eine negative Eins ergibt, und das
dann mit einem Wert multiplizieren Gehen wir also zuerst
zu Operatoren und fügen der Änderungsgeschwindigkeit X
einen Multiplikationsblock hinzu legen
dann einen
Divisionsblock auf eine Gehen wir nun zur Bewegung und teilen wir die
Richtung durch 90. Und multiplizieren Sie es mit
etwas Hohem wie zehn. Jetzt können wir uns den
ITN-Block schnappen und
ihn an die Spitze des Handle-Skripts für die
horizontale Bewegung setzen, und lassen Sie uns es versuchen Wenn wir jetzt springen, während wir eine Wand
hinunterrutschen, werden
wir von der Wand gestoßen Im Moment können wir jedoch leicht wieder an dieselbe Wand zurückkehren,
wenn
wir die
entgegengesetzte
Bewegungstaste gedrückt halten . Das ideale Verhalten wäre, den Spieler
vorübergehend daran zu hindern sich wieder derselben Wand
zuzuwenden. Versuchen wir dazu zunächst, hier die eingestellte X-Achse
gleich Null-Block zu
duplizieren und sie dann
zum Block I
hinzuzufügen, um von der Wand zu springen Das sollte den Spieler
davon abhalten horizontal zu
bewegen Es funktioniert jedoch immer noch nicht. Das liegt daran, dass sobald
wir uns von der Wand entfernen, das Skript
„Folie an der Wand uns aus den
Folienzuständen entfernt. Das bedeutet, dass
wir uns bei
der nächsten Ausführung des Skripts für horizontale
Bewegungen nicht mehr
im Status „Wandfolie“ befinden, sodass sich der Spieler frei bewegen
kann. Um zu verhindern, dass
der Spieler sofort
wieder zur gleichen Wand zurückkehrt, müssen
wir
ihn über mehrere Iterationen der Spielschleife hinweg immer wieder
von dieser Wand
wegdrängen ihn über mehrere Iterationen der Spielschleife hinweg immer wieder
von dieser Dazu
müssen wir verfolgen, ob
der
Spieler von der Wand springt oder nicht,
und das können wir
mit einer neuen Variablen tun Gehen wir also zu Variablen
und erstellen wir eine neue. Wir können es Wall Jumping nennen und es nur für
diesen Sprite machen Wandspringen hat
entweder den Wert
Eins , wenn wir Wände springen,
oder Null, wenn wir es nicht tun Gehen wir also zunächst
zum Skript mit der grünen Flagge über, fügen einen Satz zum Blockieren hinzu und
setzen das Wandspringen auf Null. Jetzt zurück zum Drehbuch für horizontale
Bewegungen. Anstatt zu überprüfen, ob wir die
Wand rutschen und springen, können
wir einfach überprüfen, ob
wir von der Wand springen. Lassen Sie uns also den
gesamten Bedingungsblock hier loswerden. Dann gehen wir zu Operatoren und ersetzen ihn durch
einen Gleichheitsblock Gehen wir nun zu Variablen und prüfen, ob
Wandspringen gleich eins ist. Da wir
das Sprite
jetzt
mehrmals statt einmal drücken, können
wir außerdem das Sprite
jetzt
mehrmals statt einmal drücken, eine viel geringere Kraft einsetzen Ich habe festgestellt, dass
die Verwendung der Beschleunigungsvariablen hier
tatsächlich ziemlich gut funktioniert Als Nächstes müssen wir zum Skript für
vertikale Bewegungen übergehen und herausfinden, wann wir das
Wandspringen auf eins setzen müssen. Wir sollten mit dem
Wandspringen beginnen, wenn wir uns gerade im
Zustand der Wandrutsche befinden und versuchen zu springen. Wir überprüfen das bereits, indem wir
hier den Status I = Wall Slide verwenden und Springen
ist gleich Null. können also nicht nur
den Fehler auf eins setzen, Wir können also nicht nur
den Fehler auf eins setzen, sondern auch einen weiteren Satz auf Block und Wall
Jumping auf eins setzen Wir sind jetzt fast fertig, aber wir müssen auch
entscheiden, wann wir das
Wandspringen wieder auf
Null setzen Wandspringen wieder auf , damit der
Spieler sich wieder bewegen kann. Wir können das tun, wenn der Sprite anfängt, sich wieder
in Richtung Boden zu bewegen Um das zu tun,
suchen wir uns wieder einen leeren Raum. Gehen Sie dann zur Steuerung und geben
Sie einen Wenn-Dann-Block ein. Gehen wir für die Bedingung zu den Operatoren und fügen einen
UND-Block hinzu. Für die eine Seite fügen wir einen
Gleichheitsblock ein, und für die andere Seite fügen wir einen Nicht-Block ein, dann einen Größer-Als-Block Gehen wir nun zu Variablen und prüfen, ob Wandspringen gleich eins ist und Geschwindigkeit Y nicht
größer als Null ist Wenn das der Fall ist, können
wir einen Satz zum
Blockieren hinzufügen und das
Wandspringen auf Null setzen Wenn wir also gerade beim
Wandspringen sind und der Sprite
sich immer noch nicht nach oben bewegt, setzen
wir den Wandsprung auf Null
, sodass sich der
Spieler frei bewegen kann Jetzt können wir all das ganz oben in
den Skripten für vertikale
Bewegungen hinzufügen oben in
den Skripten für vertikale
Bewegungen Und noch etwas, was wir tun wollen, ist unten
zu sehen, anstatt zu überprüfen, ob wir uns im Zustand
der Wandrutsche befinden und
Springen gleich Null ist, wollen
wir überprüfen, ob
Wandspringen gleich Wenn wir es beim Springen belassen
und das Spiel starten, Halten einer
Sprungtaste, während wir mit dem
Wandrutschen beginnen erhöht das
Halten einer
Sprungtaste, während wir mit dem
Wandrutschen beginnen,
die Sprungvariable Dadurch kommt die Schwerkraft ins Spiel und zieht uns schneller nach unten. Aber wenn wir es ändern, um zu überprüfen, ob Wandspringen gleich Null ist, passiert
das nicht Und wenn wir jetzt von einer Wand springen, können
wir nicht sofort wieder
zu ihr zurückkehren Wir können auch leicht von
Wand zu Wand springen. Sehr cool. Es gibt jedoch eine
Kleinigkeit, die schwer zu bemerken ist, aber wenn Sie es einmal getan haben, kann es ein bisschen irritierend
sein Wenn wir zum ersten Mal mit dem
Wandspringen beginnen, , wechseln
wir
für einen sehr kurzen Zeitraum in den Ruhezustand bevor wir in
den Sprungzustand wechseln Das passiert, weil
wir, wenn wir zum ersten Mal von einer Wand springen, hier
fälschlicherweise auf einen Wert setzen. Aber wenn wir uns
das Update-State-Skript ansehen, werden wir erst in
den Sprungstatus versetzt, wenn der
Fehler größer als drei ist. erst in
den Sprungstatus versetzt, wenn der
Fehler größer als drei ist. Wir haben das vor
einiger Zeit gemacht, damit wir beim Springen
nicht kurzzeitig in den Sturzzustand versetzt werden, wenn
wir
Coyote Time verwenden Springen
nicht kurzzeitig in den Sturzzustand versetzt werden, wenn
wir
Coyote Time nicht kurzzeitig in den Sturzzustand versetzt werden, wenn
wir Aber jetzt, wenn wir zum ersten Mal
mit dem Wandspringen beginnen, überspringt
es diesen Vorgang, wenn wir dann
blockieren, und versetzt uns paar Frames entweder in den Geh-Zustand oder für ein
paar Frames entweder in den Geh-Zustand oder in
den Ruhezustand Um das zu beheben, können
wir es so einrichten, dass es uns auch in den Sprungzustand
versetzt wenn wir gerade von der Wand springen Gehen wir dazu zu Operatoren
und fügen einen OR-Block ein. Lassen Sie uns die Luftmenge, die
größer als Null ist, zu
einer Seite des Or-Blocks bewegen einer Seite des Or-Blocks und den Or-Block
als Bedingung verwenden. Fügen wir nun der anderen Seite einen
Gleichheitsblock hinzu. Gehen Sie dann zu Variablen und prüfen Sie, ob
Wandspringen gleich eins ist. Und jetzt sollte es uns
sofort den Sprungzustand versetzen
, wenn
wir mit dem Wandspringen beginnen Ordnung, wenn das erledigt ist, können
wir weitermachen und
all diese Variablen ausblenden Und wir können dem Spieler-Sprite endlich eine Pause gönnen und zu
anderen Teilen des Spiels übergehen Und wir werden damit beginnen, dieses langweilige Testlevel zu verlassen
.
80. Generiere die Levels: Wenn wir uns die Kostüme für
das Level-Sprite
ansehen ,
haben wir vor einiger Zeit gesehen, dass jedes Level
aus mehreren Teilen besteht, die wie
die Zellen eines Rasters Wenn sich der Spieler innerhalb eines Levels
bewegt, scrollt er nahtlos durch das Level, als würde
eine Kamera dem Spieler folgen Außerdem
wird jedes Kostüm eines Levels aus diesen
einzelnen Kacheln zusammengebaut. Unten hier habe ich die Kacheln
bereitgestellt, die
ich für die Level verwendet habe, sowie einige zusätzliche
, falls du deine eigenen Level erstellen oder die vorhandenen
erweitern möchtest . Leider ist
es jedoch ziemlich schwierig, die Dinge im
Scratch-Kostümeditor perfekt anzuordnen. Ich empfehle daher dringend, beim Erstellen
eigener Levels Vektorgrafik-Software wie Adobe Illustrator oder wie Adobe Illustrator oder
Inkscape
zu Wenn du mit der rechten Maustaste auf ein Kostüm
klickst, kannst du es in
das SVG-Dateiformat exportieren Sie können die Datei dann
in einer
Vektorgrafik-Anwendung öffnen , und die meisten von ihnen bieten uns die Möglichkeit,
Objekte zusammenzufügen Wie dem auch sei, bevor wir uns mit
der
Erstellung zusätzlicher Ebenen zurechtlegen, wollen wir uns ansehen, wie wir
die aktuellen zum Laufen bringen können. Dazu müssen wir
verfolgen, auf welcher Ebene wir uns
gerade befinden , und
zwar innerhalb des Codes
für den Hintergrund. Lassen Sie uns also zunächst
eine neue globale Variable erstellen, die wir Level nennen können. Und wir können weitermachen
und die Variable verstecken. im Flaggen-Skript im Hintergrund vor der Spielschleife Lassen Sie uns
im Flaggen-Skript im Hintergrund
vor der Spielschleife ein Set zum Blockieren hinzufügen und das Level auf eins setzen. Okay. Gehen wir jetzt zurück
zu den Level-Sprites. Wenn wir uns die
Kostüme noch einmal ansehen, müssen
wir, um ein Level zu generieren, um ein Level zu generieren,
alle Kostüme für
dieses bestimmte Level durchgehen und die Zeilen- und Spaltenindizes verwenden und Spaltenindizes jeden Teil
im Spiel
zu positionieren Dazu können wir
den Kostümnamen für
jeden Teil nehmen und ihn mithilfe der Bindestriche in
Segmente aufteilen Das erste Segment zeigt uns , zu welcher Ebene das Teil gehört Der zweite gibt
uns den Zeilenindex und der dritte
den Spaltenindex. Okay, um anzufangen, gehen
wir zurück zum Code-Tab. Gehen wir zunächst zu den Events und Block ein, auf den die grüne
Flagge geklickt wurde Wir werden den gesamten
Level-Generierungscode
in einen benutzerdefinierten Block einfügen in einen benutzerdefinierten Block Gehen wir also zu Mbloxs
und erstellen einen neuen. Wir können es Generate nennen, und wir möchten
sicherstellen, dass die Option Run
ohne Bildschirmaktualisierung aktiviert ist.
Klicken Sie dann auf Okay. Lassen Sie uns fortfahren und dem Skript mit
der grünen Flagge
einen Generate-Block hinzufügen Skript mit
der grünen Flagge
einen Generate-Block und den definierten
Generate-Block nach unten verschieben. Was wir hier machen werden,
ist, dass wir zuerst das Level-Sprite-Kostüm gegen
das leere Kostüm hier oben austauschen. Dann wechseln wir
kontinuierlich zum nächsten Kostüm, bis wir
das erste gefunden haben , das
zum aktuellen Level gehört Das ist der Fall, wenn der Name
das Wort Level enthält, gefolgt von der Zahl
für das aktuelle Level, die uns
durch die Level-Variable gegeben wird. Also zurück im
Generate-Script, gehen wir zu Looks, fügen einen Switch-Kostümblock hinzu und wechseln zum leeren Kostüm. Gehen wir als Nächstes zur Steuerung und fügen eine
Wiederholung ein, bis der Block blockiert ist. Wir wollen wiederholt zum nächsten Kostüm wechseln ,
bis wir das
erste gefunden haben , das
das Wort Level
gefolgt vom Wert
der Level-Variablen enthält . Um das zu tun,
gehen wir zu Operatoren und verwenden den Block Contains
als Bedingung für den Block
Repeat until. Dann schnappen wir uns einen Join-Block und verwenden ihn als zweiten Eingang
des Contains-Blocks. für die erste Eingabe
des Blocks „Enthält Gehen
wir für die erste Eingabe
des Blocks „Enthält“ zu Looks und fügen
dort einen Kostümblock hinzu. Und wir wollen
statt der Nummer
den Namen des Kostüms überprüfen . für den Join-Block Geben
wir für den Join-Block das Wort Level
in die erste Eingabe ein. Und für die zweite Eingabe gehen
wir zu Variablen und
fügen einen Level-Block ein. nun innerhalb des Blocks „Bis
wiederholen Gehen
wir nun innerhalb des Blocks „Bis
wiederholen“ zu „Looks“ und fügen
einen nächsten Kostümblock hinzu. Für Stufe eins
sollte uns das auf das Kostüm Stufe eins, 00 beschränken. Also lass es uns versuchen. Fantastisch. Und wir können uns innerhalb des Levels
bewegen. Das erste Kostüm für Level
zwei ist Level Two, Zero, Zero. Wenn wir also zum
Hintergrundcode gehen, die Level-Variable
auf zwei
setzen und das Spiel starten, sollte
es uns
zu diesem Kostüm führen. Möglicherweise müssen wir jedoch zweimal auf
die grüne Flagge klicken ,
damit es funktioniert. Wir werden das etwas später beheben. Wir können auch zu Level drei gehen und Level vier, das
ist das letzte Level. Wenn wir jetzt Level fünf ausprobieren,
das es nicht gibt, bekommen
wir ein seltsames Verhalten, bei dem der Level-Sprite ständig zwischen seinen
verschiedenen Kostümen
wechselt Das passiert, weil wir alle Kostüme
durchgehen und nie eines
für Level fünf finden Und wenn wir den nächsten Kostümblock einem Sprite durchspielen, der
sein letztes Kostüm trägt, wechselt
sein Kostüm tatsächlich zurück zum allerersten Kostüm
und der Zyklus wiederholt Im Generierungsskript
des Level-Sprites wiederholen
sie sich also, bis der Block
quasi
zu einem Block für immer wird bis der Block
quasi
zu einem Es ist nicht wahrscheinlich, dass
wir versehentlich versuchen, ein
Level zu generieren, das nicht existiert, aber nur für den Fall, dass wir das Script
beenden können, falls es alle Kostüme
durchsucht und kein passendes findet Dazu müssen
wir nach dem Durchlaufen
des nächsten Kostümblocks nur überprüfen, ob das Kostüm
wieder zum leeren Kostüm gewechselt ist Gehen wir also zur
Steuerung und fügen unter dem
nächsten Kostümblock einen Wenn-Dann-Block Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock Dann können
wir hier anhand eines Duplikats
des Blocks mit dem Namen des Kostüms überprüfen, ob der
Kostümname leer ist. Wenn ja, können wir zur Steuerung gehen, einen Stopp-Block einfügen
und dieses Skript beenden Wenn wir nun versuchen, Level 5 zu
laden, stoppt
das Generierungsskript,
sobald wir
zum leeren Kostüm zurückkehren. Okay, gehen wir
zum Hintergrund und setzen Level wieder auf eins und
stellen sicher, dass es immer noch funktioniert. Um das Spieler-Sprite
wieder auf die Bühne zu bringen, müssen
wir möglicherweise das Spiel
beenden und seine Y-Position
manuell
auf etwa Null setzen Okay, jetzt, wo wir zum ersten Kostüm für
das aktuelle Level kommen können , besteht
der nächste Schritt darin, alle
Level-Kostüme
durchzugehen und für jedes einen
Level-Sprite-Klon zu erstellen, und wir müssen die Zeilen- und Spaltenindizes verwenden, um den Klon richtig
zu positionieren richtig
zu Dazu müssen wir den aktuellen Kostümnamen in
seine einzelnen, durch Bindestriche
getrennten Segmente aufteilen aktuellen Kostümnamen in seine einzelnen, durch Bindestriche Eine Gruppe
alphanumerischer Zeichen wie diese Kostümnamen wird in der Computerprogrammierung
üblicherweise als Zeichenfolge bezeichnet Und die Verwendung eines bestimmten
Zeichens zum Trennen einer Zeichenfolge wird als
Aufteilen der Zeichenfolge bezeichnet die Zeichenfolge mit dem
Kostümnamen aufzuteilen, erstellen
wir einen benutzerdefinierten Block Also zurück im
Level-Sprite-Code, gehen
wir zu Mblocks
und erstellen einen neuen Geben wir zunächst Split String und fügen eine Eingabe namens Dann fügen wir ein Label hinzu
und geben ein Zeichen ein. Fügen Sie dann eine weitere Eingabe hinzu, die
als Zeichen bezeichnet wird. Auf diese Weise können wir
die Zeichenfolge und das Zeichen
zum Aufteilen der Zeichenfolge eingeben , sodass wir den Code in
zukünftigen Projekten problemlos wiederverwenden Okay, wir möchten sicherstellen Option Ohne
Bildschirmaktualisierung ausführen aktiviert ist, und dann den Block erstellen Und lassen Sie uns weitermachen und
den definierten Block hierher verschieben. nun
die Aufteilung des Kostümnamens angeht, wollen
wir
das im Generierungsskript nach der Wiederholung tun das im Generierungsskript nach der , bis
der
Block fertig ist Nehmen wir also einen
geteilten Zeichenkettenblock und hängen ihn am Ende
des Wiederholungsblocks an Die Zeichenfolge, die wir teilen
wollen, ist natürlich der Name des Kostüms. Lassen Sie uns also einen
Kostümnamenblock duplizieren und ihn als erste Eingabe
für den geteilten Zeichenkettenblock verwenden. Und für den Charakter wollen
wir einen Bindestrich verwenden Kommen wir nun zum Split-String-Skript und sehen wir uns an, wie wir die Zeichenfolge
tatsächlich teilen können Wir werden
etwas benötigen, das
die Werte für jedes
einzelne Segment enthält. Dafür können wir
eine Variablenliste verwenden. Gehen wir also zu Variablen
und klicken Sie auf Liste erstellen. Wir können es String-Segmente nennen und es nur für
dieses Sprite erstellen Das erste, was wir im
Split-String-Skript tun wollen , ist
sicherzustellen, dass die Liste leer ist Lassen Sie uns also einen Block zum Löschen
aller Zeichenkettensegmente einfügen. Als Nächstes werden wir
jedes Zeichen in
der Zeichenketteneingabe in einer Schleife durchgehen jedes Zeichen in
der Zeichenketteneingabe in einer und es jedes Mal aufteilen, wenn das aktuelle Zeichen mit
den Zeicheneingaben übereinstimmt. Dazu benötigen wir
eine Variable, um den aktuellen
Zeichenindex in der Zeichenfolge zu
verfolgen , sowie eine Variable zum temporären Speichern der Zeichen, aus
denen ein Segment besteht. die erste neue Variable also Nennen
wir die erste neue Variable also Index und machen
sie nur für dieses Sprite Und für die zweite nennen
wir sie TIP Ebenfalls nur für dieses Sprite wollen
wir die Zeichenfolge in einer Schleife
durchlaufen, beginnend mit dem allerersten
Zeichen in der Zeichenfolge, die einen Index von eins hat Lassen Sie uns also ein Set zum
Blockieren hinzufügen und den Index auf eins setzen. Wir möchten auch, dass die
TIP-Variable leer anfängt. Lassen Sie uns also einen weiteren Satz zum Blockieren hinzufügen und temp
auf den leeren Wert setzen Um nun die
Zeichen in der Zeichenfolge in einer Schleife durchzugehen, erhöhen
wir kontinuierlich den Indexwert bis wir
alle Zeichen durchgegangen sind Gehen wir dazu zu Control und führen
eine Wiederholung ein, bis der Block blockiert ist. Gehen wir für die Bedingung zu Operatoren und fügen
einen Block größer als ein. Dann fügen wir eine
Blocklänge auf die rechte Seite ein. Gehen wir nun zu Variablen
und prüfen wir, ob der
Index größer ist als die Länge
der Zeichenketteneingaben. Länge der Zeichenfolge gibt uns die Gesamtzahl der Zeichen
, die diese Zeichenfolge enthält. Wenn der Index also
größer ist, wissen
wir, dass wir alle Zeichen
durchgegangen sind. Bis das passiert, wollen
wir nun überprüfen, ob
das Zeichen
im aktuellen Index mit der
Zeicheneingabe übereinstimmt. Wir werden verschiedene Dinge tun je nachdem, ob dies der Fall ist oder
nicht. Gehen wir also zu Control und fügen einen
I-Then-S-Block ein. Gehen wir für die Bedingung zu Operatoren und fügen zuerst einen Equals-Block ein Setzen Sie dann einen
Blockbuchstaben auf die linke Seite. Gehen wir nun zu Variablen
und prüfen wir, ob der
Buchstabenindex der Zeichenfolge dem Zeichen entspricht. Mit dem Buchstaben eines Blocks können
wir das Zeichen an einem bestimmten Index in einer Zeichenfolge ermitteln. Wenn dies der Fall ist, haben
wir ein Zeichen erreicht,
das der
Zeicheneingabe entspricht, was in unserem Fall ein Bindestrich sein
wird Das bedeutet, dass es an der Zeit
ist,
die Zeichenfolge aufzuteilen und die Ergebnisse in
der Liste der
Zeichenkettensegmente zu speichern Ergebnisse in
der Liste der
Zeichenkettensegmente Aber zuerst
müssen wir die Zeichen bis zu diesem Zeitpunkt vorübergehend
speichern,
bis
wir einen Bindestrich erreicht haben wir Zeichen bis zu diesem Zeitpunkt vorübergehend
speichern,
bis Wir werden das mit
der TIP-Variablen machen. Nehmen wir ein Set zum Blockieren, fügen es dem Outs-Teil
des I-The-Outs-Blocks und setzen die TIP-Variable. Für die Eingabe
wollen wir den
aktuellen Wert
der TEMP-Variablen
mit dem Zeichen am
aktuellen Index kombinieren aktuellen Wert
der TEMP-Variablen mit dem Zeichen am
aktuellen Index Gehen wir dazu zu Operatoren und fügen einen
Join-Block hinzu Gehen wir nun zu
Variablen und verwenden einen temporären Block als erste
Eingabe des verbundenen Blocks Für die zweite Eingabe wollen
wir das Zeichen
am aktuellen Index ermitteln, sodass wir verwenden
können hier ein Duplikat des Buchstabenindexes
des
Zeichenkettenblocks Sobald wir einen Bindestrich erreicht haben, wollen
wir
den aktuellen TIP-Variablenwert
in der Liste der Zeichenkettensegmente speichern den aktuellen TIP-Variablenwert
in der Liste der Zeichenkettensegmente Nehmen wir also ein Add to Block
und platzieren es im I-Teil. Und lassen Sie uns damit
Temp zu String-Segmenten hinzufügen. Wir wollen dann die temporäre Variable leeren
, damit wir
nur die Zeichen für
die folgenden Segmente abrufen können nur die Zeichen für
die folgenden Lassen Sie uns also einen Satz zum
Blockieren hinzufügen und temp
auf den leeren Wert setzen Im Moment wird die Option „Bis zum Block
wiederholen“ jedoch für immer
so weitergehen, da der
Index immer eins sein wird Um das zu beheben, müssen wir eine Änderung blockweise
erfassen, sie ganz unten
in der Wiederholung bis zum Block
platzieren
und sie verwenden, um den
Index um eins zu ändern. Wenn wir das Spiel jetzt starten, können
wir sehen, dass es den Kostümnamen anhand der Bindestriche
aufteilt und
die einzelnen Segmente zur Liste
der Zeichenkettensegmente hinzufügt einzelnen Segmente zur Liste
der Zeichenkettensegmente Wir
erhalten jedoch nur zwei Segmente, eines für die Ebene und eines für den Wir sollten auch ein
drittes für den Spaltenindex bekommen . Der Grund, warum wir den Spaltenindex nicht
erhalten
, ist , dass im Kostümnamen kein
Bindestrich folgt Wir könnten
alle Kostümnamen durchgehen und am Ende jedes einzelnen einen Bindestrich
hinzufügen, aber zum Glück gibt es
einen viel einfacheren Weg Nach der Wiederholung, bis der
Block beendet ist, der aktuelle Wert von TIP tatsächlich
der Spaltenindex Wir können also einen weiteren Block hinzufügen, ihn ganz
unten im Skript
platzieren
und ihn verwenden, um ganz
unten im Skript
platzieren
und ihn verwenden, TIP zur Liste
der Zeichenkettensegmente hinzuzufügen. Dadurch erhalten wir nun
alle drei Segmente. Lass uns das nur zum Spaß mit anderen
Zeichenketten und Zeichen testen . Dazu können wir zu Meine Blöcke gehen und einen geteilten
Zeichenkettenblock in einen leeren Bereich bringen. Für die Zeichenfolge können wir
beispielsweise
einige Wörter verwenden , die
durch Fragezeichen getrennt sind, und
sicherstellen , dass ein Fragezeichen
als Zeicheneingabe verwendet wird. Wenn wir jetzt auf den Block klicken, teilt
er die Zeichenfolge anhand der Fragezeichen auf und fügt
alle Segmente zur Liste Okay, jetzt, wo wir wissen, dass das
alles korrekt funktioniert, können
wir diesen
zusätzlichen geteilten Zeichenkettenblock loswerden und zurück
zu den generierten Skripten kommen Was wir
jetzt tun wollen, ist
alle Kostüme für
das aktuelle Level durchzugehen alle Kostüme für
das und von jedem einen Klon zu
erstellen Dazu wechseln wir
kontinuierlich zum
nächsten Kostüm, bis wir eines
erreichen, das nicht zum aktuellen Level
gehört. Das passiert, wenn
das Element auf Index eins der Liste nicht das Wort Level
enthält, gefolgt vom
aktuellen Level-Wert. Gehen wir also zur Steuerung und
führen eine Wiederholung ein, bis der Block blockiert ist. Gehen wir für die Bedingung zu Operatoren und fügen zuerst
einen Knotenblock dann einen Equals-Block Für die erste Eingabe
des Equals-Blocks gehen
wir zu Variablen und fügen das erste Element des
String-Segment-Blocks ein Und wir wollen überprüfen,
ob es nicht gleich
dem Wort Level ist ,
gefolgt vom Wert der
Level-Variablen, also können wir einfach ein Duplikat des Join-Blocks aus
dem
anderen Repeat- und Tail-Block
verwenden Join-Blocks aus
dem
anderen Repeat- und Tail-Block Okay, während wir
die Kostüme für
das aktuelle Level durchgehen , erstellen
wir für jedes Level einen
Sprite-Klon Damit der Code nicht zu unübersichtlich wird, machen
wir das in
einem benutzerdefinierten Block Gehen wir also zu MyBlock
und erstellen einen neuen. Für die Positionierung des Klons möchten
wir Zeilen
- und Spalteneingaben bereitstellen Geben wir also zuerst create Clone at Row
gefolgt von einem Doppelpunkt ein. Dann fügen wir die Eingabe einer Zeile und eine Spaltenbezeichnung, einen Doppelpunkt hinzu. Und eine Eingabe der Spalte.
Denken Sie, klicken Sie auf Okay. Fügen wir nun dem Block
Repeat until einen Create Clone Block hinzu. Die Zeile und die Spalte werden
durch die Werte an den Indizes zwei und drei der Liste
der Zeichenkettensegmente bestimmt. Gehen wir also zu Variablen
und verwenden für jede Eingabe
des
Create Clone-Blocks ein Blockelement . Verwenden wir Element zwei für die Zeileneingabe und Element
drei für die Spalte. Das sieht allerdings ein bisschen chaotisch aus. Also werden wir einige Variablen erstellen
, die die aktuelle Zeile
und Spalte enthalten , und sie hier
anstelle der Elementblöcke verwenden Um das zu tun, erstellen wir
eine neue Variable, die wir row nennen und sie nur für dieses Sprite
erstellen können Dann erstellen wir eine weitere, nennen sie Spalte und machen
sie auch nur für dieses Sprite Und lassen Sie uns weitermachen und
die Zeilen- und Spaltenvariablen ausblenden. Fügen wir nun zwei
Blöcke direkt über dem Block
Create Clone hinzu. Lassen Sie uns mithilfe des Blocks hier Zeile auf Punkt
zwei
der Liste setzen und mit diesem Block die
Spalte auf Punkt drei
setzen. Dann können wir
die Zeilen- und Spaltenvariablen
für die Blockeingaben zum Erstellen von
Clone verwenden die Zeilen- und Spaltenvariablen . Das sieht etwas
übersichtlicher aus und wir
werden auch die Zeilen- und
Spaltenvariablen etwas später wieder verwenden. Jetzt schnappen wir uns den
definierten Create Clone Block und verschieben ihn
irgendwohin hier drüben. Und hier verwenden wir
die Zeilen- und Spalteneingaben, um die Sprites zu positionieren, und erstellen
dann einen Klon Jeder Teil eines Levels nimmt
jedoch tatsächlich die gesamte Stufe Das bedeutet, dass
je nachdem, wo ein Teil
innerhalb des Ebenenrasters befindet, seine X- und Y-Positionen irgendwo
in der Größenordnung von Tausenden liegen
können. Die X- und Y-Positionen
eines Sprites
sind jedoch so ziemlich
auf die Grenzen der Bühne beschränkt auf die Grenzen der Bühne Das bedeutet, dass wir Variablen verwenden müssen
, um die
Position der einzelnen Levelteile im Spiel zu halten, was wir
ihre Weltposition nennen können Lassen Sie uns also zunächst
ein paar neue Variablen erstellen. Nennen wir das X
und stellen sicher, dass wir nur
nach diesem Sprite suchen da jeder Klon
eindeutige X- und Y-Werte haben wird Dann lassen Sie uns einen weiteren erstellen, ihn Y
nennen und ihn erneut nur für dieses Sprite
erstellen Und wir können jetzt weitermachen und alle Variablen
verstecken. Okay, um die
Weltausstellung einer Ebene von Teilen zu erhalten, können
wir ihren Spaltenindex nehmen
und ihn mit 480 multiplizieren, was der Breite der Bühne entspricht In ähnlicher Weise können
wir, um die Y-Position der
Welt zu ermitteln, den Zeilenindex nehmen
und ihn mit 360 multiplizieren, was der Höhe
der Bühne entspricht Lassen Sie uns also dem Crit Clone-Skript zwei Blöcke
hinzufügen. Dann gehen wir zu den Operatoren und platzieren in jedem einen
Multiplikationsblock Setzen wir nun X auf die
Spalteneingaben multipliziert mit 480 und Y auf die
Zeileneingaben multipliziert mit 360 Jetzt müssen wir nur noch den
Klon erstellen. Gehen wir zu Control und fügen Block
zum Erstellen eines
Klons von mir selbst ein. Zurück im
Generate-Skript, nachdem wir einen Klon
mit dem aktuellen Kostüm erstellt
haben, müssen wir mit dem
nächsten Kostüm fortfahren. Gehen wir also zunächst
zu Looks und fügen direkt
unter dem Block Create Clone
einen nächsten Kostümblock hinzu. Außerdem müssen wir
den Kostümnamen erneut aufteilen, also verwenden wir hier ein Duplikat
des geteilten Zeichenkettenblocks. Und das sollte jetzt einen Klon
erstellen, der jedes
der Kostüme für
das aktuelle Level verwendet. Wenn wir jedoch versuchen,
das Spiel jetzt auszuführen, werden alle
Klone in der Phase zusammengefasst Das liegt daran, dass
wir im
Create Clone Script zwar
die Weltposition eines Klones festlegen, aber nicht seine tatsächliche
Position auf der Bühne Um das Problem zu beheben, gehen
wir vor dem Block
Create Clone of myself zu Motion über und fügen
einen Go to XY-Block Gehen wir dann zu
Variablen und verwenden die X- und Y-Variablen
als Eingaben. Dadurch wird nur der untere linke Teil des Levels sichtbar
sein. Damit das
wirklich nützlich ist, brauchen
wir eine Möglichkeit, den Spieler
innerhalb des Levels zu bewegen und herauszufinden, welcher
Teil oder welche Teile eines Levels zu
einem bestimmten
Zeitpunkt sichtbar sein sollten. Das werden wir in
der nächsten Lektion tun.
81. Scrollen eines Levels: Wenn sich der Spieler im Level
bewegt, bewegt oder scrollt die Level-Sprite-Klone in
die entgegengesetzte Richtung. Dadurch wird es so aussehen, als ob eine Kamera
den Spieler ständig verfolgt Um das Scrollen zu erledigen, gehen
wir zum Code
für den Hintergrund über Zunächst
müssen wir die aktuelle Scroll-Position
in einigen globalen Variablen verfolgen aktuelle Scroll-Position
in einigen globalen Variablen Lassen Sie uns ein
paar neue erstellen. Nennen wir den
ersten ScrollX. Wir könnten es auch Kamera X nennen, da es die
Mittelposition der Kamera sein wird, aber ich bleibe bei Scroll X. In ähnlicher Weise erstellen
wir für die Y-Position
eine weitere Position, die wir entweder Scroll
Y oder Kamera Y
nennen können . Jetzt wird der Fokus
der Kamera größtenteils die Position des Spielers sein Manchmal fokussieren wir
die Kamera jedoch auf andere Punkte Zum Beispiel, wenn
wir dem Spieler zeigen , dass der Levelausgang aktiv
geworden ist. Lassen Sie uns dafür also auch ein
paar Variablen erstellen. Wir können den
ersten Fokus X und den zweiten Fokus Y nennen. In
Ordnung, und die
Startposition des Scrolllaufs Ordnung, und die
Startposition des Scrolllaufs kann
je nach Ebene unterschiedlich sein Aber vorerst werden wir es auf
00 initialisieren. Im Green Flag-Skript setzen
wir also zwei Blöcke
vor die Spielschleife und setzen sowohl Scroll
X als auch Scroll Y auf Null Als Nächstes werden
wir
das eigentliche Scrollen während der dritten
und letzten Aktualisierungsnachricht durchführen Dadurch können die Dinge
, die während
des ersten und zweiten
Updates stattfinden , wie Animationen und Kollisionserkennung, geschehen,
bevor wir durch das Level scrollen Der Hintergrund
überträgt zwar die Nachricht von
Update 3, kann die Nachricht aber auch
empfangen. Lasst uns zu den Ereignissen gehen und einen
Block W, den ich erhalte, einbauen, und lasst uns Update drei empfangen. Und hier führen wir einfach einen neuen benutzerdefinierten Block aus, den
wir zum Scrollen verwenden werden Lass uns zu Mblocks gehen
und einen neuen erstellen. Nennen wir es Scroll
und klicken wir auf Okay. Lassen Sie uns nun einen Scroll-Block
hinzufügen , wenn ich Update drei erhalte, und verschieben wir den definierten
Scroll-Block hier nach unten. Wir werden später ein paar zusätzliche Dinge
mit dem Scrollen machen. Aber vorerst werden wir einfach dafür sorgen, dass die Scroll-Position
dieselbe bleibt wie die Fokusposition Gehen wir dazu zu Variablen und fügen zwei Sets von zwei Blöcken hinzu. Und verwenden wir sie,
um Scroll X auf Fokus X und Scroll Y auf Fokus Y zu
setzen. Jetzt müssen wir tatsächlich den Fokus X und den Fokus Y setzen. Wie ich bereits erwähnt habe , wird
dies größtenteils die des Spielers
sein Gehen wir also zum Code
für das Sprite des Spielers über. Im Moment behalten
wir jedoch nicht Überblick über die
Weltposition des Spielers innerhalb des Levels Immer wenn wir das Sprite bewegen, ändern
wir nur seine tatsächliche Position
oder die X- und Y-Position der Stufe , was auf die
Grenzen der Stufe beschränkt Wie wir bei den
Level-Sprites gesehen haben, kann die Weltposition
eines Objekts um einiges
höher sein als die maximalen X- und
Y-Positionen der Bühne Und wie bei
den Level-Sprites werden
wir zwei neue lokale
X- und Y-Variablen verwenden, werden
wir zwei neue lokale
X- und Y-Variablen verwenden Weltposition des
Spielers im Auge zu behalten Lassen Sie uns eine neue Variable erstellen. Nennen Sie es X und machen Sie es nur
für dieses Sprite. Dann lassen Sie uns ein anderes erstellen, es Y
nennen und
es auch nur für dieses Sprite erstellen Die Startwerte für X und Y für das Spieler-Sprite werden irgendwann
je nach Level unterschiedlich sein Aber im Moment denke ich, dass so
etwas wie minus 150 für X und
Null für Y gut sein sollte Fügen wir also dem Green Flag-Skript zwei Blöcke
hinzu. Und setzen wir X auf
minus 150 und y20. Als Nächstes müssen
wir sowohl im Skript „
Horizontal
bewegen “ als auch im Skript „Vertikal verschieben direkt die X- und Y-Variablen ändern,
anstatt die
X- und Y-Positionen des Sprites “
die X- und Y-Variablen ändern,
anstatt die
X- und Y-Positionen des Sprites direkt zu ändern also am Anfang des Skripts „
Horizontal verschieben Lassen Sie uns also am Anfang des Skripts „
Horizontal verschieben“ eine
Änderung für jeden Block vornehmen und X
durch die Dx-Eingabe ändern Und jetzt können wir den
blauen X-Block zur Änderung hier loswerden. In ähnlicher Weise fügen
wir im Block „Zehn
wiederholen “ eine
blockweise Änderung an den Anfang, ändern die Y-Variable um eins und entfernen den
blauen Y-Block zur Änderung. Lassen Sie uns nun
diese Änderung Y durch einen Block mit
negativen zehn durch
eine variable Version ersetzen . Machen Sie dann dasselbe für diese
beiden Change-X-Blöcke. also für den ersten Lassen Sie uns also für den ersten die
X-Variable um einen negativen Wert ändern. Und für die zweite ändern
wir X um eins. Gehen wir nun zu den Skripten zum vertikalen
Verschieben über. Zuerst fügen wir oben eine Änderung pro
Block hinzu,
ändern die Y-Variable die DY-Eingabe und entfernen
den blauen Y-Block zur Änderung. Dann ersetzen Sie auch die beiden
Y-Änderungsblöcke hier unten. Ändern Sie die Y-Variable für die erste durch
negative Eins. Und ändere es
für die zweite um eins. Jetzt, nachdem
wir das getan haben, ändern wir
die Position des
Sprites auf der Bühne nicht mehr die Position des
Sprites auf der Bühne Das bedeutet, dass die
Kollisionserkennungen wir in diesen
Skripten durchführen, nicht mehr funktionieren Um das zu beheben, müssen wir Weltposition des Sprites
in seine Bühnenposition
übersetzen und Sprite
tatsächlich auf der Bühne neu positionieren Um die
Bühnenposition der Sprites zu ermitteln, können
wir die
aktuelle Scrollposition von der Weltposition der Sprites subtrahieren von Dadurch erhalten wir immer Werte , die innerhalb der
Grenzen der Stufe liegen Und weil wir diese
Berechnung ziemlich oft
durchführen werden , werden
wir sie in
einem benutzerdefinierten Block durchführen Gehen wir also zu Mblock
und erstellen einen neuen. Nennen wir es eine Position
und klicken wir auf Okay. Lass uns weitermachen und
den definierten Block
irgendwo hierher bringen . Ich lege meins direkt unter
das Animationsskript. Um die Weltposition
in die Bühnenposition zu übersetzen, gehen
wir zunächst zur Bewegung über und fügen einen
Go-to-XY-Block hinzu Gehen wir dann zu den
Operatoren und verwenden für
jede der Eingaben
einen Subtraktionsblock Gehen wir nun zu Variablen. Und für die Position wollen
wir die
X-Variable minus Scroll-X verwenden. Und für Y
machen wir die Y-Variable
minus Scroll-Y . Und das war's Egal, wo sich der
Spieler im Level befindet,
wir können das nutzen, um
seine Weltposition
in eine Bühnenposition umzurechnen seine Weltposition
in eine Bühnenposition Und
das müssen wir tatsächlich bei
jeder Iteration der Spielschleife mehrmals tun das müssen wir tatsächlich bei
jeder Iteration der Spielschleife mehrmals jeder Iteration der Spielschleife Zunächst müssen wir dies zu Beginn
der Schleife tun, wenn wir
die Update-One-Nachricht erhalten Dadurch wird sichergestellt
, dass das Sprite
richtig positioniert ist , bevor
wir es bewegen Gehen wir also zu Meine Blöcke und fügen Position am unteren Rand
des Skripts W I
receive Update One einen Block zum Anpassen der Als Nächstes müssen wir das Sprite am Ende
der Spielschleife
positionieren ,
nachdem das Scrollen abgeschlossen ist Das passiert während der Nachricht von
Update 3. Wir bearbeiten derzeit nicht
die Nachricht von Update drei Gehen wir
also zu den Ereignissen
, geben einen neuen
Block ein und erhalten wir Update drei. Alles, was wir hier tun
müssen, ist, zu „
Meine Blöcke“ zu gehen und einen Block „Position
anpassen“ einzufügen. Endlich wieder bei den Skripten „
Horizontal bewegen “ und „
Vertikal verschieben“. Wir müssen die Position anpassen bevor wir überprüfen, ob
wir einen Festkörper berühren. Lassen Sie uns also in beiden Skripten direkt
über jedem Punkt, der feste Blöcke
berührt, einen Block „
Position anpassen“ hinzufügen über jedem Punkt, der feste Blöcke
berührt . Wir haben drei und bewegen horizontal
und zwei bewegen uns vertikal. Ordnung. Nun,
noch eine Sache, die wir im Spieler-Sprite-Code machen
müssen, und wir sind ursprünglich
hergekommen, um den Fokus
der Kamera auf die
Weltenposition der Spieler-Sprites während jeder
Iteration des Game-Loops
zu legen Fokus
der Kamera auf die
Weltenposition der Spieler-Sprites während jeder
Iteration des Game-Loops
zu Weltenposition der Spieler-Sprites während jeder
Iteration des Wir wollen
das ganz unten im Skript für Update 2 machen , nachdem
wir mit
dem Verschieben fertig sind Gehen wir dazu
zu Variablen und fügen
am Ende der Skripte zwei Blöcke hinzu Verwenden wir sie, um den Fokus X auf
die X-Variable und den Fokus
Y auf die Y-Variable zu setzen . Okay, wir sind fast bereit
, alles zu testen. Aber zuerst
müssen wir auch
die Level-Sprite-Klone
mithilfe der Scroll-Position positionieren die Level-Sprite-Klone
mithilfe der Scroll-Position Dafür können wir tatsächlich dasselbe Skript zum Anpassen
der Position verwenden dasselbe Skript zum Anpassen
der Position wir gerade
für
das Spieler-Sprite erstellt Nehmen wir also den definierten Block zum
Anpassen der Position und ziehen ihn auf
die Level-Sprites Gehen wir nun zum
Level-Sprite-Code. Wie beim Spieler Sprite wollen
wir
die Position beim
ersten und letzten Update anpassen die Position beim
ersten und letzten Gehen wir also zu den Events und bringen zwei rein, wenn
ich Blöcke erhalte Lasst uns Update
eins und Update drei erhalten. Gehen wir dann zu „Meine Blöcke“ und fügen jedem Block einen
Block zum Anpassen der Position hinzu. Wir können jetzt auch den Block „Gehe zu
XY“ im Crit
Clone-Skript entfernen jetzt auch den Block „Gehe zu
XY“ im Crit
Clone-Skript In Ordnung, ich denke, wir sind
bereit, es zu versuchen. Nun, es funktioniert irgendwie, aber es ist ziemlich nervös Das passiert, weil die
Schwerkraft dazu führt, dass sich die
Sprites-Y-Variable des Spielers ständig um sehr kleine Beträge verschiebt Dies wirkt sich auf den Fokus Y aus, der sich auf Scroll Y auswirkt, wodurch die Sprites
auf und ab springen Um das zu beheben,
beenden wir das Spiel und gehen wir
zum Hintergrundcode Im Scroll-Skript können
wir, anstatt
die Bildlaufposition festzulegen die exakten Werte
von Fokus X und Fokus Y zu verwenden, anstatt
die Bildlaufposition festzulegen und die exakten Werte
von Fokus X und Fokus Y zu verwenden, die gerundeten Werte verwenden. Gehen wir dazu zu Operatoren und verwenden
runde Blöcke,
um sowohl den
Fokusblock X als auch den Fokusblock Y zu umschließen. Wenn wir das Spiel jetzt ausführen, schwanken
die Y-Werte und die
Y-Fokalwerte weiterhin, aber jetzt nicht mehr beim
Scroll-Y-Wert, sodass die Sprites nicht Und jetzt können wir uns im gesamten
Level bewegen. Ziemlich genial. Es gibt ein paar Verbesserungen
, die wir vornehmen können jedoch
ein paar Verbesserungen
, die wir vornehmen können, und das werden wir in der nächsten Lektion
tun.
82. Verbessere das Scrollen: Nun, da wir in der Lage sind, durch das Level zu
scrollen, wollen wir ein paar
Verbesserungen am Scrollen vornehmen Erstens sind wir derzeit in der Lage, über die
Grenzen des Levels hinaus zu scrollen, und wenn wir von der Seite springen, fallen
wir einfach für immer weiter Gehen wir zu den Kostümen
für das Level Sprite, das erste Kostüm der Stufe
eins hier, Level 100, befindet sich unten links
im Levelraster Wir wollen verhindern, dass
die Kamera über die linke
Seite hinaus oder unter die Unterseite Das ist eigentlich ziemlich einfach
, da wir lediglich verhindern
müssen , dass Scroll X und Scroll
Y negativ werden. Gehen wir dazu zum
Code für den Hintergrund. im Scroll-Skript Gehen
wir im Scroll-Skript zur Steuerung und
fügen zwei ITN-Blöcke ein, wobei einer direkt
unter dem anderen den Zustand der einzelnen Blöcke zu ermitteln, gehen
wir zu den Operatoren und fügen
einige weniger als Blöcke hinzu Gehen wir dann zu Variablen
und verwenden eine, um zu überprüfen, ob
Scroll X kleiner als Null ist, und die andere, um zu überprüfen, ob
Scroll Y kleiner als Null ist. Dann fügen wir jedem einen Satz hinzu, der
blockiert werden soll, wenn dann blockiert wird. Und für den ersten setzen
wir Scroll X auf Null und verwenden den anderen, um Scroll Y auf Null zu
setzen. Dadurch sollte verhindert werden, dass
die Kamera über die linke Seite des
Levels
hinausgeht oder unter den Boden fällt. Wir können aber trotzdem
von der linken Seite herunterfallen , was wir
ebenfalls reparieren müssen. Aber zuerst, wenn wir das Spiel
neu starten, können
wir immer noch über die
rechte Seite des Levels hinausgehen. Wenn wir uns
die
Level-Sprite-Kostüme noch einmal ansehen , hat
das Level-Eins-Raster
insgesamt vier Kostüme, und Level eins, 03,
befindet sich hier unten rechts Wir wollen verhindern, dass die Kamera hier
an der rechten Seite vorbeifährt Die Ebene hat auch
insgesamt zwei Reihen, wobei sich die Stufen
eins , eins, drei hier
oben rechts befinden. Wir wollen auch verhindern, dass der Spieler über die Spitze
hinausgeht. Um dies zu tun, müssen
wir die Anzahl
der Zeilen und Spalten
verfolgen ,
die das aktuelle Level hat. Gehen wir dazu zum
Code für das Level-Sprite. Im Generierungsskript können
wir
die Gesamtzahl der Zeilen
und Spalten in der Ebene verfolgen und
dann anhand der Zahlen
die maximal zulässigen
Scroll-X- und Scroll-Y-Werte berechnen die maximal zulässigen
Scroll-X- und Scroll-Y-Werte Also müssen wir zuerst einige neue Variablen
erstellen. Nennen wir die erste maximale Zeile und machen sie nur für
dieses Sprite Dann lassen Sie uns eine weitere erstellen, sie Max-Spalte
nennen Und mach es auch nur für
diesen Sprite. Lassen Sie uns nun ein paar
weitere für die maximalen
Scroll-Werte erstellen weitere für die maximalen
Scroll-Werte Beide müssen globale Variablen
sein. Nennen wir die
erste Max Scroll X. Und für die zweite nennen
wir sie nicht
überraschend Max Scroll Y. Okay, jetzt, ganz oben
im Generate-Skript, werden
wir all
diese neuen Variablen auf Null initialisieren Lassen Sie uns also
vier Blöcke mit zwei Sätzen einbauen. Stellen wir nun Max Row 20, Max Column 20, Max Scroll x20 und Max Scroll Y20 Als nächstes, in der zweiten,
wiederholen, bis der Block blockiert ist. Gehen wir zu Control und fügen zwei
Wenn-Dann-Blöcke unter
allen anderen Blöcken hinzu, einen direkt nach dem anderen. Für den Zustand der einzelnen gehen
wir zu den Operatoren und
fügen einige Blöcke hinzu, die
größer als sind. Gehen wir nun zu Variablen und überprüfen für die erste, ob die Zeilenvariable größer als die
maximale Zeilenvariable
ist. Die Zeilenvariable enthält den Zeilenindex für
das aktuelle Kostüm. In ähnlicher Weise prüfen
wir für den
anderen Block, ob die
aktuelle Spalte größer als die maximale Spalte
ist. Nun fügen wir jedem Wenn-Dann-Block einen Satz
zum Blockieren hinzu. Für den ersten Fall setzen wir
Max row auf die Zeilenvariable. Setzen Sie dann Max column auf
die Spaltenvariable. Wenn wir damit fertig sind, alle Kostüme
für das aktuelle Level
geladen zu haben, gibt uns
die Zeile
Max den höchsten Zeilenindex und die Spalte Max
den höchsten Spaltenindex. Wir können das überprüfen, indem
wir das Spiel starten. Jetzt entspricht die maximale Zeile eins und die
maximale Spalte entspricht drei. Jetzt verwenden wir die Werte Max row und Max column, um Max Scroll
X und Max Scroll Y zu berechnen, und zwar nach der
zweiten Wiederholung bis Block Fügen wir am Ende
der Skripts einen Satz von zwei Blöcken hinzu. Und für jeden gehen
wir zu den Operatoren und
fügen einige
Multiplikationsblöcke hinzu Für den ersten Satz auf Block setzen
wir Max Scroll X. Gehen wir
nun zu Variablen und setzen den Wert auf
Max. Spalte mal 480, was der Breite der Bühne entspricht In ähnlicher Weise setzen wir Max
Scroll Y auf Max row times 360, was der Höhe
der Bühne entspricht. Jetzt müssen wir zum Scroll-Skript im
Hintergrundcode zurückkehren und die
Max-Scroll-Werte verwenden. Gehen wir zunächst zur Steuerung
und fügen zwei
weitere If-Then-Blöcke hinzu. Gehen wir dann zu den Operatoren und verwenden für jeden einen
Block größer als. Gehen wir nun zu Variablen, und für den ersten Fall, wenn dann Block, prüfen
wir, ob Scroll x
größer als Max Scroll X ist. Falls ja, bringen wir einen Satz zum Blockieren und setzen Scroll
x auf Max Scroll X. Ähnlich prüfen
wir für den anderen, ob Scroll Y
größer als Max Scroll Y ist. Und wenn ja, setzen wir
ScrollY auf Max Scroll Y. Die Variablenanzeigen werden
jetzt ziemlich verrückt, also lass uns weitermachen und sie verstecken. Und die für den
späteren Sprite auch. Und jetzt versuchen wir es mal. Wenn wir jetzt bis zur
rechten Seite des Levels
gehen, fährt
die Kamera nicht weiter. Sorgen wir dafür, dass das auch passiert, wenn wir an die Spitze
des Levels gehen. Fantastisch. Gut, jetzt lösen wir das Problem, dass wir am Rand eines Levels
fallen können Rand eines Levels
fallen Gehen wir dazu zum
Code für die Spieler-Sprites. Am Ende des Skripts „Horizontal
bewegen“ wollen
wir nun die Bewegung des
Spielers nach links einschränken. Der linke Rand der Bühne
befindet sich bei minus 240. Ich denke also, ein Limit von etwa
minus 235 sollte gut sein. Okay, gehen wir also zur Steuerung und fügen am Ende
des Skripts einen If-The-Block hinzu. Für die Bedingung gehen wir zu den Operatoren und geben einen
Block mit weniger als ein. Gehen wir nun zu Variablen
und prüfen wir, ob die X-Variable kleiner als minus 235
ist. Wenn ja, lassen Sie uns einen Satz zum Blockieren hinzufügen und X auf minus 235 setzen. Lassen Sie uns auch
die horizontale Bewegung vollständig stoppen,
indem wir einen weiteren Satz zum Blockieren hinzufügen und die
Geschwindigkeit x auf Null setzen. Schließlich müssen wir
das auf die tatsächliche
Position
der Sprites auf der Bühne anwenden tatsächliche
Position
der Sprites auf der Bühne Gehen wir also zu M-Blöcken
und fügen einen Block zum Anpassen der
Position ein Wenn wir das Spiel jetzt ausführen, können
wir
die linke Seite des Levels nicht mehr verlassen. Jetzt müssen wir das auch für die rechte Seite tun
. Gehen wir zunächst zu Variablen
und lassen Sie uns erneut die Max
Scroll Lex-Variable
und die Player-Sprites
X-Variable anzeigen erneut die Max
Scroll Lex-Variable
und die Player-Sprites
X-Variable Wenn wir uns der rechten
Seite des Levels nähern, können
wir sehen, dass der Wert
der Sprites
X-Variablen des Spielers tatsächlich
etwas höher ist als der Wert für
Max Scroll x. Das liegt daran, dass die
Scroll-Position der
Mitte der Kamera
entspricht Der tatsächliche rechte
Rand der Ebene
befindet sich also beim maximalen
Scroll-Lex-Wert plus weiteren 240, was der halben Bühnenbreite entspricht. Und ähnlich wie wir
es mit der linken Seite gemacht haben, können
wir davon weitere
fünf subtrahieren, sodass der Spieler nur Max Scroll X plus 235
ausgesetzt ist Max Scroll X plus 235
ausgesetzt Okay, um all das zu tun, lassen Sie uns zuerst
den gesamten ITN-Block
hier duplizieren und ihn unten platzieren Aber lassen Sie uns den Block
„Weniger als“ loswerden. Gehen Sie dann zu Operatoren und ersetzen Sie ihn durch einen Block, der
größer als ist. Lassen Sie uns einen zusätzlichen Block auf der rechten Seite des
Größer-als-Blocks platzieren und hier auch einen
innerhalb des Satz-X-Blocks platzieren. Gehen wir nun zu Variablen
und prüfen wir, ob X größer
als Max Scroll X plus 235 ist . Wenn ja, setzen wir X auf
Max Scroll X plus 235. Und jetzt können wir nicht mehr
über die rechte
Seite des Levels hinausgehen . Perfekt. Jetzt können wir
die Variablen wieder verstecken. Okay, und im Moment befindet sich
die Kamera in unserem Spiel immer direkt
über dem Spieler. Aber bei Plattformen oder Spielen ist
es üblich, dass die Kamera dem Spieler
reibungslos folgt, wenn er sich
bewegt , und nach und nach über dem Spieler
zu liegen kommt ,
wenn er sich nicht mehr bewegt. Um dies in unserem Spiel zu tun, gehen
wir zum
Scroll-Skript im Hintergrundcode. Anstatt
die Scrollposition sofort auf
die Fokusposition zu setzen , können
wir die Scroll-X
- und Scroll-Y-Werte ändern, indem einen Bruchteil des
Abstands zwischen ihnen und den entsprechenden
Fokuspunktwerten verwenden. Dies führt dazu
, dass die Kamera
über mehrere Bilder hinweg allmählich am Fokuspunkt zum Stillstand kommt. Um das zu tun, bringen wir zwei Byblocks mit
variabler Änderung
in einen leeren Raum Und lassen Sie uns den
ersten verwenden, um
Scroll X zu ändern und den zweiten
, um Scroll Y zu ändern. Gehen wir
nun zu Operatoren
und fügen zu jedem Operator einen runden
Block Fügen Sie jedem runden Block einen
Teilungsblock hinzu. Und lege einen Subtraktionsblock auf die linke Seite
jedes Teilungsblocks Lassen Sie uns nun den fokalen X-Block hier in den ersten Eingang
des ersten
Subtraktionsblocks und
den fokalen Y-Block in
den ersten Eingang des
anderen Subtraktionsblocks verschieben den fokalen Y-Block in den ersten Eingang des
anderen Subtraktionsblocks Dann gehen wir zu Variablen, und wir wollen focal x minus
scrollX und focal
Y minus scroll Y machen . Wir können dann die beiden
gesetzten Blöcke durch
die neue Änderung Byblocks ersetzen . Nun, für die rechten Seiten
der Divisionsblöcke gilt: Je höher
die Zahl, die wir verwenden, desto langsamer kommt die Kamera an den Brennpunkten
zum Stillstand. Lassen Sie uns zunächst für jeden von ihnen eine
Zwei verwenden und es ausprobieren Das ist nicht sehr auffällig,
also versuchen wir es mit vier. Das sieht ziemlich gut aus für X, aber für Y werde
ich es wohl mit acht versuchen. Da haben wir's. Viel besser. Alles klar, und noch eine
letzte Sache, die Sie bezüglich
des Level-Sprites
beachten sollten , ist, wenn wir uns seine
Kostüme noch einmal ansehen, jedes der
Hauptlevel-Kostüme hat diese unsichtbaren Rechtecke
, die sich über und unter der Leinwand befinden und
breiter als die Leinwand sind Diese ermöglichen es dem Sprite
, sich gerade so weit von der Bühne
zu entfernen , dass es für uns
nicht sichtbar ist Wenn wir diese entfernen würden, könnten wir kleine Teile der Level-Sprite-Klone an
den Rändern
der Bühne
sehen Level-Sprite-Klone an
den Rändern
der Bühne Wenn du dich also dazu entschließt, deine eigenen
Level für das Spiel zu erstellen, achte
nur darauf, dass du
diese Rechtecke auch zu allen Sprite-Kostümen für
neue Levels hinzufügst diese Rechtecke auch zu allen Sprite-Kostümen für
neue Levels Okay, nachdem all das geklärt ist, werden
wir
als Nächstes etwas
dagegen tun,
dass wir
am Ende der Stufe stecken bleiben ,
wenn wir vom Level fallen, und es
so gestalten, dass wir zu
Testzwecken einfach zwischen den Levels
wechseln können Testzwecken einfach zwischen den Levels
wechseln
83. Einige Fehler beheben: Bevor wir weitermachen, gibt es ein paar Bugs, um die wir uns kümmern
sollten. Erstens haben Sie
diesen vielleicht schon selbst entdeckt. Wenn wir zu einem hohen Punkt im
Level gehen und dann
auf den Boden fallen, gehen
wir direkt durch den Boden. Um zu sehen, warum das passiert, gehen
wir in den Code
für das Spieler-Sprite und zeigen uns die
Geschwindigkeitsvariable Y Dann wollen wir
den Wert im Auge behalten , wenn wir wieder
von einem Höhepunkt fallen Wie wir sehen können,
sinkt der Geschwindigkeits-Y-Wert ziemlich schnell und
er sinkt weiter. Dies führt dazu, dass das Sprite des
Spielers so schnell
fällt, dass
es das Level direkt
durchqueren kann ,
bevor das Skript „
Vertikal bewegen “ überhaupt die Möglichkeit hat ,
eine Kollision zu erkennen Um das zu beheben, müssen wir den Geschwindigkeits-Y-Wert
begrenzen. Wir machen das im Skript „
Vertikale Bewegung handle kurz vor dem
Block „Vertikale Bewegung“ hier unten. Gehen wir also zuerst zur Steuerung und bringen einen Wenn-Block
in ein leeres Feld. Für die Bedingung gehen wir zu den Operatoren und geben einen
Block mit weniger als ein. Gehen wir dann zu Variablen
und prüfen wir, ob Geschwindigkeit Y kleiner als minus 20
ist. Wenn ja, lassen Sie uns einen Satz zum Blockieren hinzufügen und die Geschwindigkeit
Y auf minus 20 setzen. Nehmen wir zum Schluss
den Block I
und platzieren ihn direkt über dem Block „Vertikal
bewegen“. Und lass es uns versuchen. Wenn wir jetzt
von einem hohen Punkt fallen, Geschwindigkeit Y nicht unter minus 20 und wir
fallen nicht durch den Boden. Fantastisch. Jetzt können wir
die Geschwindigkeitsvariable Y wieder ausblenden. In Ordnung, der nächste Bug hat mit dem Rutschen auf Pisten
zu tun. Wenn wir hier vom unteren Ende
dieses Abhangs hochspringen und in der Nähe des Gipfels
landen, rutschen wir, obwohl wir anfangen zu rutschen, tatsächlich den Hang hinauf. Das liegt daran, dass SpeedX, wenn
wir die Variable speedX anzeigen, wenn wir nach links springen und
weiterhin
die linke Bewegungstaste gedrückt halten, SpeedX zu einer großen
negativen Zahl wird Und obwohl wir
SpeedX um eine positive Zahl ändern, ändern wir sie, sobald wir anfangen, nach rechts
zu rutschen, sobald wir anfangen, nach rechts
zu rutschen,
sie nicht um
genug, um den Wert für
Geschwindigkeit x positiv zu machen Das führt dazu, dass wir
den Hang hinauf statt hinunter rutschen. Um das zu beheben, kommen wir zum
Slide
on Slope-Skript. Wenn
wir unten in den Slide-Status „
Slope Slide“ wechseln, fügen wir auch einen Satz zum Blockieren hinzu und setzen Speedx auf Null Da
diese Blöcke jedoch auch
ausgeführt werden, wenn wir uns bereits
im Slide-Status „Slope Slide“ befinden, ,
wenn wir das jetzt versuchen wird,
wenn wir das jetzt versuchen, weiterhin Geschwindigkeit x auf Null gesetzt, sodass wir sehr langsam
rutschen Stattdessen
wollen wir Geschwindigkeit X nur dann auf
Null setzen, wenn wir uns gerade nicht
im Zustand Slope Slide befinden. Gehen wir dazu zu Control
und nehmen uns einen I-Dann-Block, und wir können ihn hier tatsächlich
um alle
drei Blöcke wickeln . Gehen wir für die Bedingung zu Operatoren und fügen einen Block und
dann einen Gleichheitsblock ein Gehen wir nun zu Variablen
und überprüfen wir, ob der Status
nicht gleich dem Neigungsrutschen ist Wenn wir es jetzt versuchen, funktioniert das
Sliden
genauso wie zuvor,
aber jetzt führt ein funktioniert das
Sliden
genauso wie zuvor, Sprung
vom Boden
des Hangs nicht dazu, dass
wir den Hang hinaufrutschen. Ordnung, wenn diese
Fehler behoben sind, können
wir die Variable Speed X
wieder verstecken und uns wieder
an den Levels machen.
84. Neustart eines Levels: Wenn wir im Moment vom Level
fallen, wir am
Ende der Stufe stecken Irgendwann
fügen wir etwas Flüssigkeit , die
am Boden jedes Levels entlang fließt Wenn der Spieler
hineinfällt und noch
etwas Lebenspunkte übrig hat, antworten
wir ihm
irgendwo in der Nähe. Aber vorerst
starten wir das Level einfach von Anfang an neu. Um ein Level neu zu starten, müssen
wir
beispielsweise die Variablen der
verschiedenen Sprites
im Spiel zurücksetzen und die Sprites wieder in
ihre Ausgangsposition
bringen Sie uns zunächst mit Lassen Sie uns zunächst mit dem Code
für den Hintergrund Derzeit
starten wir die Spielschleife sobald auf die grüne
Flagge geklickt wird Stattdessen wollen wir zuerst die
Sprites benachrichtigen, wenn wir ein Level
starten, damit sie sich selbst
einrichten
können . Danach starten
wir die Spielschleife Jedes Mal, wenn wir ein Level starten
oder neu starten, senden
wir eine neue Nachricht Und vorerst starten wir
Level eins, wenn auf die
grüne Flagge geklickt wird Lassen Sie uns zunächst
die Spielschleife
vom Skript mit der grünen Flagge trennen vom Skript mit der grünen Flagge Gehen wir dann zu den Ereignissen und fügen wir am Ende des Skripts einen Broadcast-Block am Ende des Skripts Lassen Sie uns eine neue Nachricht senden, die wir Startlevel nennen können. Lex wird die
Start-Level-Nachricht erhalten. Lassen Sie uns also einen Block W eingeben, den ich erhalte und den Startlevel erhalte. Und hier wollen wir
alle globalen Variablen zurücksetzen , die
zu
Beginn eines Levels zurückgesetzt werden müssen . Im Moment besteht das
nur aus den
Scroll-Positionsvariablen. Anstatt also Scroll x und
ScrollY im Skript mit
grüner Flagge auf Null zu
setzen , tun
wir dies in den
Start-Level-Skripten Als Nächstes müssen wir die
Sprites darüber informieren, dass es an der Zeit ist,
sich selbst einzurichten, und das
tun wir, indem wir eine weitere Nachricht senden Aber dieses Mal wollen wir
einen Broadcast- und Warteblock verwenden. Dadurch
wartet der
Rest des Skripts, bis sich alle Sprites selbst eingerichtet
haben Das ist wichtig, weil
wir wollen, dass die Sprites vollständig einsatzbereit sind,
bevor wir den Spiel-Loop starten Okay, lass uns eine
neue Nachricht namens Setup senden. Schließlich können wir
den Game-Loop
am Ende des Skripts anhängen . Als Nächstes erhalten wir die
Setup-Nachricht innerhalb Players und
der Level-Sprites und bereiten sie darauf vor
, das Level zu starten Fangen wir mit
den Spieler-Sprites an. Lassen Sie uns zunächst ein Block- und
Empfangs-Setup hinzufügen Und hier wollen wir
alle
Spieler-Sprite-Variablen festlegen , die sich
wahrscheinlich ändern werden, wenn wir ein Level
durchgespielt haben Im Grunde genommen sind das
alle Variablen , die wir im
Green Flag-Skript setzen, mit Ausnahme von Beschleunigung
und Sprungkraft, die immer gleich bleiben Wir können also die
eingestellte Beschleunigung beibehalten und Sprungkraftblöcke
im Skript mit grüner Flagge setzen. Aber lassen Sie uns alle anderen
in
das Setup-Skript verschieben , wenn ich
erhalte. Und das ist vorerst alles, was wir für den
Spieler-Sprite
tun Gehen wir also zu
den Level-Sprites über. Lassen Sie uns noch einmal einen Block W I
receive einbauen und
die Setup-Nachricht erhalten Und hier wollen wir das
Generierungsskript ausführen, sodass wir Klone mit
den richtigen Kostümen
für das aktuelle Level erstellen den richtigen Kostümen
für das aktuelle Level Wenn wir jedoch
ein Level neu starten oder zum nächsten Level übergehen, werden
wir bereits einige
Level-Sprite-Klone
auf der Bühne haben Bevor wir das Level generieren, wollen
wir also alle vorhandenen Klone loswerden Gehen wir dazu
zu Control und fügen Setup-Skript den Block Delete This Clone
hinzu Wenn es sich bei dem Sprite, der die
Nachricht
empfängt, um einen Klon
handelt, wird dieser gelöscht Aber wenn es das Sprite der
Originalstufe ist, ignoriert
es einfach den Block „Diesen Klon
löschen Wenn das Sprite also diesen Block
überwindet, wissen
wir, dass es sich um das
Original-Sprite handelt und nicht Jetzt können wir
den Generate-Block
aus dem Skript mit der grünen Flagge
in das Setup-Skript verschieben aus dem Skript mit der grünen Flagge
in das Setup-Skript Tatsächlich können wir jedoch nichts
an den unteren Rand
eines Blocks zum Löschen dieses Klones anhängen . Das liegt daran, dass
das Sprite, wenn es sich um einen Klon handelt
und
es gelöscht wird, keine Blöcke mehr ausführen kann Wir benötigen also eine andere Methode, um
festzustellen, ob das
Sprite ein Klon ist oder Wenn wir uns die Kostüme ansehen, ist
das eigentlich der Hauptgrund, warum ich ein Blink-Kostüm zur Verfügung gestellt habe, und wir können sehen, dass viele
der anderen Sprites auch ein Blink-Kostüm
haben Wenn wir das leere Kostüm nur
für das Original-Sprite verwenden, können wir
jedes Mal, wenn wir überprüfen müssen, ob
ein Sprite das Original ist, einfach überprüfen, ob es Um dies für das Level-Sprite zu tun, kehren
wir zum Code zurück Dann lass uns nach Los gehen, um den Kostümblock zum grünen Flaggenskript zu
wechseln und zum leeren Kostüm zu wechseln Und für den Fall,
dass wir den Sprite versehentlich verstecken, bringen
wir auch noch einen Showblock rein Jetzt führen
wir im Setup-Skript den Block „Diesen Klon
löschen“ nur aus wenn das Sprite das leere
Kostüm nicht verwendet Gehen wir also zu Control und legen einen IN-Block um den Block „Diesen Klon
löschen Gehen wir für die Bedingung zu den Operatoren und fügen einen Block hinzu. Fügen Sie dann einen Equals-Block ein. Gehen wir jetzt zu Looks
und überprüfen, ob
der Kostümname nicht leer
ist Das bedeutet, dass das Sprite ein
Klon ist, also löschen wir es. Andernfalls können wir
den Generate-Block ausführen. Da
das Generate-Skript jedoch das Kostüm
des ursprünglichen Sprites
ändert, das leere Kostüm nicht verwendet,
wenn das Original-Sprite die
Einrichtungsnachricht erneut
empfängt die Nach dem Generieren-Block müssen
wir also einen
Switch-Kostümblock und ihn wieder auf
das leere Kostüm umstellen Wenn wir das Spiel jetzt starten, sollten die Dinge immer noch fast
genauso funktionieren wie zuvor, außer dass es ein bisschen glitchy ist bevor der richtige
Levelteil erscheint Das passiert, weil
im Hintergrundcode
die Spielschleife
erst startet, wenn alle Sprites
die Setup-Nachricht
vollständig empfangen haben die Setup-Nachricht
vollständig empfangen Das ist es, was wir wollen,
aber es bedeutet auch, dass die
Level-Sprite-Klone einige Frames lang nicht richtig auf der
Bühne
positioniert Da die Positionierung zuerst erfolgt, wenn sie
die Nachricht „Update One“ erhalten, können wir
also wieder
in den Level-Sprite-Code zurückkehren.
Jedes Mal, wenn wir einen Klon erstellen, können
wir
seine Position auf der Bühne anpassen Um das zu tun, suchen wir uns
einen leeren Raum. Gehen Sie dann zu Control und fügen Sie einen Block hinzu, wenn ich
als Klonblock starte. Gehen wir nun zu MI Blocks und fügen dort einen Block zum Anpassen der
Position hinzu. Wenn wir nun auf die grüne Flagge klicken, sollte
das Level sofort
korrekt angezeigt werden. Um sicherzustellen, dass
das Spieler-Sprite am
Anfang eines Levels richtig
positioniert wird, können
wir auf ähnliche Weise das Spieler-Sprite am
Anfang eines Levels richtig
positioniert wird , zum Setup-Skript W I
receive für
das Spieler-Sprite gehen und einen
Block zum Anpassen der Position
hinzufügen Okay, was wir
jetzt tun können, ist,
dass wir das Level starten, wenn
wir vom Level fallen und den
unteren Rand der Stufe starten, wenn
wir Lassen Sie uns dazu zu den Skripten für
die vertikale Bewegung übergehen. Unten überprüfen wir, ob der Sprite des Spielers auf den Boden
der Stufe
gefallen ist, und wenn ja,
starten wir das Level Gehen wir also zuerst zur Steuerung und fügen einen
If-the-Block ein Für die Bedingung gehen wir zu den Operatoren und geben einen
Block mit weniger als ein. Gehen wir dann zu Variablen
und überprüfen wir, ob Y
kleiner als minus 180 ist. Wenn ja, können wir zu Veranstaltungen gehen, einen Broadcast-Block einbauen und die
Start-Level-Nachricht senden. Wenn wir jetzt das Spiel starten
und ganz nach unten fallen, wird das Level neu gestartet Ordnung, wir können jetzt das aktuelle Level
neu starten, aber im Moment haben
wir keine Möglichkeit
, einfach
zwischen den Levels zu wechseln Wenn wir das wollen, müssen
wir das Spiel beenden, zum Hintergrundcode gehen und den Wert
der Level-Variablen ändern. Offensichtlich kann das beim
Testen ziemlich unpraktisch sein Stattdessen werden
wir es in der nächsten Lektion so einrichten, dass wir
eine Taste auf der Tastatur drücken können , um zwischen den Stufen zu
wechseln
85. Schaltebenen: Um
durch Drücken einer Taste zwischen den Ebenen zu wechseln, stellen wir sicher, dass wir uns im Code für
den Hintergrund befinden,
und fügen wir einen Block hinzu, bei dem die
Win-Taste gedrückt wird. Und dafür benutzen wir die Taste. Normalerweise
erfolgt der Levelwechsel, wenn der Spieler das aktuelle Level
beendet Wenn das passiert, senden
wir eine
Levelabschlussnachricht, die der Hintergrund empfängt und
zum nächsten Level wechselt. Lassen Sie uns also auch die Zielmeldung im
Win-Tasten-Skript indem wir einen
Broadcast-Block einfügen und eine neue Nachricht mit dem
Namen Level beenden senden. Als Nächstes erhalten wir die
Finish-Level-Nachricht. Lassen Sie uns also Folgendes eintragen: Wenn ich Block
erhalte und Level
beenden erhalte wollen wir hier als Erstes
alle anderen
Skripte beenden , um sicherzustellen, dass die Spielschleife nicht
weiterläuft. Gehen wir also zur Steuerung und
fügen einen Stopp-Block ein. Und lassen Sie uns andere
Skripte und Sprites beenden. Als Nächstes erhöhen wir die
Level-Variable um eins. Gehen wir also zu den Variablen, nehmen eine Änderung für jeden Block vor
und ändern wir die Ebene um eins. Danach wollen
wir überprüfen, ob der aktuelle
Levelwert höher ist als die Gesamtzahl
der Level im Spiel. Wenn das passiert, werden
wir später dafür sorgen, dass
das Spiel zu Ende ist, aber vorerst kehren wir
einfach zum ersten Level zurück. Dazu
erstellen wir zunächst eine neue globale Variable. Und nennen wir es letzte Ebene. Und wir müssen es nicht zeigen. Der endgültige Levelwert wird
sich während des Spiels nicht ändern, also setzen wir ihn im
grünen Flaggen-Skript fest. Fügen wir also ein Set hinzu, das
blockiert werden soll , bevor die
Startstufe übertragen wird, und setzen wir die
Endstufe auf vier, und setzen wir die
Endstufe auf vier,
was der Bossstufe entspricht. Jetzt, wenn ich die Endstufe
erhalte, werden
wir überprüfen, ob der
Wert von Level größer
ist als der
Wert von Final Level. Gehen wir also zur Steuerung und fügen einen
Wenn-Dann-Block ein. Für die Bedingung gehen wir zu den Operatoren und fügen
einen Größer-als-Block ein. Gehen wir dann zu
Variablen und prüfen ob das Level höher
als das endgültige Level ist. Wenn ja, lassen Sie uns ein Set zum Blockieren hinzufügen und Level auf eins setzen. Lassen Sie uns abschließend zu den Ereignissen gehen, einen Broadcast-Block
am Ende des Skripts und
der
Broadcast-Startebene
hinzufügen . Gehen wir zu den Variablen und
zeigen die Level-Variable an. Und wenn wir jetzt das
Spiel starten und die Taste drücken, können
wir
alle Level durchgehen. Was wir jetzt tun müssen, ist
eine gute Startposition
für die
Sprites der Spieler in jedem Level festzulegen eine gute Startposition für die
Sprites der Spieler in jedem Level Stellen wir zunächst sicher, dass
wir auf Stufe eins sind. Dann lass uns das Spiel beenden und zum Code für
das Spieler-Sprite gehen Und das
Setup-Skript W I receive, anstatt jedes Mal dieselben X- und
Y-Startwerte zu verwenden , verwenden
wir
je nach aktuellem Level unterschiedliche Werte, und zwar in
einem benutzerdefinierten Block Gehen wir also zu Mblocks
und erstellen einen neuen. Nennen wir es
Startposition festlegen. Und klicken Sie auf Okay. Lassen Sie uns das Set X, Set Y
und das Anpassen von Positionsblöcken
vom Setup-Skript trennen und das Anpassen von Positionsblöcken
vom und sie zur Seite legen und sie
im Skript durch einen festen
Startpositionsblock ersetzen im Skript durch einen festen
Startpositionsblock Lassen Sie uns nun den
Block mit der definierten
Startposition nach unten verschieben . Bei jedem Level starten
wir den Spieler weiterhin etwas über dem Boden
, sodass er auf
das Level fällt . Wir verwenden
für Level eins und zwei eigentlich dieselbe Startposition, aber
für Level drei und vier verwenden wir unterschiedliche. Um das aktuelle Level zu überprüfen, gehen
wir zunächst
zur Steuerung und fügen Skript für die festgelegte
Startposition
einen Block I und dann S hinzu. Gehen wir für die Bedingung zu Operatoren und fügen zuerst
einen OR-Block ein. Dann fügen wir jeder Seite einen
Gleichheitsblock hinzu. Gehen wir nun zu Variablen
und prüfen, ob Level gleich
eins oder Level gleich zwei ist Wenn ja, lassen Sie uns
die Blöcke Set X und Set Y einfügen
, die wir hier gespeichert haben Und lassen Sie uns X auf minus
115 und Y auf minus zehn setzen. Als Nächstes verwenden wir unterschiedliche Werte für die Stufen drei und vier. Gehen wir also zurück
zur Steuerung und fügen Outs-Teil dieses Blocks
einen I then outs-Block hinzu. Für die Bedingung verwenden wir hier
ein Duplikat von einem der
Level-Gleich-Blöcke
und lassen uns überprüfen, ob
Level gleich drei ist Lassen Sie uns nun die Blöcke der Gruppe
X duplizieren und
die Y-Blöcke vom äußeren, wenn dann den Out-Block aus setzen die Y-Blöcke vom äußeren, wenn dann den Out-Block und sie zum
I-Teil dieses Blocks hinzufügen, und lassen Sie uns X auf
minus 165 und Y auf 705 setzen Wenn wir schließlich den
Outs-Teil des inneren IN-Out-Blocks
erreicht haben , befinden
wir uns auf Stufe vier Lassen Sie uns also weitere
Blöcke der Gruppen X und Y hinzufügen und X auf
minus 75 und Y auf 50 setzen. Nach all dem wollen wir Position der Sprites der Spieler auf der Bühne
anpassen Fügen wir also den Block
„Position
anpassen ganz unten
im Skript In Ordnung, ich werde
die Skripte ein wenig neu anpassen. Und wenn wir jetzt das Spiel ausführen
und durch die Level wechseln, können
wir sehen, wie der Sprite des Spielers an verschiedenen
Positionen in den Levels
startet Aber auf Stufe drei beginnen
wir tatsächlich etwas höher als in den anderen Levels Und weil wir
gerade
die Scroll-Position
am Anfang jedes Levels auf 00 setzen , was sich unten
links im Level befindet, muss
es nach oben scrollen, bevor
wir den Spieler sehen können. Um das zu beheben, sollten wir für Level drei
eine andere
Scroll-Startposition verwenden . Um dies im Code
für den Hintergrund zu tun, gehen
wir zunächst zu Meine Blöcke
und erstellen einen neuen. Nennen wir es Set
Start-Scroll und klicken wir auf Okay. Im Start-Level-Skript können
wir die Blöcke
Set Scroll Lex und
Set Scroll Y herausziehen und sie beiseite legen. Und lassen Sie uns oben im
Start-Level-Skript einen
Set-Start-Scroll-Block
hinzufügen . Lassen Sie uns nun den definierten
Start-Scroll - und
Set-Block irgendwo hier unten platzieren. Der Startwert für Scroll
X wird immer Null sein, also können wir weitermachen und
den Block
set scroll x to zero ganz oben in den Skripten hinzufügen . Für Scroll Y verwenden wir Null für alle Stufen
außer Stufe drei. Gehen wir also zur Steuerung und fügen einen
Wenn-Dann-S-Block ein. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob Level gleich drei ist. Wenn wir uns nun
die Level-Sprite-Kostüme
für Stufe drei ansehen , beginnt
der Spieler mit dem Level-Klon, der das
Level-3-zu-Null-Kostüm verwendet Der Zeilenindex dafür ist zwei. Um also den richtigen
Wert für Scroll Y zu erhalten, können
wir 360 nehmen, was der Höhe
der Bühne entspricht, und ihn
mit zwei multiplizieren,
was uns 720 ergibt. Okay, also zurück im
Code für den Hintergrund, lassen Sie uns hier jedem Teil des Ithn-Out-Blocks
einen Y-Set-Scroll-Block hinzufügen hier jedem Teil des Ithn-Out-Blocks
einen Y-Set-Scroll-Block und ihn für
den I-Teil auf 720 und
für die Outs-Teile auf Null setzen . Okay, wenn wir jetzt
das Spiel starten und
zu Level drei wechseln, startet
die Kamera an der
richtigen Position. Hervorragend. Okay, jetzt müssen
wir nur noch ein paar Verbesserungen vornehmen. Wenn wir nach
links schauen und das Level wechseln, schauen wir zunächst nach links. Es wäre besser, wenn wir
immer nach rechts schauen würden. Gehen wir dazu zum
Code für die Spieler-Sprites. im Setup-Skript Gehen
wir im Setup-Skript zu Motion und fügen einen Punkt
in
Richtung 90 Block Jetzt schauen wir zu
Beginn eines Levels immer nach rechts. Wenn wir
als Nächstes vom Level fallen und das Level zum ersten Mal neu gestartet wird, beginnen
wir im Fallzustand, wechseln
kurz in
den Ruhezustand und wechseln
dann zurück in
den Fallzustand, wechseln
dann zurück bevor wir auf dem Boden
landen Das passiert, weil
wir uns, wenn
wir nach unten fallen, immer noch im
Fallzustand befinden, während das Level neu Dann wechseln
wir im Setup-Skript in
den Ruhezustand Und obwohl wir
technisch gesehen fallen, das Update
State-Skript erst, wenn die
Spielschleife beginnt, also bleiben wir für ein paar Frames im
Ruhezustand. Um dieses Problem zu beheben, setzen
wir
den Status im Setup-Skript auf
fallend statt auf inaktiv. Da wir uns in der Luft befinden,
sollten wir außerdem die Luft-Variable
auf einen hohen Wert wie 99 setzen. Und wenn wir schon dabei sind, lassen Sie uns auch weitermachen und
die Sprungvariable auf 99 setzen. Wenn wir nun zum
Ende der Stufe fallen und das Level
neu starten, bleiben wir
im Herbstzustand, bis
wir auf dem Boden landen Ordnung, großartig. Jetzt sind
wir bereit, das Spiel besser aussehen zu lassen, indem wir weitere Dinge hinzufügen
, und wir werden damit beginnen,
einige Umgebungsobjekte hinzuzufügen
86. Umgebungshinweise hinzufügen: Wenn wir uns hier
die Kostüme für den
Umgebungs-Sprite ansehen , haben wir vor einiger Zeit herausgefunden,
dass seine Kostümnamen den Namen der
Level-Sprite-Kostüme
übereinstimmen und dass die Objekte in
jedem Kostüm mit den Kacheln im
entsprechenden Level-Kostüm übereinstimmen mit den Kacheln im
entsprechenden Level-Kostüm diese Objekte
vom Level-Sprite trennen ,
können wir sie als Teil des Levels
erscheinen lassen, ohne dass es zu
Kollisionen mit dem ohne dass es zu
Kollisionen Okay, das Hinzufügen der
Umgebungsobjekte zum Spiel ist eigentlich ein sehr
ähnlicher Vorgang wie das Hinzufügen
der Levelteile Wir müssen zuerst
alle Kostüme für das
aktuelle Level durchgehen , die Namen aufteilen
und Klone für jedes einzelne erstellen, wobei wir die Zeilen- und
Spaltenindizes
verwenden, um die Klone zu positionieren Und ob Sie es glauben oder nicht, der
gesamte Code, den
wir derzeit
für die Umgebung Sprite benötigen ,
befindet sich bereits im
Level-Sprite befindet sich bereits im Gehen wir also zum
Level-Sprite-Code. Wir werden jedes einzelne Skript
von hier in die
Umgebungs-Sprites kopieren von hier in die
Umgebungs-Sprites jedoch Probleme
bei Scratch zu vermeiden, wir
vor dem Kopieren eines Skripts, das einen benutzerdefinierten Block
enthält müssen
wir
vor dem Kopieren eines Skripts, das einen benutzerdefinierten Block
enthält,
sicherstellen, dass zuerst das
definierte
Skript für diesen Block kopiert das
definierte
Skript für diesen Block Also können wir zuerst kopieren,
die Position anpassen und
dann den Klon erstellen definieren. Lassen Sie uns nun die Skripte für Update Drei
und Update
als Klon kopieren , Split-String
definieren, Generatoren definieren und schließlich das Setup-Skript
und das grüne Flag-Skript. Jetzt können wir in
den
Sprite-Code der Umgebung gehen und alles
neu anordnen Der einzige Unterschied Umgebungs-Sprite besteht darin
, dass wir uns nicht die Mühe machen müssen die Variablen Max Scroll X und Max
Scroll Y im
generierten Skript
festzulegen , da wir
dies bereits im Level-Sprite tun Es ist auch möglich, dass die
Umgebungs-Sprites
weniger Zeilen und Spalten haben als das Level-Sprite für
ein bestimmtes Level,
was zu
Problemen führen wird, wenn wir die maximale Scroll-Position im
Umgebungs-Sprite festlegen maximale Scroll-Position im Das
gilt sogar für Level 4
, wo es keine
Umgebungs-Sprite-Kostüme Stellen wir also sicher, dass wir die Blöcke Set Max Scroll
X und Set Max Scroll Y
am Anfang des Skripts
sowie die Blöcke am Ende
des Skripts
loswerden Blöcke Set Max Scroll
X und Set Max Scroll Y
am Anfang des Skripts sowie die Blöcke am Ende
des Skripts Das bedeutet, dass wir auch
die Variablen Max Row und Max
Column nicht mehr benötigen , sodass wir
die Blöcke hier oben, um sie zu
initialisieren,
sowie die If Then-Blöcke hier
unten, um sie zu setzen, loswerden die Blöcke hier oben, um sie zu
initialisieren, sowie die If Then-Blöcke hier
unten, um sie zu setzen Und wir können
die Variablen Max row und Max
column auch komplett entfernen ,
indem wir zu den Variablen gehen, rechten Maustaste auf jede Variable klicken
und Löschen wählen Wenn wir das Spiel jetzt ausführen, wurden
die Umgebungsobjekte zu jedem Level hinzugefügt. Ordnung. Im Moment ist auf der Bühne
alles
korrekt angeordnet, wobei das Spieler-Sprite
vor
den Sprite-Klonen des Levels und der
Umgebung gezeichnet wird vor
den Sprite-Klonen des Levels und der
Umgebung Wenn wir jedoch das Spiel beenden, das
Sprites-Kostüm der Umgebung
ändern, Sprites-Kostüm der Umgebung
ändern es anklicken
und auf die Bühne ziehen und dann das Spiel starten, werden
die
Umgebungsobjekte jetzt über allem anderen gezeichnet
. Wir könnten das beheben,
indem wir einen Block „Gehe zur hinteren Ebene“ in
das „Wenn ich
als Klon-Skript für
die Umgebungs-Sprites starte “ hinzufügen,
um sicherzustellen, dass sich die Klone immer im Hintergrund
befinden wir jedoch
immer mehr Sprites hinzufügen, wie die Feinde
und den Hintergrund, wird
es immer schwieriger, alles in Ordnung zu halten Das bedeutet, dass wir uns eine bessere Methode für den
Umgang
mit Ebenen einfallen lassen müssen , und das werden wir in
der nächsten Lektion tun
87. Sortiere die Ebenen: Bisher bestand das
Sortieren von Sprites auf der Bühne
lediglich darin, einige Sprites auf die hintere Ebene zu senden und andere Sprites auf die vordere Ebene zu bringen Das hat gut funktioniert, da unsere beiden vorherigen Spiele
nur ein paar verschiedene
Arten von Sprites hatten nur ein paar verschiedene
Arten von In diesem Spiel haben
wir jedoch eine ganze Reihe
von Sprites und wir brauchen eine bessere Methode, um sicherzustellen, dass sie alle in
der richtigen Reihenfolge gezogen werden Zum Beispiel
möchten wir natürlich zuerst die
Hintergrundobjekte zeichnen, dann die
Umgebungsobjekte, dann die Levelplättchen, dann die Feinde
und Sammelobjekte, dann die Spieler-Sprites und schließlich
einige HUD-Sprites, um die Gesundheit des Spielers
und
die Gesamtzahl der verbleibenden Münzen
im Level anzuzeigen Gesundheit des Spielers
und
die Gesamtzahl der verbleibenden Münzen . In vielen Game-Engines
wie Unity und Gadot
haben wir die Möglichkeit, jedem Sprite
eine Z-Reihenfolge zuzuweisen Die Sprites werden dann in der Reihenfolge
gezeichnet,
von der der niedrigsten Z-Ordnung bis zu der Sprites mit
der höchsten Dies bei Scratch zu tun, erfordert
etwas mehr Handarbeit, aber es ist eigentlich nicht
allzu schwierig, wenn wir erst einmal genau
verstanden haben , wie
Ebenen bei Scratch funktionieren für ein vereinfachtes Beispiel an, Nehmen wir für ein vereinfachtes Beispiel an, wir haben
die Spieler-Sprites und ein paar Klone, jede der Umgebungen
auf Schneckenebene, Hintergrund- und Münz-Sprites, und sie werden derzeit alle
in zufälliger Reihenfolge auf der Bühne gezogen in zufälliger Reihenfolge auf der Bühne Und bei den Sprite-Klonen Snell
und Coin
ist es eigentlich egal, ist es eigentlich egal in
welcher Reihenfolge wir
sie ziehen, solange
sie über den
Level-Sprite-Klonen und unter den Spieler-Sprites erscheinen in
welcher Reihenfolge wir
sie ziehen, solange
sie über den
Level-Sprite-Klonen und unter den Spieler-Sprites erscheinen. Aus Gründen
der Ebenen-Sortierung können
wir sie also alle unter
einem einzigen Typ gruppieren, können
wir sie also alle unter
einem einzigen Typ gruppieren zum Beispiel einer Komponente Was wir jetzt tun können, ist jedem Typ eine Z-Reihenfolge zuzuweisen. Nehmen wir also zunächst an, wir geben dem Spielertyp eine
Z-Reihenfolge von Null. Damit alle anderen Typen unter dem Spieler
erscheinen, müssen
sie Z-Ordnungen haben
, die kleiner als Null sind, also verwende ich negative Zahlen. Zum Beispiel können wir
allen
Komponenten-Sprites einen negativen Wert geben allen
Komponenten-Sprites einen negativen sie so direkt
unter dem Spieler-Sprite Als Nächstes können wir den
Level-Sprites eine negative Zwei und
den Umgebungs-Sprites
eine negative Drei geben , sodass sie unter
den Level-Sprites erscheinen,
und schließlich den Hintergrund-Sprites eine negative Vier geben, sodass In
Ordnung, jetzt, zu Beginn eines Levels, alle unsere Sprites derzeit haben
alle unsere Sprites derzeit wieder eine zufällige Ebenenreihenfolge, und wir haben jetzt auch
eine Variablenliste die Z-Befehle
für jedes Sprite auf der Bühne zu
verfolgen . Die Liste ist derzeit leer
, da jedes Sprite der Liste
bei der
Ersteinrichtung für das Level
seine eigene Z-Reihenfolge hinzufügen muss Liste
bei der
Ersteinrichtung für das Level
seine eigene Z-Reihenfolge bei der
Ersteinrichtung für das Level
seine Nehmen wir nun an, Scratch beschließt, zuerst das Setup-Skript
für das Spieler-Sprite auszuführen Da die Liste der Z-Bestellungen derzeit leer
ist, können
wir einfach die
Sprite-Z-Bestellung des Spielers zur Liste hinzufügen Sprite-Z-Bestellung des Spielers zur und sie
auf
der vorderen Ebene belassen Als Nächstes haben wir ein Level-Sprite. Das Level-Sprite hat eine
Z-Ordnung von minus Zwei. Das ist weniger als die Z-Reihenfolge des
Spieler-Sprites von Null, also haben wir die
Z-Reihenfolge des Level-Sprites in der Liste darunter gesetzt Jetzt können wir
das Level-Sprite zuerst auf die vordere Ebene über dem Sprite
des Spielers bringen vordere Ebene über dem Sprite
des Spielers Da
es in der Z-Orderliste aber einen Gegenstand darüber gibt, schicken
wir ihn um eine Ebene nach hinten
oder nach unten platzieren ihn wieder unter dem Sprite des
Spielers Bisher denkst du
vielleicht, dass es sinnlos ist,
ein Sprite auf die vordere Ebene und
dann nach hinten zu verschieben ein Sprite auf die vordere Ebene ,
aber
habe Geduld mit mir, aber
habe Geduld mit mir denn jetzt haben wir Komponenten-Sprites haben eine
Z-Ordnung von minus Eins,
was kleiner als Null und
größer als negativ zwei ist Die Z-Reihenfolge liegt also
genau zwischen
den aktuellen beiden Elementen
in der Liste der Z-Bestellungen Wir bringen das
Komponenten-Sprite nun auf die vordere Ebene senden es
dann um eine Ebene
nach hinten ,
sodass es seiner
Position in der Z-Orderliste entspricht Und jetzt
ist die Komponente korrekt über dem Level-Sprite und
unter dem Spieler-Sprite Als Nächstes haben wir ein weiteres
Level-Sprite. Zuerst durchsuchen wir die Liste
der Z-Ordnungen von
oben, bis wir
einen Wert gefunden haben, der kleiner ist als die Z-Reihenfolge
der Level-Sprites von minus Zwei Wir finden keinen, also fügen wir am Ende der Liste weitere negative Zwei
hinzu Jetzt bewegen wir das Sprite
selbst auf die vordere Ebene und dann um drei Ebenen nach hinten In ähnlicher Weise suchen
wir für das
nächste Komponenten-Sprite nach einem Wert in
der Liste, suchen
wir für das
nächste Komponenten-Sprite nach einem Wert in der kleiner
als ein negativer Wert ist Das passiert, wenn wir
die ersten negativen Zwei erreichen, also fügen wir
eine negative Zahl genau zwischen der anderen negativen Zahl und
den ersten negativen Zwei Dann bewegen wir das Sprite auf
die vordere Ebene und um zwei Ebenen
nach hinten Wenn wir so
für alle Sprites weitermachen, werden
sie in der richtigen Ebenenreihenfolge landen ,
mit
dem Spieler-Sprite
auf der vorderen Ebene bis
hin zu den
Hintergrund-Sprites auf der Rückseite Wie ich bereits erwähnt habe, ist
dies ein ziemlich
vereinfachtes Beispiel und es wird tatsächlich andere Arten
von Sprites wie die Hud-Sprites geben, die
über den Sprites Spieler angeordnet werden Aber wie dem auch sei, ich denke, das ist vorerst
genug Erklärung. Schauen wir uns also an, wie wir das
alles im Code machen können. Zunächst benötigen wir eine
globale Variablenliste
, die Z-Bestellungen für die Sprites zu verfolgen ,
die sich
derzeit im Spiel befinden, und wir werden sie
im Hintergrundcode initialisieren Lassen Sie uns also in Variablen eine neue Liste
erstellen, die wir Z-Bestellungen nennen können Wir wollen die Liste zu
Beginn jedes Levels zurücksetzen. Lassen Sie uns also den Block „
Alle Z-Bestellungen löschen“ nehmen und ihn an den Anfang des Skripts „
Wenn ich die
Startstufe erhalte“ hinzufügen . Als Nächstes müssen wir
globale Variablen erstellen, um die
Z-Reihenfolge
für jeden Ebenentyp beizubehalten. Lassen Sie uns eine neue Variable erstellen und den
ersten Spieler Z nennen. Und wir können diese
Variablen ausblenden, während wir sie erstellen. Die Werte der Variablen der
Z-Ordnung bleiben immer gleich, also setzen wir sie
im Skript mit grüner Flagge. Nehmen wir also ein Set zum Blockieren und platzieren es vor dem Block der
Broadcast-Startebene. Und lass uns damit Spieler Z auf Null
setzen. Lassen Sie uns nun
eine weitere Variable erstellen und sie Back Effect Z nennen. Die Back-Effekte
werden für alle Effekte verwendet, die wir direkt
unter dem Sprite des Spielers zeichnen möchten Derzeit wird dies nur aus dem Sprite mit dem
Slope-Slide-Effekt bestehen Aber in Zukunft könnten wir beschließen, weitere Effekte hinzuzufügen Okay, also fügen wir Skript mit grüner Flagge
einen weiteren Satz
zum Blockieren und setzen wir den Effekt
Z auf negativ zurück. Für die nächste Variable nennen
wir sie Komponente Z. Wir verwenden diese für
feindliche Sprites,
sammelbare Sprites wie Münzen und
Schlüssel und für die
Sprite-Pad-Sprites Schlüssel und für die
Sprite-Pad-Sprites Lassen Sie uns dafür einen Satz zum Blockieren hinzufügen und ihn
auf minus zwei setzen Für die nächste Variable machen
wir Level Z und setzen
sie auf minus drei. Danach haben wir die
Umgebung Z, die auf minus vier gesetzt wird. Lassen Sie uns nun eine weitere erstellen, sie Hintergrund Z
nennen und sie auf minus fünf
setzen. Okay, das war's für
das Spieler-Sprite und all die Sprites, die darunter
angezeigt werden Wir haben jedoch auch einige Sprites, die sich
über dem Sprite des Spielers bewegen Für die erste Variante erstellen wir
eine neue Variable namens
Fronteffekt Z.
Dies ist eine neue Variable namens
Fronteffekt Z. für Effekte vorgesehen
, die sich vor dem Spieler ziehen , wie
die Staubpartikel,
wenn
der Spieler auf dem Boden
landet Damit die Blöcke in der richtigen Reihenfolge bleiben, fügen
wir einen Satz von zwei Blöcken über
dem eingestellten Z-Block des Spielers hinzu
und setzen damit
Fronteffekt Z auf eins. Lassen Sie uns eine weitere Variable erstellen, die wir Liquid Z nennen,
und setzen wir sie auf zwei. Als Nächstes erstellen wir eine namens
Hud Z und setzen sie auf drei. Lassen Sie uns zum Schluss noch ein weiteres erstellen, das wir Overlay Z nennen. Dies wird für Dinge
wie das Pase-Overlay verwendet, wenn
das Spiel angehalten wird, und für Bildschirmübergänge das Spiel angehalten wird, und für Bildschirmübergänge Okay, setzen
wir Overlay Z auf vier. Ordnung, jetzt
müssen wir nur noch diese Variablen verwenden und all
unsere Sprites sortieren, und wir beginnen mit
dem Spieler-Sprite Gehen wir also zum Sprite-Code des
Players. Der Code, den wir
zum Sortieren eines Sprites in
den Ebenen schreiben , wird tatsächlich für alle Sprites
derselbe sein Um das Kopieren
des Codes zwischen den Sprites zu vereinfachen, schreiben
wir ihn in
einen benutzerdefinierten Block Gehen wir also zu Mbloxs
und erstellen einen neuen. Geben wir zuerst sort in layers at a ein und fügen dann eine neue Eingabe hinzu, die wir Z-Reihenfolge nennen Und dafür möchten wir
sicherstellen, dass die Option
Ohne Bildschirmaktualisierung ausführen aktiviert
ist. Klicken Sie dann auf Okay. Wir sortieren das Sprite zu
Beginn eines Levels in den Ebenen Kommen wir also zum Setup-Skript
W, das ich erhalte, und fügen wir unten einen Block zur Sortierung nach
Ebenen Für die Eingaben in Z-Reihenfolge gehen
wir zu Variablen und fügen
einen Player-Z-Block hinzu. Okay, jetzt bringen wir
den Block mit der definierten Sortierung in Ebenen hierher. Das erste, was wir im Skript tun werden , ist,
die Liste
der Z-Bestellungen zu
durchsuchen , bis wir
das erste Element mit einem Wert finden , kleiner als die Eingaben für die Z-Reihenfolge
ist, und wir müssen
eine neue Variable verwenden, um den aktuellen
Index in der Liste zu verfolgen. Lassen Sie uns also einen neuen erstellen
, den wir Ebenenindex nennen
und ihn nur für
dieses Sprite erstellen können und ihn nur für
dieses Sprite erstellen Und lass uns weitermachen und die Variable
verstecken. Das erste Element in einer Liste
hat einen Index von eins. Fügen wir dem Sortierebenen-Skript einen Block mit zwei Sätzen hinzu
und setzen
den Ebenenindex auf eins. Als Nächstes gehen wir zur Steuerung und fügen eine
Wiederholung ein, bis der Block blockiert ist. Für die Bedingung gehen wir zu den Operatoren und geben
einen Block weniger als ein. Für die erste Eingabe gehen
wir zu Variablen und fügen
zuerst ein
Blockelement hinzu. Und wir
wollen das Element am
Ebenenindex in der Z-Orders-Liste abrufen. Und lassen Sie uns überprüfen, ob es weniger
als die Eingaben der Z-Reihenfolge ist. Bis das passiert, werden
wir die Liste weiter
durchsuchen. Lassen Sie uns also eine Änderung pro
Block vornehmen und
später den Index um eins ändern. Jetzt denkst du vielleicht, was ist, wenn
die Liste leer ist? Oder was ist, wenn
die Liste
keine Elemente enthält, die kleiner
als die eingegebene Z-Reihenfolge sind? Der Ebenenindex geht also über
das letzte Element in der Liste hinaus. Nun, zum Glück ist
das kein Problem. Der Grund dafür ist, dass,
wenn wir versuchen, ein nicht existierendes Element aus einer Liste abzurufen
, ein leerer Wert zurückgegeben wird. Und was Scratch angeht,
ist jeder Wert größer
als der leere Wert. Wenn die Liste leer ist, bleibt der
Ebenenindex also bei eins, und wenn der
Wiederholungsblock das Ende
der Liste erreicht , ohne
ein Element zu finden , das
der Bedingung entspricht, wird
der Block beendet
und der Ebenenindex eins höher als die
Gesamtzahl der Elemente in der Liste. Das ist genau das,
was wir wollen, denn jetzt können wir eine
Einfügung am Block unterhalb
des
Wiederholungsblockes platzieren und
die Eingabe der Z-Reihenfolge am
Ebenenindex in die Liste der Z-Bestellungen einfügen . Wenn wir nun das Spiel starten, können
wir sehen, dass der Z-Wert des
Spielers
, der Null ist, zur Liste
hinzugefügt wurde. Dies wirkt sich jedoch noch nicht auf
die eigentlichen Ebenen aus, und wir können sehen, dass die
Umgebungsobjekte immer noch über
dem Spieler gezeichnet
werden. Um das Spieler-Sprite
auf der richtigen Ebene zu platzieren, gehen
wir zu Looks
und fügen zuerst die Ebene „Gehe zur Vorderseite“ am unteren Rand
des Skripts für die Sortierebene Als Nächstes wollen wir uns um so viele Ebenen rückwärts
bewegen ,
dass es
dem Sprites-Index in der Liste
der Z-Bestellungen entspricht dem Sprites-Index in der Liste
der Z-Bestellungen Lassen Sie uns hier also zunächst einen Block mit
einer Ebene für die Vorwärtsbewegung Aber stattdessen
wollen wir rückwärts gehen. Da die
vordere Ebene nun dem Index von
eins in der Liste
entspricht, können
wir, wenn um die
richtige Anzahl von Ebenen rückwärts bewegen möchten, wir uns
um die
richtige Anzahl von Ebenen rückwärts bewegen möchten, eine Ebene weniger als
den Indexwert der Ebene verwenden Gehen wir also zur Steuerung über und fügen Zurück gehen“
einen Subtraktionsblock hinzu Dann gehen wir zu Variablen
und machen den Ebenenindex minus eins. Für das Spieler-Sprite ist
momentan der Ebenenindex minus
eins Null,
was bedeutet, dass sich das
Sprite nicht
rückwärts bewegt und
auf der vorderen Ebene verbleibt Wenn wir das Spiel jetzt ausführen, Spieler-Sprite
auf die vordere Ebene gesetzt und es wird über allem anderen dargestellt Die Umgebungsobjekte befinden sich
jedoch
immer noch über den Levelplättchen, also lasst uns das als Nächstes korrigieren Um das zu tun, holen wir uns
hier das
definierte Sortierebenen-Skript und kopieren es
sowohl in das Level-Sprite als auch in
die Umgebungs-Sprites Gehen wir nun zum
Level-Sprite-Code. Bei den Sprites, die Klone verwenden, der ursprüngliche Sprite
das leere Kostüm und Bühne nie wirklich
sichtbar Das heißt, wir können
es einfach an den hinteren Rand des Ebenenstapels schieben lassen und müssen uns nicht
die Mühe machen, es in den Ebenen zu
sortieren Wir
müssen jedoch die Klone sortieren und wir müssen jeden einzelnen
sortieren, sobald sie erstellt werden Dazu können wir das Skript Wenn
ich starte als Klonskript verwenden. Und hier gehen wir zu M-Blöcken
und fügen einen Block mit
Sortierungsebenen hinzu. Gehen wir dann zu
Variablen und verwenden einen Level-Z-Block als
Eingaben in Z-Reihenfolge. Wenn wir das Spiel jetzt ausführen, erhalten
wir
in der Liste eine Menge
negativer Dreien unter der Null Jede negative Drei steht für einen Level-Sprite-Klon
für das aktuelle Außerdem
erscheinen die Level-Kacheln jetzt über den
Umgebungsobjekten auf der Bühne Es ist also im Moment eigentlich
nicht einmal nötig , die
Sprite-Klone der Umgebung zu sortieren, da sie bereits in den Hintergrund
geschoben werden Sobald wir jedoch den Hintergrund hinzugefügt
haben, wird
es notwendig sein Lass uns
weitermachen und uns jetzt darum kümmern. Wie beim Level-Sprite müssen
wir nur die Sprite-Klone der
Umgebung sortieren also im Skript Wenn ich
als Klone starte, wir also im Skript Wenn ich
als Klone starte, zu Mblocks und fügen dort einen Block mit
Sortierungsebenen hinzu Dann gehen wir zu Variablen und verwenden einen
Umgebungs-Z-Block als Eingabe Wenn wir das Spiel jetzt ausführen, haben
wir eine Menge
negativer Vierer
unter den negativen
Dreien in der Liste Und nur um sicherzugehen , dass die Ebenen-Sortierung
korrekt funktioniert, entfernen
wir hier den
Umgebungs-Z-Block und verwenden eine Eins
als Z-Reihenfolge Wenn wir das Spiel jetzt starten, stehen ein paar davon ganz oben
auf der Liste, und jetzt
stehen die Umgebungsobjekte über allem anderen. Ordnung, stellen wir sicher, dass wir wieder den
Umgebungs-Z-Block verwenden,
um die Umgebungsklone zu sortieren, und wir können auch
die Z-Orderliste ausblenden Und jetzt, wo wir dem Spiel
weitere
Dinge hinzufügen können , ohne uns
Gedanken über die Ebenen machen zu müssen, werden
wir als Nächstes einen
scrollenden Hintergrund erstellen
88. Einen Scrollhintergrund erstellen: Wenn wir uns
die Kostüme für die Sprites im
Hintergrund ansehen , haben
wir vier Hauptkostüme, darunter zwei mit
fremder Vegetation und
zwei mit Wolken Wir werden alle vier Kostüme gleichzeitig auf
der Bühne und sie
übereinander legen Außerdem
wurde jedes Kostüm so entworfen, dass es sich
entlang der horizontalen Achse nahtlos wiederholen
lässt Auf diese Weise können wir
die Hintergrundebenen zusammen mit
dem Level scrollen die Hintergrundebenen zusammen mit , während sich der Spieler im Spiel
bewegt. Okay, um damit zu beginnen,
die
Hintergrundebenen auf die Bühne zu bringen , gehen
wir zum Sprite-Code im
Hintergrund Lassen Sie uns zunächst zu den Events gehen und einem Gewinn
, auf den die grüne
Flagge geklickt wurde Dann lass uns zu Looks gehen, einen Switch-Kostümblock
reinbringen und zum leeren Kostüm wechseln Wir wollen auch sichergehen, dass
wir den Sprite nicht verstecken, also bringen wir einen Showblock rein Gehen wir jetzt zurück zu den Ereignissen,
fügen einen
Block „Wenn ich erhalte “ hinzu und erhalten
die Einrichtungsnachricht Hier wollen wir zuerst überprüfen,
ob es sich bei dem Sprite um einen Klon handelt, und wenn ja, löschen wir ihn Ich gebe
dir das als Herausforderung. Pausiere das Video jetzt und schau, ob du
die Herausforderung abschließen kannst. Wie bei den Level
- und Umgebungs-Sprites können
wir das tun, indem wir überprüfen, ob der Sprite nicht
das leere Kostüm verwendet Gehen wir also zur Steuerung und fügen ein I
und dann einen Block hinzu. Für die Bedingung gehen
wir zu Operatoren, fügen einen Not-Block und
dann einen Equals-Block ein Gehen wir nun zu Looks
und überprüfen ob der Name des Kostüms
nicht leer ist Wenn ja, können wir zur
Steuerung gehen und einen Block zum Löschen
dieses Klones hinzufügen. Und so vergessen wir nicht, dies später
zu tun. Gehen wir zurück zu Looks at
a switch kostüm Block zum Ende
des
Drehbuches und wechseln zurück zum
leeren Kostüm. Bevor wir mit der
Erstellung der Klone beginnen, sollten wir sicherstellen, dass bei
jeder Iteration der Spielschleife
alles
richtig auf der Bühne positioniert bei
jeder Iteration der Spielschleife
alles
richtig auf der Bühne jeder Iteration der Spielschleife
alles
richtig auf der Dazu können wir in die
Umgebungs-Sprites gehen und das definierte Skript zum
Anpassen der Position
in die Hintergrund-Sprites
kopieren in die Und wir können auch die Skripte
„Wenn ich
Update eins erhalte“ und „Wenn ich
Update erhalte, drei“ kopieren Update eins erhalte“ und „Wenn ich
Update erhalte, drei Gehen wir jetzt zurück zu den Sprites im Hintergrund und passen alle
Skripte neu an Als Nächstes, zurück im Setup-Skript, bevor wir zum
leeren Kostüm wechseln, erstellen
wir Klone für
jedes Und um
im Hintergrund zu scrollen, müssen
wir tatsächlich
zwei Klone für jedes Kostüm erstellen zwei Klone für jedes Wir ordnen die beiden Klone nebeneinander an und
verschieben sie zusammen erstellen wir die
Klone in einem Gehen wir also zu Mblock
und erstellen einen neuen. Geben wir zunächst
create Clones of ein. Dann fügen wir eine Eingabe namens
costume hinzu und klicken auf Okay. wir im Setup-Skript Bevor wir zum Blink-Kostüm wechseln, fügen vier Blöcke zum
Erstellen von Klonen hinzu. Die Kostüme sind BG eins, BG zwei, BG drei und BG Verwenden wir diese als
Eingaben in dieser Reihenfolge, BG eins, BG zwei, BG drei und BG vier. Lassen Sie uns nun den definierten Crit Clones-Block
irgendwo hier drüben platzieren Und hier
wollen wir zuerst zu dem Kostüm wechseln, das durch
die Kostümeingabe gegeben wurde Gehen wir also zu Looks, bringen einen Switch-Kostümblock rein und schalten ihn auf
die Kostümeingabe um. Als Nächstes müssen wir
ihm eine weltweite Position geben. Als wir
das Skript „Position anpassen“
aus dem Umgebungs-Sprite kopiert haben , es automatisch
X- und Y-Variablen für uns erstellt Jetzt können wir sie also
im Crit Clone-Skript setzen indem wir zu Variablen gehen und
zwei Set-Zwei-Blöcke Beim ersten Klon wird X so gesetzt, dass
X gescrollt wird, und Y auf Null. Wenn X so eingestellt wird, dass X scrollt der Klon
vertikal mittig auf
der Bühne
gestartet , und wenn Y auf Null gesetzt wird, bleibt er am unteren Rand
des Levels hängen. Lassen Sie uns nun
den Klon tatsächlich erstellen, indem wir auf
Control gehen und den Block
Create Clone of myself einfügen. Wir müssen jetzt
einen weiteren Klon mit
demselben Kostüm erstellen , aber er muss eine volle
Bühnenbreite rechts neben
dem ersten haben. Gehen wir dazu
zurück zu den Variablen, fügen eine Änderung blockweise hinzu
und ändern X um 480. Und wir lassen Y
auf Null stehen, sodass die Klone am
unteren Rand der Ebene horizontal
ausgerichtet sind unteren Rand der Ebene horizontal
ausgerichtet Lassen Sie uns nun den
zweiten Klon erstellen, indem wir zu
Control gehen und einen weiteren kritischen Klon
von mir selbst einfügen Bevor wir das testen, müssen
wir jeden Klon
in der Phase, in der er erstellt wird,
positionieren in der Phase, in der er erstellt wird, und
ihn in den Ebenen sortieren Lassen Sie uns also zuerst angeben, wann
ich als Klonblock anfange. Dann gehen wir zu M-Blöcken und fügen dem Skript einen
Block zum Anpassen der Position hinzu. Gehen wir nun zu einem
der anderen Sprites über , an denen
wir
bisher gearbeitet haben , und kopieren das Skript zum Sortieren in Ebenen in
das Hintergrund-Sprite Dann zurück im
Hintergrund Sprite. Lassen Sie uns einen Sortier- und
Ebenenblock zum Skript hinzufügen , wenn ich als Klonskript
starte für die Eingabe der Z-Reihenfolge Gehen
wir für die Eingabe der Z-Reihenfolge zu Variablen und
verwenden einen Z-Block im Hintergrund. Wenn wir das Spiel jetzt ausführen, erhalten
wir einen Hintergrund
, der zusammen mit dem Level scrollt , bis wir etwa
die
Hälfte des Levels hinter uns haben Um dieses Problem zu beheben, müssen
wir, wenn
der erste Klon jeder Hintergrundebene komplett von der linken
Seite der Bühne abweicht, jeder Hintergrundebene
komplett von der linken
Seite der Bühne abweicht, ihn auf volle
Bühnenbreite nach rechts verschieben ,
sodass sein linker Rand mit dem rechten Rand
des zweiten
Klons Wenn der zweite
Klon dann die Bühne verlässt, machen
wir dasselbe
mit ihm und so weiter Dazu müssen wir dem Skript „Position
anpassen“
einige Dinge hinzufügen . Lassen Sie uns zunächst ein
paar neue Variablen erstellen. Nennen wir das erste neue X und machen es nur für
dieses Sprite Für das zweite nennen
wir es Nu Y. Auch nur für dieses Sprite Und wir müssen die Variablen nicht
zeigen. Wir werden diese verwenden, um
die neuen X- und Y-Positionen
für das Sprite zu berechnen die neuen X- und Y-Positionen , bevor wir es verschieben Lassen Sie uns also vorerst
den Block „Gehe zu XY“
vom Skript trennen den Block „Gehe zu XY“
vom Skript und zwei Blöcke
einfügen Mit dem ersten setzen wir hier
ein neues X mit dem
X-Minus-Scroll-X-Block. In ähnlicher Weise setzen wir das neue
Y auf Y minus Scroll-Y. Als Nächstes werden wir prüfen, ob der
neue X-Wert den Klon vollständig von
der linken Seite der Bühne entfernt Dies ist der Fall, wenn NX kleiner als minus 480
ist. Gehen wir also zur Kontrolle über
und fügen einen IT-Block hinzu. wir uns für den Zustand an die Betreiber und geben
einen Block weniger als ein. Gehen wir dann zu
Variablen und prüfen ob Nux kleiner
als minus 480 ist Wenn dies der Fall ist, wollen
wir
die NX-Variable um zwei
Stufenbreiten oder 960 erhöhen die NX-Variable um zwei
Stufenbreiten Lassen Sie uns also
blockweise eine Änderung vornehmen und Nux um 960 ändern Da NX und New Y
nun die
Scroll-Position berücksichtigen, verwenden
wir sie nur, um die tatsächliche
Position
der Sprites auf der Bühne festzulegen tatsächliche
Position
der Sprites auf Allerdings müssen wir auch ihre
Weltposition im Spiel
anpassen Lassen Sie uns also
eine weitere Änderung
blockweise vornehmen und auch X um 960 ändern. Schließlich können wir
den Go to XY-Block
wieder am Ende
des Skripts anhängen den Go to XY-Block
wieder am Ende
des und
einen neuen X-Block für
die X-Eingabe und einen neuen
Y-Block für die Y-Eingaben verwenden einen neuen X-Block für
die X-Eingabe und einen neuen
Y-Block für die Y-Eingaben Wenn wir jetzt das Spiel starten
und nach rechts gehen, scrollt
der Hintergrund nahtlos Wenn wir
jedoch wieder nach links gehen, funktioniert es nicht mehr Um das zu beheben,
müssen wir auch überprüfen, ob der Klon den
rechten Rand der Bühne überschritten hat. Dies ist der Fall, wenn das
neue X größer als 480 ist. Um das zu überprüfen,
trennen wir zunächst den Go to XY-Block wieder ab. Dann duplizieren wir
den IT-Block und hängen ihn an der Unterseite Dieses Mal wollen wir überprüfen,
ob Nux größer als 480 ist Speichern wir
also den Nux-Block
und entfernen den
Kleiner-als-Block und entfernen den
Kleiner-als-Block Dann gehen wir zu Operatoren und ersetzen ihn durch einen Block
größer als Lassen Sie uns nun überprüfen, ob NX größer als 480
ist. Wenn das der Fall ist, wollen
wir das Sprite um zwei
Stufen nach links verschieben , also ändern wir beide
Variablen um Jetzt können wir den Go
to XY-Block wieder unten anhängen. Und wenn wir es erneut versuchen, sollte
der Hintergrund jetzt nahtlos
in beide Richtungen
scrollen In Ordnung, das
funktioniert ziemlich gut. Aber weil alle
Hintergrundobjekte mit
genau der gleichen Geschwindigkeit scrollen, sieht
es ein bisschen flach Im wirklichen Leben, wenn wir uns bewegen, scheinen
Dinge, die weiter von uns
entfernt sind, langsamer zu vergehen als Dinge
, die uns näher sind Um etwas
Ähnliches in unserem Spiel zu erreichen, können
wir es so einrichten, dass die
Hintergrundebenen immer langsamer
scrollen, je weiter sie zurückliegen. Das nennt man
Parallax-Effekt oder Parallax-Scrolling, und wir haben es kurz im Kapitel
Cosmic Havoc bei
der Entstehung der Sterne im Hintergrund besprochen Cosmic Havoc bei
der Entstehung der Um diesen Effekt zu erzielen, müssen
wir verfolgen
, auf welcher Hintergrundebene jeder Klon befindet, und anhand dieser Ebene seine Scrollgeschwindigkeit anpassen Gehen wir also zunächst zu Variablen
und erstellen eine neue. Nennen wir es Layer, und es muss nur
für dieses Sprite sein Und das bezieht sich übrigens nur darauf
, auf welcher Hintergrundebene sich ein
Klon befindet und hat nichts
mit den Scratch-Ebenen zu tun Ordnung, klicken wir auf Okay und lassen Sie uns die Variable ausblenden. Als Nächstes müssen
wir beim Erstellen der
Klone im Setup-Skript auch angeben, auf welcher Hintergrundebene sich
die Klone befinden sollen. Das bedeutet, dass wir dem benutzerdefinierten Block Crit
Clones
eine weitere Eingabe hinzufügen müssen Crit
Clones
eine weitere Eingabe Dazu können wir mit der
rechten Maustaste auf einen
der Crit Clones-Blöcke
klicken der Crit Clones-Blöcke Lassen Sie uns zunächst ein neues
Label hinzufügen und eine Ebene eingeben. Dann fügen wir eine neue Eingabe
namens Ebene hinzu und klicken auf Okay. Für die Layer-Eingaben beginnen
wir von oben und machen eins, zwei,
drei und vier. Als Nächstes gehen wir zum
definierten Rit-Clone-Skript und gleich nach dem Block „Kostüm
wechseln gehen
wir zu Variablen, fügen einen Satz zu einem
Block hinzu und
setzen die Ebenenvariable auf die Ebeneneingaben, um die Scrollgeschwindigkeit eines Klones
anhand seines Ebenenwerts
anzupassen . Gehen
wir zum Skript „Position
anpassen“. Im Moment setzen wir das
neue X
einfach auf X minus Scroll X, wodurch jeder Klon
die gleiche Scrollgeschwindigkeit hat, aber jetzt passen wir es
mit der Ebenenvariablen an. Um das zu tun, verschieben wir zunächst den scrollx-Block in einen leeren
Bereich Gehen wir nun zu Operatoren, fügen dem Subtraktionsblock einen Divisionsblock hinzu
und platzieren
dann den
Scrollx-Block auf der Gehen wir für die rechte Seite zu Variablen und fügen einen Ebenenblock
hinzu Dabei gilt: Je höher
der Ebenenwert, desto kleiner wird die
Scrollmenge. Dies führt dazu, dass sich der Klon
beim Scrollen langsamer bewegt beim Scrollen langsamer Wenn wir also das Spiel
starten und uns nach rechts bewegen, scheinen
die Wolkenschichten
jetzt langsamer
vorbeizuziehen als
die Vegetationsschichten Der Hintergrund
scrollt allerdings immer noch etwas zu schnell. Um dies zu beheben, können wir
den Ebenenwert mit
einem anderen Wert multiplizieren den Ebenenwert mit
einem anderen Wert , der
höher als eins Gehen wir dazu
zu Operatoren und bringen einen Multiplikationsblock
in einen leeren Bereich Lassen Sie uns den späteren
Block auf eine Seite verschieben
und versuchen, ihn
mit zwei zu multiplizieren Lassen Sie uns nun ScrollX
durch all das teilen und es
versuchen . Das ist besser. Wenn wir jedoch an die
Spitze des Levels steigen, wird es etwas komisch,
wenn alle Hintergrundebenen mit der gleichen Geschwindigkeit nach unten
gehen. Um das zu beheben,
müssen wir
den Parallax-Effekt auch auf
das vertikale Scrollen anwenden den Parallax-Effekt auch auf
das vertikale Scrollen Um das zu tun, duplizieren wir zunächst
all diese mathematischen Blöcke. Wenn wir mit der rechten Maustaste auf
den Subtraktionsteil klicken und Duplizieren wählen, sollten
sie zusammen dupliziert werden In diesem Fall
ersetzen wir X durch
Y und scrollen X durch Scroll Y. All das verwenden wir
dann
für die Einstellung von Nu Y. Damit sollten die
Hintergrundebenen nun
auch
mit unterschiedlichen All das verwenden wir
dann
für die Einstellung von Nu Y. Damit sollten die
Hintergrundebenen nun
auch
mit unterschiedlichen Geschwindigkeiten nach oben und unten scrollen Und wir müssen auch
sicherstellen, die neue Positionierung bei der
Erstellung der
Klone berücksichtigen bei der
Erstellung der
Klone berücksichtigen Andernfalls funktionieren die Klone
immer noch einwandfrei, solange wir mit einem Scrollwert von
00 unten
links auf dem Level
beginnen 00 unten
links auf dem Aber wenn wir an einem anderen
Teil des Levels beginnen
würden , wäre
die Positionierung etwas falsch im Create Clone-Skript Anstatt X im Create Clone-Skript auf scrollx zu setzen, können
wir hier
ein Duplikat
des Scroll-X verwenden , geteilt durch
Ebene mal zwei Blöcke Und für Y können
wir ein Duplikat von
einer Ebene
mal zwei Blöcken verwenden von
einer Ebene
mal zwei Blöcken Das sollte sicherstellen, dass die Klone von Anfang an richtig
positioniert Um den Code jedoch etwas
effizienter zu gestalten, sollten
wir wahrscheinlich
eine Variable anstelle der
beiden und
der gesamten Ebene mal zwei Blöcke verwenden eine Variable anstelle der
beiden und
der gesamten ,
falls wir später einen
anderen Wert ausprobieren möchten Gehen wir also zu Variablen
und erstellen eine neue. Wir können es Scroll-Faktor nennen und es
nur für dieses Sprite
erstellen, und dann verstecken wir es Da sich der Wert des Scroll-Faktors während des Spiels nicht
ändert, können
wir ihn im
Green Flag-Skript festlegen Fügen wir dem Skript also einen
Block mit zwei Sätzen hinzu
und setzen wir den Scroll-Faktor auf zwei. Jetzt können wir zur
Einstellungsposition zurückkehren und
Klon-Skripte erstellen und alle zwei
in der Ebene mal zwei Blöcke
durch Scrollfaktor-Blöcke
ersetzen in der Ebene mal zwei Blöcke
durch Scrollfaktor-Blöcke Dies wird es viel einfacher machen, verschiedene Werte
für den Scrollfaktor zu testen Okay, wenn wir das Spiel erneut
ausführen, wenn wir uns nicht bewegen, bewegen sich auch nicht
alle
Hintergrundebenen da kein
Scrollen stattfindet Da wir jedoch
Wolken im Hintergrund haben, sieht
das etwas seltsam Die Cloud sollte sich immer bewegen. Wir können also
jedem Klon
eine Geschwindigkeitsvariable zuweisen und sie verwenden, um den Klon, jeden Frame, zu
bewegen. Wir wollen nicht, dass
sich die
Vegetationsebenen bewegen, solange wir nicht scrollen, also geben wir ihnen
eine Geschwindigkeit von Null Und für die Wolkenschichten geben
wir der näheren
eine etwas höhere Geschwindigkeit als der
hinteren, um den Parallaxeneffekt aufrechtzuerhalten. Okay? Also zuerst müssen wir eine neue Variable
erstellen. Nennen wir es Geschwindigkeit und machen
es nur für dieses Sprite. Und lass es uns verstecken. Als Nächstes müssen
wir
im Setup-Skript
die Geschwindigkeitswerte beim
Erstellen der Klone übergeben die Geschwindigkeitswerte beim
Erstellen der Klone Das bedeutet, dass wir dem benutzerdefinierten Block Create
Clones
erneut
eine neue Eingabe hinzufügen müssen . Schreiben wir also, klicken Sie auf
eins und wählen Sie Bearbeiten. Lassen Sie uns zunächst ein neues
Etikett hinzufügen und schnell tippen. Dann fügen wir eine neue Eingabe
namens Geschwindigkeit hinzu und klicken auf Okay. Für die ersten beiden verwenden wir
eine Null für die Geschwindigkeitseingaben. Für die dritte machen
wir minus 0,5. Und für den letzten machen
wir minus 0,7. Wenn Sie negative Werte verwenden
, bewegen sie sich nach links. Aber wenn wir wollten, könnten
wir stattdessen
positive Werte verwenden , um
sie nach rechts zu verschieben. Okay, jetzt gehen wir zum
definierten Crit Clone-Skript über. Gehen wir zu Variablen und fügen einen weiteren Satz hinzu, der
am oberen Rand des Skripts blockiert werden soll, und setzen wir die
Geschwindigkeitsvariable auf die Geschwindigkeitseingaben Im Moment
müssen wir nur
anhand seines Geschwindigkeitswerts herausfinden ,
wann ein Klon bewegt werden muss. Ich denke, der beste Zeitpunkt
dafür ist, wenn der Klon die
Aktualisierungsnachricht erhält. Wir kümmern uns derzeit allerdings nicht um
die Aktualisierung der Nachricht Gehen wir
also zu den Ereignissen und fügen einen neuen Block hinzu, wenn
ich erhalte, und lassen Sie uns Update zwei erhalten. Und hier müssen wir nur zu
Variablen gehen, eine
Änderung pro Block vornehmen und X durch
die Geschwindigkeitsvariable ändern. Okay, lass es uns versuchen. Fantastisch. Jetzt bewegen sich die Wolken, auch wenn wir still
stehen, und das Scrollen funktioniert
auch immer noch Großartig. Okay, wenn wir die Taste ein paar
Mal drücken , um zu Level vier zu wechseln
, sollte sich
dieses Level eigentlich
in einem Schloss befinden, also wollen wir nicht, dass der scrollende
Hintergrund erscheint Wir wollen nur, dass es in den
Ebenen eins, zwei und drei erscheint. dazu im Setup-Skript Gehen
wir dazu im Setup-Skript zu Control und legen einen ITN-Block um alle Blöcke zur
Erstellung der Klone Und stellen wir sicher, dass der Switch-Kostümblock
unter dem IDN-Block Für den Zustand gehen wir zu den Operatoren und bringen
einen Block weniger als Gehen wir dann zu den Variablen und prüfen, ob die Stufe kleiner
als die endgültige Stufe ist. Dadurch wird verhindert, dass
die Hintergrundklone in der letzten Ebene erstellt werden Level vier sieht jedoch aufgrund des
himmelblauen Hintergrunds immer noch
seltsam aus aufgrund des
himmelblauen Hintergrunds immer noch
seltsam Dieser Hintergrund ist eigentlich
ein Teil des Hintergrunds, und wir können ihn auf
der Registerkarte „Hintergründe“ sehen Das himmelblaue Bild, das wir verwendet
haben, heißt Himmel. Wir haben hier auch ein dunkelgraues
Exemplar namens Castle. Das ist der, den wir für Level vier verwenden wollen
. Gehen wir dafür also zum
Code für den Hintergrund. Im Start-Level-Skript können
wir überprüfen, was das
aktuelle Level ist, und dann entscheiden, welcher
Hintergrund verwendet werden soll. Gehen wir dazu zu Control und bringen einen Wenn-Dann-Else-Block
in einen leeren Bereich. Für die Bedingung gehen wir zu den Operatoren und geben
einen Block kleiner als ein. Gehen wir dann zu den
Variablen und
überprüfen erneut , ob das Level kleiner
als das endgültige Level ist. Wenn ja, verwenden wir
den Himmelshintergrund. Wenn wir zu Looks gehen, können
wir den Hintergrund ändern indem wir hier den Block „
Hintergrund wechseln“ verwenden. Fügen wir also einen zum Teil I hinzu und schalten
den
Hintergrund auf Himmel um. Und für den anderen Teil wechseln
wir zu Castle. Jetzt platzieren wir das
alles direkt vor dem
Broadcast-Setup-Block. Wenn wir das Spiel jetzt ausführen, verwenden
die ersten drei Level
immer noch den Himmelshintergrund, aber das vierte Level
verwendet jetzt den Schloss-Hintergrund. Okay, und damit ist
die Umgebung für unser Spiel jetzt
fast fertig. Alles, was übrig bleibt, ist
etwas Flüssigkeit hinzuzufügen , die am Boden
entlang fließt. Daran werden wir als Nächstes arbeiten.
89. Flüssigkeit hinzufügen: Lass uns den Liquid Sprite
hier auswählen und uns seine Kostüme ansehen Der Flüssiggeist hat zwei
Hauptkostüme: Wasser und Lava. Und wie wir sehen können, wenn
wir das Sprite zeigen, erstreckt
sich jedes Exemplar über die gesamte
Breite der Bühne Und wie beim Sprite im
Hintergrund können
die Kostüme entlang der horizontalen Achse
nahtlos wiederholt werden entlang der horizontalen Achse
nahtlos Was wir also mit
dem flüssigen Sprite machen werden, ist dass
wir es am unteren Rand jedes
Levels ausstellen Das wird besser aussehen,
als nur eine
Menge leeren Platz unten zu haben ,
wie wir es derzeit haben Okay, und ein Großteil des Codes wird derselbe
sein wie für das
Hintergrund-Sprite Zu Beginn können wir also zum Sprite-Code
im Hintergrund gehen und die Skripte kopieren Wir müssen
ein paar Änderungen vornehmen, aber vorerst werden wir alle Skripte
so
kopieren, wie sie derzeit sind Zuerst überschreiben wir,
definieren, sortieren und Ebenen
definieren, Position anpassen
und Klone definieren Dann können wir
die restlichen Skripte kopieren. Gehen wir jetzt zum
flüssigen Sprite-Code und räumen alles ein bisschen auf Ordnung, kommen wir zum definierten Crit Clone-Skript Im Gegensatz zum Hintergrund-Sprite hat
das Flüssig-Sprite nur eine einzige Ebene, sodass wir überhaupt keine
Ebeneneingabe benötigen Um es zu entfernen, klicken wir mit der rechten Maustaste auf den definierten
Block „Klone erstellen“ und Klicken wir zunächst
hier
in das Ebenenlabel und löschen es, indem wir auf
das Papierkorbsymbol darüber klicken Dann machen wir dasselbe für
die Ebeneneingaben. Klicken
wir jetzt auf Okay. Wir können hier auch
den eingestellten Layer-Block loswerden. Wir können X so einstellen, dass einfach X gescrollt wird, und wir können Y auf Null setzen. Als Nächstes und definieren wir
die Position anpassen, werden
wir
die Ebenenvariable nicht verwenden wenn wir die Scrollgeschwindigkeit einstellen. Stattdessen wollen wir einfach
X minus scrolX zum Einstellen des
neuen X und Y minus
Scroll-Y zum Einstellen von Y verwenden . Und jetzt können wir zu Variablen gehen, rechten Maustaste auf die
Ebenenvariable klicken und Und wenn wir schon dabei sind, können
wir zum Skript mit grüner Flagge übergehen,
den Block für den eingestellten
Scrollfaktor
entfernen
und die Scrollfaktor-Variable löschen Okay, wenn wir gleich weitermachen, kommen
wir zum Skript Wenn ich als Klonen
anfange. Anstatt das
Hintergrund-Z als Eingaben in der Z-Reihenfolge zu verwenden, wollen
wir Liquid Z verwenden. Liquid Z hat einen Wert von zwei, wodurch es über allen anderen Sprites liegt, die derzeit im Spiel
sind Als Nächstes müssen wir einige Änderungen am
Setup-Skript
vornehmen Setup-Skript Für den flüssigen Sprite verwenden
wir das Wasserkostüm
für die Stufen eins, zwei und drei und das
Lavakostüm für Stufe vier Also müssen wir zuerst
den ITN-Block hier
durch einen ITN-TS-Block ersetzen den ITN-Block hier
durch einen ITN-TS-Block Gehen wir dazu
zu Control und bringen einen ITN-S-Block in einen leeren Bereich
. Und lassen Sie uns das Level als Block mit weniger
als der letzten Ebene
hier als Bedingung verwenden Block mit weniger
als der letzten Ebene
hier als Bedingung Gehen wir nun zu
MI-Blöcken und fügen jedem
Teil des ITN-Out-Blocks
einen Crit Clones-Block Verwenden wir für den ersten Block
das Wort Wasser als Eingabe für
das Kostüm und verwenden wir Lava
für den Wie bei den Wolken
im Hintergrund bewegen
wir auch die Flüssigkeit jedem Frame
mit einer konstanten Geschwindigkeit. Für das Wasser
nehmen wir minus 1,5. Lava ist dicker als Wasser und sollte sich
etwas langsamer bewegen. Verwenden wir also negative
0,5 für ihre Geschwindigkeit. Jetzt können wir
hier das
Switch-Kostüm in einen leeren Block packen und es an die
Unterseite des I Thin S-Blocks anhängen, dann den ITN-Block loswerden und all
das an die Skripte anhängen Und das sollte alles
sein, was wir vorerst
tun müssen , lass es uns versuchen Fantastisch. Jetzt fließt
Wasser über den
Boden des Levels. Und wenn wir im Level nach oben gehen, scrollt
die Flüssigkeit
zusammen mit dem Level nach unten Wechseln wir zu Level vier, um
sicherzugehen , dass
das Lavakostüm verwendet wird Perfekt. Okay, und nur zum Spaß, lassen Sie uns das Wasser teilweise
durchsichtig machen , damit wir Dinge
durchschauen können. Um das zu tun, kommen wir zurück zum Crit Clone Script Nun, wir wollen nicht, dass die Lava durchsichtig
wird,
das wäre seltsam Also überprüfen wir zuerst die Eingabe
des Kostüms. Gehen wir dazu zur Steuerung und bringen einen ITN-S-Block
in einen leeren Raum Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Lassen Sie uns dann überprüfen, ob die Eingabe für das
Kostüm Wasser entspricht. Wenn ja, gehen wir zu Looks,
fügen einen eingestellten Effekt mit zwei Blöcken hinzu und setzen den
Ghost-Effekt auf 20. Andernfalls nehmen wir
einen weiteren Block mit
zwei Set-Effekten und fügen
ihn dem S-Teil hinzu. Setzen wir den
Ghost-Effekt auf
Null, um sicherzustellen, dass das
Sprite vollständig undurchsichtig ist Jetzt können wir all
das irgendwo am
Anfang des
Skripts platzieren und es ausprobieren Nett. Jetzt ist das Wasser
teilweise durchsichtig. Und wenn wir auf Stufe vier gehen, ist
die Lava immer noch völlig
undurchsichtig. In Ordnung. In dem Moment, in die Flüssigkeit
fallend,
startet
AKA, wenn er den Boden
der Stufe erreicht, das Level immer noch jedes Mal neu Das werden wir später beheben, wenn wir dem Spieler etwas Gesundheit
geben. Aber zuerst
sind die Level immer noch ziemlich langweilig und der Spieler hat nicht viel
zu tun. Lasst uns also daran arbeiten, dem Spiel
einige Sammlerstücke und
Feinde hinzuzufügen Spiel
einige Sammlerstücke und
Feinde hinzuzufügen
90. Gott-Modus aktivieren: Im Gegensatz zu den meisten Sprites, an
denen
wir bisher gearbeitet haben und die die gesamte Phase gefüllt
haben, brauchen wir, um
einen Klon von, sagen
wir, einer Münze oder
einem Schnecken-Sprite zu erstellen , um
einen Klon von, sagen
wir, einer Münze oder
einem Schnecken-Sprite zu erstellen, eine Möglichkeit, ihm
eine bestimmte Weltposition
innerhalb Um das zu tun, können wir es
so einrichten, dass wir durch Klicken auf eine beliebige Stelle innerhalb eines Levels die Position
der Welt
an diesem Punkt erhalten Position
der Welt
an Und wir können diese
Position dann verwenden, wenn wir einen Klon erstellen. Gehen wir dazu auf
den Code für den Hintergrund ein. Zuerst müssen wir
zu Variablen gehen und
ein paar neue erstellen , um die angeklickte Position zu
halten Für die erste
nennen wir sie geklickt X.
Dann erstellen wir eine weitere mit dem
Namen, Dann erstellen wir eine weitere Sie haben erraten, dass sie auf Y geklickt
haben. Als Nächstes überprüfen wir bei jeder Iteration
der Spielschleife, ob der Spieler
gerade mit
der Maus klickt, und wenn ja, setzen
wir geklickte X und Klicks Y auf die angeklickte Position Gehen wir dazu
zunächst zu Control
und bringen einen ITN-Block und bringen einen Um zu überprüfen, ob der Spieler
mit der Maus klickt, können
wir zur Erkennung übergehen und
einen Mousedown-Block
als Bedingung verwenden einen Mousedown-Block
als Bedingung Gehen wir nun zu
Variablen und fügen ITN-Block
zwei Satz-Zwei-Blöcke
hinzu Und verwenden wir sie, um
ClickX zu setzen und auf Y zu klicken.
Dann kehren wir zur Erfassung zurück Um die aktuelle
Mausposition auf der Bühne zu ermitteln, haben
wir diese MouseX- und MouseY-Blöcke. Setzen wir also clicked x auf mouseX und clicked
Y auf mouseY. Dann setzen wir das alles an
den Anfang der Spielschleife. Wenn wir jetzt das Spiel starten und irgendwo auf der Bühne
klicken, angeklicktes X und
geklicktes Y an diese Position gesetzt Das funktioniert einwandfrei, solange wir noch nicht angefangen haben, uns
über das Level zu bewegen Aber sobald wir anfangen, nach rechts zu
scrollen, sind
die Werte in Bezug auf die
Weltpositionierung im Spiel nicht mehr korrekt Um die Bühnenposition
in eine Weltposition umzurechnen, müssen
wir auch die aktuelle
Scroll-Position berücksichtigen Dazu
müssen wir einfach Scroll
X zu MouseX hinzufügen und
Y zu Maus Y. Gehen wir
also zu Operatoren und fügen ein paar zusätzliche Blöcke
hinzu Gehen wir nun zu Variablen und für den Block der ersten Ausgabe machen
wir MouseX plus Für den zweiten
machen wir MouseY plus ScrollY. Jetzt können wir Clicked X und
Clicked Y mithilfe der neuen Editionsblöcke festlegen Clicked Y mithilfe Wenn wir das Spiel starten, wird
die angeklickte Position nun in Weltkoordinaten angezeigt und wir können sie verwenden, um
Objekte zum Spiel hinzuzufügen Nehmen
wir jedoch an, wir möchten
eine Münze oder etwas Ähnliches
am oberen Rand des Levels hinzufügen eine Münze oder etwas Ähnliches
am oberen Rand des Levels Im Moment
können wir
da nur hochkommen, indem wir ein paar
Wände springen und so. Wenn wir versuchen, dem Spiel
viele Dinge hinzuzufügen, wird
das ziemlich nervig. Um dies zu vermeiden, können
wir einen
sogenannten guten Modus implementieren. Der Gottmodus ist normalerweise ein
Cheat-Code,
der den Spieler unbesiegbar macht und/oder ihm unbegrenzte Ressourcen zur Verfügung stellt. In unserem Spiel dient der
Gott-Modus jedoch nur zu Entwicklungs- und
Testzwecken
und ermöglicht es uns, frei und schnell zu einem beliebigen
Teil eines Levels zu wechseln Okay? Also zuerst benötigen wir
eine globale Variable, um zu verfolgen, ob der gute Modus
gerade aktiviert ist
oder nicht. Lassen Sie uns also einen neuen Modus erstellen
und ihn guten Modus nennen. Als Nächstes verwenden
wir die G-Taste, um den
Gottmodus ein- und auszuschalten verwenden
wir die G-Taste Kommen wir rüber
in einen leeren Raum. Dann lass uns zu den Events gehen, einen
Win-Tasten-Block einbauen und nach
der G-Taste suchen . Und hier machen
wir verschiedene
Dinge, je nachdem,
ob der gute Modus gerade aktiviert
ist oder nicht Gehen wir also zuerst zur Steuerung und fügen einen Wenn-Dann-S-Block ein Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob der
Gottmodus gleich Null ist. Das bedeutet, dass der Gottmodus derzeit ausgeschaltet
ist. Wenn dies der Fall ist, möchten
wir ihn einschalten,
indem wir einen Satz zum Blockieren hinzufügen und den
guten Modus auf eins setzen. Andernfalls ist der Gottmodus
derzeit aktiviert, also schalten wir ihn im
anderen Teil aus , indem wir Godmde auf Null
setzen jetzt die G-Taste drücken wir jetzt die G-Taste drücken, schalten wir den Wert für den
Gottmodus Wir können die
Gott-Modus-Variable jetzt ausblenden und
möchten nur die Ebene anzeigen.
Klicken Sie auf Dex und klicken Sie auf
Y-Variablen, Klicken Sie auf Dex und klicken Sie auf
Y-Variablen wenn der
Gottmodus aktiviert ist Zum Ein- und Ausblenden von
Variablen im Code haben
wir diese Blöcke zum Einblenden von Variablen
und zum Ausblenden von Variablen Fügen wir zunächst dem Teil I dieses Blocks drei
Blöcke
zum Einblenden von Variablen Teil I dieses Blocks drei
Blöcke
zum Einblenden von Lassen Sie uns die Ebene einblenden, klicken wir auf Dx und dann auf
Y-Variablen Dann fügen wir dem Outs-Teil drei Variablen
zum
Ausblenden hinzu und blenden
dieselben drei Variablen aus Lassen Sie uns außerdem die
Variablenanzeigen nach
unten rechts verschieben , damit sie später
nicht negativ auf
die Motorhaube auswirken. Wenn Sie jetzt den Gott-Modus ein- und ausschalten, werden auch die Variablen ein- und
ausgeblendet. Ordnung, wenn der
Gottmodus aktiviert ist, ermöglichen
wir dem Spieler, im Grunde
durch das Level
zu schweben , ohne mit Dingen zu
kollidieren Gehen wir dazu in den
Sprite-Code des Spielers und dann rüber zum Skript, das
ich erhalte Und hier
wollen wir nur einen
dieser benutzerdefinierten Blöcke ausführen , wenn der
Gottmodus ausgeschaltet ist Wenn es aktiviert ist, werden wir
die Dinge ein bisschen anders machen. Gehen wir also zuerst zur Steuerung und bringen einen Wenn-Dann-Out-Block
in ein leeres Feld. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob der Gottmodus gleich Null ist. Wenn ja, werden wir
all diese benutzerdefinierten Blöcke
hier wie gewohnt ausführen all diese benutzerdefinierten Blöcke
hier wie gewohnt Wir wollen jedoch unabhängig davon den Fokus X und den
Fokus Y setzen. Also lasst uns diese am Ende
des
I then s Blocks anhängen am Ende
des
I then s Blocks dann alles
in die Skripte verschieben. Als Nächstes gehen wir zu Mblocks
und erstellen ein neues. Nennen wir es Handle
God Mode und Quick O. Dann fügen wir den Outs-Teilen einen
Handle-Good-Modus-Block hinzu Lassen Sie uns nun den
Block
Define-Handle-Good-Modus nach unten verschieben . In diesem Skript lassen wir den Spieler
einfach die Bewegungstasten
benutzen
, um die Sprites zu bewegen Gehen wir dazu zu Variablen und fügen zwei durch Blöcke
geänderte Verwenden wir sie, um
die X-Variable und
die Y-Variable zu ändern . Gehen wir nun zu den
Operatoren und fügen jedem Block der Änderung nach Blöcken
einen Multiplikationsblock Gehen wir dann zu Variablen und ändern wir X mal X-Achse mal Acht Und ändere Y um die
Y-Achse mal acht. Wenn wir jetzt das Spiel starten
und den Gottmodus einschalten, können
wir uns im gesamten Level bewegen. Da
wir jedoch
beim Empfang
der Nachricht von Update One zum Hipbox-Kostüm wechseln beim Empfang
der Nachricht von Update One zum Hipbox-Kostüm und
den Animationsblock im Gottmodus
nicht ausführen, er auf
dem Hipbox-Kostüm hängen Um das Problem im
Handle-Gott-Modus-Skript zu beheben, gehen
wir zu Looks und fügen dort einen
Switch-Kostümblock hinzu, und lassen Sie uns ihn auf Idlzero
umstellen. Los geht's gehen
wir zu Looks und fügen dort einen
Switch-Kostümblock hinzu,
und lassen Sie uns ihn auf Idlzero
umstellen. Los geht's. Und wenn
wir den Gottmodus ausschalten, fallen
wir wieder zu Boden und alles geht wie gewohnt weiter Wenn wir dem Spiel jedoch zum ersten Mal ein neues
Objekt hinzufügen, sollten
wir überprüfen, ob es
positioniert ist und richtig
funktioniert. Dazu müssen wir das Spiel
neu starten, indem wir
auf die grüne Flagge klicken. Im Moment befinden wir uns dadurch jedoch am
Anfang des Levels,
selbst wenn wir uns im Gottmodus wieder am
Anfang des Levels,
selbst wenn wir uns im Gottmodus befinden. Dann müssen wir also den ganzen
Weg zurück zu dem gehen, wo wir waren. Wenn wir außerdem
die Taste drücken, um zu einer anderen Ebene
zu wechseln , und
auf die grüne Flagge klicken, kehrt
sie zur ersten Ebene zurück. Wir wollen nicht, dass eines dieser Dinge passiert,
wenn wir uns im Gottmodus befinden. Um das erste Problem zu lösen, können
wir es so einrichten, dass unsere Position nicht zurückgesetzt wird, wenn
wir uns im Gottmodus befinden. Gehen wir dazu zum Skript „
Startposition festlegen“. Und hier können wir überprüfen, ob der
Gottmodus aktiviert ist, und wenn ja,
beenden wir einfach das Skript. Und das stelle ich
dir als Herausforderung vor. Also mach weiter und pausiere
das Video jetzt und sorge
dafür , dass das Skript stoppt, wenn der
Gottmodus aktiviert ist. Okay, also gehen
wir zuerst zu Control und bringen einen I und dann einen Block
in einen leeren Bereich Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen Sie dann zu Variablen und
prüfen Sie, ob der Gottmodus gleich eins ist. Wenn ja, gehen wir zur Steuerung, fügen einen Stoppblock ein
und beenden dieses Skript Dann lassen Sie uns das alles an den Anfang des Skripts mit der festgelegten
Startposition setzen. Wenn wir jetzt im Gottmodus auf die grüne
Flagge klicken, wird unsere Position nicht zurückgesetzt. Die Scrollposition wird jedoch immer noch
zurückgesetzt, sodass die Kamera
zu uns scrollen muss. Um das zu beheben, gehen wir
zum Hintergrundcode. Wie bei der festgelegten
Startposition für den Spieler wollen
wir auch
hier nicht die Blöcke
laufen lassen und den Start-Scroll einstellen, wenn der Gott-Modus aktiviert ist. Lassen Sie uns noch einmal einen
I-Then-Block in ein leeres Feld bringen. Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen Sie dann zu Variablen und
prüfen Sie, ob der Gottmodus gleich eins ist. Lassen Sie uns abschließend zu Control gehen, einen Stopp-Block einfügen
und dieses Skript beenden Lassen Sie uns das nun an den Anfang des
definierten
Start-Scrolls setzen und es ausprobieren. Exzellenz. Und wenn wir Gottmodus ausschalten und
auf die grüne Flagge klicken
, werden die Positionen zurückgesetzt. Um zu verhindern, dass
wir im Gottmodus
wieder auf Stufe eins zurückkehren,
kommen
wir als Nächstes im Gottmodus
wieder auf Stufe eins zurückkehren,
kommen
wir zum Skript mit der
grünen Flagge. Hier wollen wir
die Level-Variable nur dann auf
eins setzen , wenn der Gottmodus ausgeschaltet ist. Um das zu tun, bringen wir einen
Wenn-Dann-Block in
ein leeres Feld. Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen Sie dann zu Variablen und prüfen Sie,
ob der Gottmodus gleich Null ist. Und jetzt können wir das eingestellte Level
auf einen Block hier in
den Block Ich dann
verschieben auf einen Block hier in
den Block Ich dann Lassen Sie uns den
Block I then tatsächlich am Ende des
Skripts platzieren , direkt über dem Block auf der
Broadcast-Startebene. Wenn wir jetzt das Spiel starten, Level
wechseln, den guten Modus
einschalten und auf die grüne Flagge klicken
, werden wir nicht zu Level eins
zurückgeschickt. Wenn wir den Gottmodus ausschalten und
auf die grüne Flagge klicken , befinden wir
uns
jedoch auf Stufe eins. Ein Problem, das wir jetzt haben,
ist jedoch, wenn wir den Gottmodus einschalten und bis zur
rechten Seite des Levels
gehen und den Gottmodus einschalten und bis zur
rechten Seite des Levels
gehen dann zu Stufe vier wechseln. Da Level vier
nicht sehr breit
ist, wurde versucht, uns weit von
der rechten Seite des Levels wegzubewegen,
sodass wir den Spieler-Sprite jetzt nicht mehr sehen können Um das zu beheben, wollen
wir die Positionen
jedes Mal
neu einstellen, wenn wir das Level wechseln Dazu
müssen wir verfolgen
, ob sich das
Level geändert hat oder nicht. Und dafür
müssen wir eine neue Variable erstellen. Nennen wir es Level Changeed. Klicken Sie auf Okay und
verstecken Sie die Variable. Immer wenn wir die Ebene wechseln, senden
wir die
Zielstufennachricht. Also können
wir im Skript Wenn ich ein
finisiertes Level erhalte, einen Satz zum
Blockieren hinzufügen und den
Levelwechsel auf eins setzen. Kommen wir als Nächstes zum Skript
Wenn ich die Startstufe erhalte. Und hier, gleich nach dem
Broadcast-Setup-Block, fügen
wir einen Satz zum Blockieren und setzen den Pegelwechsel auf Null. Also, wenn wir den Level wechseln, die Variable
Level Changeed so lange eins, bis wir den eingestellten
Start-Scroll-Block hier ausgeführt haben und das Spieler-Sprite die Setup-Nachricht
erhält Vor diesem Hintergrund kommen
wir zurück, um den Start-Scroll-Scroll zu
definieren Wenn der Levelwechsel gleich eins ist, wollen
wir
alle diese Blöcke ausführen,
auch wenn der Gottmodus aktiviert ist Dadurch wird das Skript nur
gestoppt, wenn der Gottmodus aktiviert ist und der
Levelwechsel gleich Null Und das werde ich dir
auch als Herausforderung geben. Okay, also lass uns zuerst zu den
Operatoren gehen und einen
AND-Block reinbringen. Lassen Sie uns den Gottmodus, der
einem Block entspricht, auf eine Seite verschieben. Und für die andere Seite fügen wir einen Gleichheitsblock ein Gehen Sie dann zu Variablen und prüfen Sie, ob die
Änderung des Levels gleich Null ist. Und all dies können wir als Bedingung für das
Stoppen des Skripts Jetzt wollen wir dasselbe tun,
wenn wir die Position der
Sprites der Spieler festlegen Um etwas Zeit zu sparen, wir das Ganze und
blockieren es und kopieren es in
die Sprites der Spieler Wenn wir nun zum Sprite-Code des
Players gehen, können
wir den
kopierten Code und den Block als Bedingung für das Stoppen
des Skripts mit
der festgelegten
Startposition verwenden Bedingung für das Stoppen
des Skripts der festgelegten
Startposition Okay, wenn wir das Spiel starten und
auf die grüne
Flagge klicken, während der Gottmodus
aktiviert ist , werden die Positionen nicht
zurückgesetzt, aber wenn wir die
Level ändern, werden sie zurückgesetzt Perfekt. Gut, das mag
ziemlich kompliziert
und sinnlos erschienen sein , aber glauben Sie mir, es wird
unser Leben viel
weniger schmerzvoll machen , wenn wir anfangen Spiel immer mehr
Dinge
hinzuzufügen,
und genau das werden wir in
der nächsten Lektion tun , indem wir
einige Sammelmünzen hinzufügen
91. Die Münzen hinzufügen: Um dem Spiel Münzen hinzuzufügen, verwenden
wir hier den Münzspread. Wir platzieren die Münzen
in jedem Level und der Spieler
muss alle Münzen
in einem Level einsammeln , um zum
nächsten Level zu gelangen. Wenn wir uns die Kostüme ansehen, gibt
es vier Animationskostüme, denen wir die
Münze so aussehen lassen, als würde sie sich drehen. Es hat auch ein Hit-Box-Kostüm, dem wir nach
Kollisionen mit den Sprites der
Spieler suchen Kollisionen mit den Sprites der
Spieler Okay, um mit
der Codierung der Coin-Sprites zu beginnen, gehen
wir zunächst zum
Umgebungs-Sprite-Code Wir können etwas Zeit sparen, indem einige
der Skripte hier
kopieren Lassen Sie uns zuerst das Sortier
- und Layer-Skript in die Coin-Sprites
kopieren und dann das Skript zum Anpassen der
Position Kopieren wir nun
das Skript Update One, das Update Three Script,
das When I Start
as a Clone Script und das Green Flag Script Für das Setup-Skript können
wir alles
außer dem Generate-Block kopieren. Lassen Sie uns also zuerst den
Generate-Block von hier entfernen und das Skript
kopieren. dann sicher, dass Sie
den Generate-Block vor
dem
Switch-Kostümblock wieder hinzufügen den Generate-Block vor
dem
Switch-Kostümblock wieder . Gehen wir jetzt zum Coin-Sprite-Code und lassen Sie uns
alles gut aussehen lassen Okay, also in When I
start as a clone script, statt Umgebung
Z als Eingabe der Z-Reihenfolge zu verwenden, verwenden
wir Komponente Z. Wie Sie sich vielleicht erinnern, verwenden
wir Komponente Z für Dinge wie Sammlerstücke
und Feinde Als Nächstes beginnen
wir im Setup-Skript damit, Münzen auf jedem Level zu platzieren Dazu müssen
wir zunächst überprüfen, in welchem Level
wir uns gerade befinden. Gehen wir also zur Steuerung und bringen einen IT-Block in
einen leeren Raum. Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen wir dann zu Variablen und
prüfen, ob Level gleich eins ist. Und lassen Sie uns das Switch-Kostüm
anbringen , um Block zu blinken, am unteren Rand
des I, dann S-Blocks dann alles
an das Skript anhängen die
Coin-Sprite-Klone zu erstellen, gehen
wir zu Mblock und
erstellen einen neuen benutzerdefinierten Block Wenn wir einen Klon erstellen, müssen
wir
seine Weltposition angeben Geben wir also zuerst
create Clone at X Doppelpunkt ein und fügen die Eingabe von X Fügen wir
nun ein neues Label hinzu, geben den Doppelpunkt Y ein und fügen die
Eingabe von Y hinzu. Dann klicken wir auf Okay Lassen Sie uns nun den definierten
Crit Clone-Block hierher verschieben. Das Erste, was wir hier
machen wollen, ist, zu Looks zu gehen, einen Switch-Kostümblock
einzufügen und ihn auf Coin Zero umzustellen, was das erste
Kostüm in der Animation ist Als Nächstes legen wir die
X- und Y-Variablen mithilfe der X- und Y-Eingaben fest. Gehen wir also zu Variablen und fügen den Satz zwei Blöcke hinzu. Stellen Sie X auf den X-Eingang und
Y auf die Y-Eingänge ein. Lassen Sie uns zunächst den Klon erstellen, indem wir zu Control
gehen und den zu Control
gehen und Block Create Clone
of Myself einfügen. Okay, jetzt können wir anfangen, dem Level Münzen
hinzuzufügen. Starten wir dazu das Spiel und
drücken Sie die G-Taste, um den Gottmodus
einzuschalten. Ich denke, ein guter Platz für eine Münze ist genau
hier über dem Zaun. Also werde ich hier klicken,
um die Weltrangliste zu ermitteln. Jetzt kann
ich im Setup-Skript zu MI-Blöcken gehen und dem
I-Teil des If-the-S-Blocks
einen Titelne-Block hinzufügen ,
und ich kann die angeklickten Positionswerte
als Eingabewerte verwenden als Ich werde
die Werte ein wenig auf
minus 193 für X und 16 für Y anpassen .
Und wenn wir auf die grüne Flagge klicken, können
wir sehen, dass die neue Münze an
der richtigen Position erstellt
wurde Okay, bevor wir weitere Münzen hinzufügen,
lassen Sie uns
weitermachen und
die Animation zum Laufen bringen Wir werden alle Animationen für
die Sprites machen , wenn sie
die Aktualisierungsnachricht erhalten Gehen wir also zuerst zu den Ereignissen und bringen einen weiteren hinzu.
Wenn ich einen Block erhalte und wir ein Update
für die Animation erhalten, gehen
wir zu Meine Blöcke
und erstellen einen neuen Wir können es animieren nennen
und auf Okay klicken. Und lassen Sie uns weitermachen und dem Update to-Skript
einen Animationsblock hinzufügen Update to-Skript
einen Animationsblock hinzufügen Lassen Sie uns nun den
definierten Animationsblock
in einen leeren Bereich bringen in einen leeren Wie bei den Spieler-Sprites
muss auch werden bei der
Animation der Coin-Sprites der
aktuelle Animationsframe verfolgt Gehen wir also zunächst zu Variablen
und erstellen eine neue. Nennen wir es Anim Frame und machen es nur für
dieses Sprite Und lass uns die Variable verstecken. Wenn wir einen neuen Klon erstellen, möchten
wir seinen
Animationsframe bei Null beginnen. also den Klon erstellen, fügen
wir im Skript Bevor wir also den Klon erstellen, fügen
wir im Skript Create Clone ein Set zum Blockieren ein
und setzen Nom Frame auf Null. Jetzt, zurück in Definiere Animate, wollen
wir zuerst mit
dem Anime-Frame-Wert zum richtigen Kostüm wechseln mit
dem Anime-Frame-Wert zum richtigen Kostüm Gehen wir also zu Looks und fügen einen Switch-Kostümblock hinzu. Die Kostümnamen für die Animation beginnen
mit dem Wort Münze, gefolgt von einer Zahl 0-3 Um also den richtigen
Kostümnamen zu finden, gehen
wir zu den Operatoren und fügen
einen zusammenhängenden Block hinzu Lassen Sie uns das Wort Münze
für die erste Eingabe verwenden und für die zweite geben
wir zuerst einen Block aus Bauchmuskeln ein und verwenden dann die
Bodenfunktion. Dann gehen wir zu
Variablen und fügen einen Nom-Frame-Block
zur Blockebene hinzu. Die Floor-Funktion schneidet, wie
wir bereits gelernt haben, den
Dezimalteil eines Werts ab. Als Nächstes müssen wir
den Tom-Frame-Wert
um einen kleinen Betrag erhöhen . Lassen Sie uns dazu
einen Change-Tom-Frame-Block einfügen. Und lassen Sie uns ihn um 0,15 ändern. Schließlich müssen wir sicherstellen,
dass die Mindestanzahl der
Nom-Frame-Zyklen 0-3 Um das zu tun, bringen wir zunächst einen
Set-Tom-Frame-Block ein. Dann gehen wir zu Operatoren und fügen
dem Block Set Two einen Mod-Block hinzu. Gehen wir nun zurück zu Variablen und setzen wir
Num Frame auf Nom Frame Mod Four. Okay, und es gibt noch
eine Sache, die wir tun
müssen, bevor
wir es versuchen. Bei jeder Iteration
des Spiels erhält jedes Sprite die aktuelle Nachricht,
einschließlich
der originalen
Coin-Sprites Das bedeutet, dass das originale
Sprites-Kostüm
ebenfalls animiert wird . Wir möchten jedoch nicht, dass
das passiert, da wir
das leere Kostüm verwenden, um die ursprünglichen
Sprites zu identifizieren Daher sollten wir den Animate-Block nur
ausführen, wenn
das aktuelle Sprite
ein Klon ist und nicht die Wir können dies tun, indem wir zuerst
überprüfen, ob das Kostüm
nicht das leere Kostüm ist , bevor wir den animierten
Block ausführen Um das zu tun, duplizieren wir den Block „
Wenn nicht der Name des Kostüms gleich einem
leeren Feld“ im Setup-Skript und entfernen all
diese zusätzlichen Blöcke,
einschließlich des Blocks „
Diesen Klon löschen Dann wickeln wir ihn um
den animierten Block. Und jetzt werden nur die
Klone animiert. In Ordnung, probieren wir es aus. Fantastisch. Wir haben jetzt
eine sich drehende Münze. Okay, was wir jetzt
tun können, ist durch die Level zu
gehen
und noch mehr Münzen hinzuzufügen, und wir werden nur Münzen zu den
Stufen eins, zwei und drei hinzufügen. Level vier ist das letzte
Level und benötigt keine Münzen. Also müssen
wir zuerst im Setup-Skript einige
weitere Level-Checks hinzufügen. Gehen wir dazu
zu Control und fügen TS-Teil
einen, glaube ich, S-Block hinzu. Für die Bedingung verwenden wir hier
ein Duplikat des Levels
entspricht einem Block. Aber überprüfen Sie dieses Mal,
ob Level gleich zwei ist. Nehmen wir nun einen Block, den
ich denke, und fügen ihn dem
unteren Teil des Blocks hinzu, den ich denke Und nochmal, lasst uns eins
der Level gleich Blöcken
duplizieren und
prüfen, ob Level gleich drei ist Und jetzt können wir
alle Ebenen durchgehen und die Klone
erstellen Das wird eine Weile dauern, also werde ich es überspringen Dann zeige ich dir
alle Blöcke
, die ich für die Erstellung
aller Klone verwende Okay, hier sind also alle
Create-Klone-Blöcke , die ich
für alle drei Ebenen verwende Es gibt ziemlich viele von ihnen. Wenn Sie also dieselben Münzpositionen
in Ihrem Spiel verwenden
möchten , habe ich
genau diesen Münz-Sprite als
herunterladbare Ressource
namens Coin Dot Sprite Three bereitgestellt herunterladbare Ressource
namens Coin Dot Sprite Nachdem Sie die
Datei auf Ihren Computer heruntergeladen haben, müssen
Sie zunächst
das aktuelle Coin-Sprite
in Ihrem Projekt löschen das aktuelle Coin-Sprite
in Dann können Sie zur
Schaltfläche „Sprite auswählen“, „ Sprites hochladen“
auswählen und das neue hochladen Ordnung. Und jetzt, wo wir alle Münzen
zu den Levels hinzugefügt haben, lassen
wir den
Spieler sie als Nächstes sammeln.
92. Sammle die Münzen: Damit der Spieler die Münzen in einem Level
sammeln kann, müssen
wir verfolgen,
wie viele Münzen
im aktuellen Level noch übrig sind. Gehen wir dazu zu Variablen
und erstellen eine neue. Nennen wir es Münzen und
machen es für alle Sprites. Später werden wir eine
schöne Anzeige für den Münzzähler erstellen, aber vorerst werden wir die
standardmäßige Variablenanzeige verwenden Ordnung, also zu
Beginn jedes Levels, bevor die
Münzklone erstellt werden, wollen
wir den
Münzzähler auf Null zurücksetzen Gehen wir dazu zum
Code für den Hintergrund. im Start-Level-Skript vor
der Übertragung der Setup-Nachricht Lassen Sie uns im Start-Level-Skript
vor
der Übertragung der Setup-Nachricht einen Satz zum
Blockieren hinzufügen und die Münzen auf Null setzen. Als Nächstes erhöhen wir jedes Mal, wenn
wir
einen Coin-Sprite-Clone erstellen, den
Münzzähler um eins Kehren wir dazu zum Coin-Sprite-Code zurück
. uns im CrakKlne-Skript Lassen Sie uns im CrakKlne-Skript eine Änderung für
Block und die Münzen Wenn wir das Spiel jetzt starten, können
wir sehen, dass der Münzzähler uns die Gesamtzahl
der Münzen in jedem Level
anzeigt Okay, jetzt
müssen wir es nur noch
so machen , dass der Spieler die Münzen tatsächlich
einsammeln kann. Dazu
tauschen wir vorübergehend ein Coins-Kostüm das Hip-Box-Kostüm aus und prüfen, ob es den Sprite
des Spielers berührt Und wir wollen
diesen Check durchführen, wenn der Spieler-Sprite auch sein
Hipbox-Kostüm benutzt Wenn wir uns
den Code für das
Spieler-Sprite ganz schnell ansehen , wechseln
wir
im Skript „Wenn ich
Update One erhalte“ zum Hipbox-Kostüm im Skript „Wenn ich
Update One erhalte Und weil das
Spieler-Sprite
eine höhere Z-Reihenfolge hat als
die Münz-Sprite-Klone, erhält
das Spieler-Sprite
die Update-Eins-Nachricht
tatsächlich vor
den also, zurück
im Coin-Sprite-Code, Wenn also, zurück
im Coin-Sprite-Code, eine Münze die Nachricht „Update One“ erhält, wird
der Spieler-Sprite sein Mit anderen Worten, das wäre der beste Ort, um zu überprüfen, ob sich
die Sprites berühren. Ordnung, um das zu tun, gehen
wir zuerst zu Meine Blöcke
und erstellen einen neuen Nennen wir es Check
Touching Player. Und klicken Sie auf Okay. Und weil wir das Kostüm wechseln werden, wollen
wir das nur machen,
wenn der Sprite ein Klon ist,
wie bei dem
animierten Block hier wie bei dem
animierten Block Also können wir zuerst den Block duplizieren,
falls der Kostümname nicht gleich leeren Block ist, und ihn an den Anfang des
Update-One-Skripts setzen.
Dann ersetzen wir den Animationsblock durch ein Häkchen, das den
Spielerblock das den
Spielerblock Und wir wollen eigentlich die Position
der Sprites auf der Bühne vor
der Kollisionserkennung anpassen Position
der Sprites auf der Bühne vor
der Kollisionserkennung Bühne vor
der Kollisionserkennung Nehmen wir also den Block „Position
anpassen hier und platzieren ihn über dem Block,
der den Spieler berührt Da das originale Münzsymbol niemals
auf der Bühne zu sehen sein
wird, ist es egal, ob wir seine Position
anpassen oder nicht Okay, lass uns jetzt an dem Skript arbeiten, das den
Scheck berührt. Zuerst wollen wir zum Hip-Box-Kostüm wechseln
. Gehen wir also zu Looks, bringen einen
Switch-Kostümblock rein und wechseln zur Hitbox. Als Nächstes überprüfen wir, ob die Münze
den Sprite des Spielers berührt Um das zu tun, gehen wir zuerst zur Steuerung und geben
ein Wenn ein Wenn-Block Und was die Bedingung angeht, gehen
wir zur Sensorik über und fügen einen Berührungsblock hinzu und überprüfen,
ob wir den Spieler berühren. Wenn wir den Spieler berühren, gibt es ein paar
Dinge, die wir tun müssen. Zuerst reduzieren wir den
Münzzähler um eins. Gehen wir also zu den Variablen über, nehmen eine Änderung pro Block vor und tauschen die Münzen
durch eine negative Änderung aus. Und jetzt müssen wir
die Münze aus dem Spiel entfernen. Um das zu tun, können wir
den Klon löschen, indem wir zu
Control gehen und diesen Klonblock
löschen auswählen. Bevor wir den
Klon löschen, müssen
wir jedoch seinen Artikel
aus der Z-Bestellliste entfernen. Andernfalls würde
es zu Problemen beim Sortieren der
Ebenen kommen, wenn wir später während des Spiels weitere Objekte
zu einem Level
hinzufügen würden. Okay, um die Münze
aus der Liste der Z-Bestellungen zu löschen, könnte
es zunächst so aussehen, könnten
wir einfach
den Artikel löschen, der denselben Index wie
die Layer-Index-Variable hat denselben Index wie
die , die wir im
Sortier-Layer-Skript verwenden. Nachdem jedoch andere Sprites
in den Ebenen sortiert wurden, der Layer-Indexwert nicht
mehr korrekt Zum Glück gibt es jedoch
eine einfache Lösung. Da wir
dieselben Z-Bestellungen
für mehrere Sprites verwenden ,
in diesem Fall Komponente Z, müssen
wir nur eines der Elemente der Komponente
Z aus der Liste
löschen Das liegt daran, dass, wenn wir einen Clone in Scratch
löschen, alle Sprites in
den darunter liegenden Ebenen eine
Ebene vorwärts bewegt werden Dies passiert auch, wenn wir ein Element in
einer Variablenliste
löschen Alle darunter liegenden Elemente werden nach
oben verschoben , um den leeren Bereich auszufüllen. Solange wir also eines der
Elemente
der Komponente Z aus der Liste löschen , die Liste
mit den Scratch-Ebenen überein Okay, also zurück in der Checkbox Spieler
berührst, um
ein Element der Komponente Z
aus der Liste zu löschen , lass uns zuerst zu Variablen gehen, einen Block zum Löschen von
Z-Bestellungen
nehmen und ihn
direkt über den Block „
Diesen Klon löschen“ platzieren direkt über den Block „
Diesen Klon löschen für die Indexeingabe Lassen Sie uns für die Indexeingabe die
Artikelnummer des Blocks Z Orders eingeben. Lassen Sie uns abschließend einen
Komponenten-Z-Block als Elementeingabe verwenden. Dabei wird die Liste durchsucht, der Index des
ersten Elements
gefunden , das
dem Wert der Komponente Z entspricht, dann dieses
Element aus der Liste gelöscht. Und nur damit wir sehen können , dass alles korrekt
funktioniert, zeigen
wir die Z-Bestellliste und gehen wir
zum Setup-Skript. Lassen Sie uns für Level eins alle Clone-Blöcke bis auf die obersten
drei kritischen Treffer
herausziehen alle Clone-Blöcke bis auf die obersten
drei kritischen Treffer
herausziehen Lass uns jetzt das Spiel starten. Im Moment zeigt der
Münzzähler drei an, und wir haben drei negative
Zweien in der Liste Wenn wir jetzt eine
Münze berühren, verschwindet sie. Der Münzzähler sinkt um eins und die negativen zwei werden aus der Liste
gelöscht. Fantastisch. Gut, wir können die Liste wieder
ausblenden und die Crit Clone
Blocks wieder zum Script hinzufügen Und jetzt, wo der Spieler die Münzen einsammeln
kann, lassen
wir ihn als Nächstes ein Level verlassen sobald er alle
Münzen für dieses Level gesammelt hat
93. Ein Level verlassen: Sobald der Spieler
alle Münzen des aktuellen Levels gesammelt hat, aktivieren
wir die Levelausgänge Wenn der Spieler dann zu den Ausgängen
geht, er
zum nächsten Level über Für die Level-Exits verwenden
wir die Ausgänge genau Schauen wir uns zuerst die
Kostüme an. Für die Stufen eins und zwei verwenden
wir eine Flagge mit einer
zufälligen Farbe als Ausgänge Und für Level drei benutzen
wir eine Tür, um das Schloss des
Chefs zu betreten Level vier ist das letzte
Level und benötigt keinen Ausgang, da das Spiel
automatisch beendet wird, wenn der Boss besiegt wird Wenn ein Flaggenausgang nicht aktiv ist, verwenden
wir sein Daunenkostüm Und wenn der Spieler
alle Münzen des Levels gesammelt hat, aktivieren
wir den Ausgang und spielen eine winkende Animation
mit den Aufwärtskostümen Ähnlich verwenden
wir für die Tür das Kostüm mit
geschlossener Tür, wenn es
inaktiv ist , und das
Kostüm mit offener Tür, wenn es aktiv ist Okay,
lassen Sie uns zunächst in
den Coin-Sprite-Code gehen und einige Skripte
in das Exit-Sprite kopieren Und wir können tatsächlich weitermachen und alle Skripte kopieren,
wobei wir darauf achten müssen, zuerst die
definierten Skripte zu kopieren Jetzt können wir zum
Exit-Sprite-Code gehen und die Skripte ein wenig bereinigen Ordnung, also
im Setup-Skript werden
die Exit-Clone-Positionen
natürlich nicht mit denen der Coin-Klone
identisch sein Also lasst uns alle
Craklne-Blöcke loswerden. Und bevor wir herausfinden,
wo die Ausgänge platziert werden sollen, kommen
wir zunächst zum Create Clone
Script Das Exit Sprite hat
kein Coin-Zero-Kostüm, also lasst uns den
Switch-Kostümblock hier loswerden Wir wollen auch nicht die Coins-Variable
ändern, also lasst uns auch
diesen Block loswerden Okay, und wenn wir
einen Sprite-Exit-Klon erstellen, müssen
wir auch einen
Typ für den Klon angeben
, der entweder
Flagge oder Tür sein wird Das bedeutet, dass wir dem
Create Clone-Skript
eine weitere Eingabe hinzufügen müssen Create Clone-Skript
eine weitere Eingabe Klicken wir also mit der rechten Maustaste auf den
definierten Block und wählen Bearbeiten. Lassen Sie uns zunächst eine neue Bezeichnung
mit einem Semikolon vom Typ Doppelpunkt hinzufügen. Dann fügen wir eine neue Eingabe
namens Type hinzu und klicken auf Okay. Jetzt müssen wir eine Variable
zum Speichern des Typs eines Klons erstellen . Gehen wir also zu Variablen und erstellen wir eine namens type und machen sie nur für
dieses Sprite Eine weitere Variable, die wir für
jeden Klon benötigen , ist eine zum
Speichern seines Status
, der entweder
inaktiv oder aktiv sein wird Lassen Sie uns also
weitermachen und eine weitere Variable
erstellen, die wir state nennen und sie nur für dieses Sprite erstellen können Und wir müssen die Variablen nicht
anzeigen. nun im Skript Create Clone, bevor Sie den Klon erstellen Lassen Sie uns nun im Skript Create Clone,
bevor Sie den Klon erstellen,
zwei Blöcke eingeben. Wir setzen die Typvariable auf die Typeingabe und setzen den
Status vorerst auf inaktiv. Als Nächstes müssen wir anhand des Typs bestimmen
, zu welchem
Kostüm wir wechseln sollen. Gehen wir dazu
zur Steuerung und bringen einen If-the-S-Block in ein
leeres Feld. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Dann lassen Sie uns überprüfen, ob der
Typ input equals flag ist. Gehen wir jetzt zu Looks und fügen einen Switch-Kostümblock sowohl dem I-
als auch dem Outs-Teil Ich habe bereits erwähnt, dass
wir,
wenn der Ausgangstyp Flagge ist, nach dem Zufallsprinzip eines
der Flaggen-Down-Kostüme auswählen. Aber fürs Erste lassen wir die blaue Flagge einfach auf Null fallen. Und da der Typ immer
nur Flagge oder Tür sein wird, können
wir für die Außenteile einfach auf Null bei
geschlossener Tür umschalten . Okay, jetzt fügen wir das dem Krik Clone-Skript vor dem Block Cra Clone
of Myself Lassen Sie uns vorerst
alle Blöcke aus dem Skript „Scheck berühren“ und aus dem
Animationsskript herausnehmen Wir werden etwas später daran arbeiten. Aber zuerst wollen wir weitermachen und die Ausgänge zu den Levels hinzufügen Gehen wir für Level eins ganz
nach unten rechts. Wir möchten, dass der Ausgang so
aussieht, als
käme er von oben in
der Mitte der Box-Kachel. Und weil die
Kostüme mittig angeordnet sind, müssen
wir sie
ein bisschen genau hier positionieren. Klicken wir also hier
, um die Position zu ermitteln. Jetzt können wir
zum Setup-Skript übergehen. Fügen Sie einen Crit Clone-Block für Level eins hinzu und verwenden Sie die angeklickten
Positionswerte Und für die Typeingabe wollen
wir das Wort Flag verwenden Dann können
wir, während wir uns noch im Gottmodus befinden, auf die grüne Flagge klicken , um zu sehen, ob sie richtig
positioniert ist. Bei mir passiert allerdings
nichts,
und das liegt daran, dass ich irgendwie vergessen habe, das beim
Start als Klon-Skript aus
dem Coin-Sprite zu kopieren Start als Klon-Skript aus
dem .
Das mache ich jetzt Wenn ich erneut auf die grüne Flagge klicke, habe ich hier jetzt einen
Exit-Sprite-Clone. Die Position ist allerdings
etwas falsch, und zum Glück für Sie
habe ich mir bereits
die Mühe gemacht, habe ich mir bereits
die Mühe gemacht eine gute Position zu finden Also nehmen wir 1593
für X und vier für Y.
Da haben wir's. Okay, jetzt drücken
wir die Taste, um zu Level
zwei zu wechseln Für diesen wollen wir
ganz nach oben rechts gehen. Und wieder wollen wir es hier mittig
über der Box
positionieren. Jetzt können wir einen
CrakKline-Block für Level zwei hinzufügen. Und nehmen wir 2078 für X,
sieben, zwei, drei für Y
und Flag für Typ und Lassen Sie uns abschließend zu
Stufe drei wechseln und
nach unten rechts gehen In diesem Fall platzieren wir hier
eine Tür am Schloss
, sodass es so aussieht, als ob der Spieler das
Schloss betritt. Um die Tür zu erstellen, fügen wir hier leeren Outs-Teil
einen Crakclone-Block hinzu Und verwenden wir 2050 für X, 19 für Y und door für den Typ Und stellen wir sicher, dass es tatsächlich das Kostüm mit geschlossener Tür
verwendet. Fantastisch.
Okay, anstatt immer die blaue Flagge
für Level eins und zwei zu verwenden, wählen
wir nach dem Zufallsprinzip
entweder die blaue Flagge, die grüne Flagge, die orange
Flagge oder die gelbe Flagge Um das zu tun, könnten wir
eine Zufallszahl 1-4 bekommen. Verwenden Sie dann eine Reihe
von Wenn-Den-Blöcken , um eine Farbe basierend
auf der Zufallszahl auszuwählen. Eine einfachere und
sauberere Methode wäre jedoch, die vier Farben
in einer Variablenliste
zu speichern dann ein zufälliges
Element aus der Liste auszuwählen. Okay, lassen Sie uns dafür
zu Variablen gehen und eine neue Liste
erstellen. Nennen wir es Farben, und nur das Exit-Sprite muss
die Liste verwenden, also können wir sie nur für
dieses Sprite erstellen Kommen wir nun zum Green
Flag-Skript. Und hier werden wir die
vier Farben zur Liste hinzufügen. Aber zuerst wollen wir
sicherstellen, dass die Liste
leer ist , indem wir einen Block
„Alle Farben löschen“ einfügen. Danach fügen wir
vier ADT-Farbblöcke hinzu. Fügen wir nun Blau,
Grün, Orange und Gelb hinzu. Wenn wir jetzt auf die grüne Flagge klicken, können
wir sehen, dass die Farben zur Liste hinzugefügt
wurden. Okay, wir können die Liste jetzt ausblenden und kommen wir zum
Crick Clone-Skript Zuerst benötigen wir eine Variable
zum Speichern der Farbe eines Klons. Lassen Sie uns also ein neues erstellen. Nennen wir es Farbe. Mach es
nur für dieses Sprite und verstecke die Variable. Da die Farbvariable nun
nur für Flags gilt, müssen
wir sie nur setzen,
wenn der Typ gleich Nehmen wir also ein Set zum Blockieren, fügen es dem I-Teil
des I-Thinout-Blocks hinzu und
setzen die Farbvariable Wir wollen es auf ein zufälliges
Element aus der Farbliste setzen. Beginnen wir also damit, einen Block mit
einem der Farben eines Elements einzufügen . dann für die Eingabe der Artikelnummer Gehen
wir dann für die Eingabe der Artikelnummer zu den Operatoren, fügen einen Auswahl-Block hinzu
und wählen eine Zahl 1—4 aus. Jetzt können wir die
Farbvariable verwenden wenn wir zu einem
Flag-Down-Kostüm wechseln. Dazu können wir
die Farbe verwenden,
gefolgt von einem Unterstrich der Flagge mit unterstrichenem
Nullpunkt Lassen Sie uns also zunächst
einen verbundenen Block zum
Switch-Kostümblock hinzufügen einen verbundenen Block zum
Switch-Kostümblock Gehen wir nun zu Variablen. Verwenden Sie einen Farbblock
als erste Eingabe, und für die zweite Eingabe geben
wir underscore flag
underscore down Okay. Wenn wir auf
die grüne Flagge klicken, benutzt
Level drei immer noch
eine Tür, was gut ist. Aber wenn wir jetzt zu Level
eins wechseln und zum Ausgang gehen, wird
jedes Mal, wenn wir auf
die grüne Flagge klicken
, eine zufällige
Farbe für den Ausgang ausgewählt. Das sollte auch für
Level zwei passieren. Großartig. Im Moment müssen wir einen Level-Ausgang aktivieren wenn der Spieler
alle Münzen im Level gesammelt hat. Lassen Sie uns dazu zum Skript
Wenn ich ein Update erhalte übergehen . Im ITN-Block
vor der Animation behandeln
wir alle Aktionen, die
das Sprite
ausführen muss, und zwar
mithilfe eines benutzerdefinierten Gehen wir zu Mblocks
und erstellen einen neuen. Nennen wir es Handle Actions. Klicken Sie auf Okay und setzen Sie einen Block mit Handle-Aktionen
vor den Animationsblock Lassen Sie uns nun den
Block mit den
definierten Handle-Aktionen in einen leeren Bereich verschieben Block mit den
definierten Handle-Aktionen in einen leeren Bereich Und hier entscheiden wir, ob den Ausgang aktivieren
oder nicht. Wir wollen einen
Ausgang aktivieren, wenn er sich derzeit
im inaktiven Zustand
befindet und keine Münzen mehr im Level
übrig sind. Um das zu überprüfen, gehen
wir zuerst zur Steuerung und geben
ein Wenn ein Wenn-Block ein. Gehen
wir für die Bedingung zu den Operatoren und fügen einen UND-Block ein. Verwenden Sie dann für jede Seite einen
Gleichheitsblock. Gehen wir nun zu Variablen
und überprüfen wir, ob Status gleich inaktiv und Münzen gleich Wenn dies der Fall ist, fügen wir einen Satz zum Blockieren hinzu
und setzen den Status auf aktiv Lasst uns auch für den Ausgang zu
einem richtigen aktiven
Kostüm wechseln . Das wird natürlich
je nach Art des Ausgangs unterschiedlich sein . Gehen wir also zuerst zur
Steuerung und fügen direkt
nach dem eingestellten Statusblock einen If Then Outs-Block hinzu. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock Gehen wir dann zu Variablen und
prüfen, ob Typ gleich Flag ist. Gehen wir jetzt zu Looks und fügen jedem Teil einen
Switch-Kostümblock hinzu Denn die Flagge verwendet ihre Farbvariable, um zum richtigen Up-Zero-Kostüm zu wechseln . Gehen wir dazu
zu Operatoren und fügen dem
Switch-Kostümblock einen gemeinsamen Block hinzu. Gehen wir dann zu Variablen und verknüpfen die
Farbvariable
mit dem Unterstrich-Flag und dem Nullpunkt nach
oben Und für die Tür können wir einfach zu Door Open Zero
wechseln. Okay? Wenn also ein
Ausgang aktiv wird und der Spieler den Ausgang
berührt, wechseln
wir zum nächsten Level. Gehen wir dazu zum Skript „
Scheck berühren Spieler“. Der Exit-Sprite
hat kein Hitbox-Kostüm, also lasst uns hier den
Switch-Kostümblock loswerden Wir müssen auch nicht
den Klon löschen oder uns mit
der Z-Befehlsliste befassen, da dies
automatisch passiert , wenn wir zum nächsten Level
wechseln, und wir wollen auch
die Coins-Variable nicht ändern, sodass wir all
diese Blöcke im Block Ich dann loswerden können und
den Block I
then an die Skripte anhängen können Was die Bedingung angeht, wollen
wir allerdings nur zum nächsten Level wechseln
, wenn das Sprite
das Spieler-Sprite berührt und es sich gerade
im aktiven Zustand befindet. Gehen wir also zu Operatoren, bringen einen A-Block rein, bewegen den sich berührenden Spielerblock auf eine Seite des A-Blocks und verwenden den A-Block
als Bedingung Für die andere Seite können wir hier
ein Duplikat des Blocks Status
entspricht inaktivem Block verwenden hier
ein Duplikat des Blocks Status
entspricht inaktivem Block Aber jetzt wollen wir überprüfen,
ob der Status gleich aktiv ist. Wenn all dies zutrifft, können
wir zur nächsten
Ebene wechseln, indem wir zu Ereignissen gehen, einen Broadcast-Block einfügen und die
Zielmeldung senden Jetzt ist es tatsächlich möglich, dass dieser Block erneut ausgeführt wird, bevor der Hintergrund die Nachricht über das
Ende des Levels empfängt und zum nächsten Level wechselt. Um also sicherzugehen, dass wir die Nachricht nicht mehrfach
senden, sollten
wir auch den Exit
deaktivieren. Gehen wir dazu zu Variablen,
fügen einen Satz zum Blockieren hinzu und
setzen den Status wieder auf inaktiv. Lassen Sie uns jetzt weitermachen und es schaffen. Wenn der Ausgang also eine Flagge ist, wird
sie zwischen
ihren beiden Kostümen animiert Dazu müssen wir natürlich
zum Animationsskript gehen. Wir wollen nur animieren,
wenn der Ausgang eine Flagge ist und er sich gerade
im aktiven Zustand befindet Gehen wir also zunächst
zur Steuerung über und wickeln wir hier einen ITN-Block um
all diese Blöcke Dann füge alles
zum Skript hinzu. Gehen
wir für die Bedingung zu Operatoren, fügen UND-Block ein und fügen dann auf jeder Seite einen
Gleichheitsblock Gehen wir nun zu Variablen
und prüfen, ob Typ gleich
Flag und Status gleich aktiv ist Flag und Status gleich Als Nächstes kehren
wir für den
Switch-Kostümblock zu Operatoren zurück und verwenden einen anderen Join-Block
als ersten Eingang
für den aktuellen Block als ersten Eingang
für den aktuellen Gehen wir nun zu den Variablen und um das aktuelle Kostüm
zu erhalten, wollen
wir die Farbvariable
mit
dem Unterstrich verbinden, wobei der Unterstrich
nach oben zeigt, dann den Boden eines Anim-Frames Eine Animationsgeschwindigkeit von
0,15 sollte gut sein. Die Animation hat jedoch
nur zwei Frames. Lassen Sie uns also einen
Anime-Frame mit zwei modifizieren. Okay, um es
einfacher zu machen, alles zu testen, gehen
wir zum Code
für den Coin-Sprite Und im Setup-Skript entfernen
wir alle Create
Clone-Blöcke für Level eins und verwenden nur den letzten
hier unten Und lassen Sie uns
das für alle Level tun, indem wir alle
Crate-Clone-Blöcke entfernen und nur den untersten verwenden Diese Münzen werden ziemlich
nah an den Ausgängen sein. Lass uns jetzt das Spiel starten. Im Moment benutzt der Ausgang immer noch sein
inaktives Kostüm, und wenn wir es berühren,
passiert nichts, weil wir immer noch eine Münze im Level
haben. Aber wenn wir die Münze einsammeln, wechselt
der Ausgang zur
wehenden Animation, wenn es sich um eine Flagge handelt, und wenn
wir jetzt den Ausgang berühren, wechseln
wir zum nächsten
Level. Sorgen wir dafür, dass sich auch die Tür für
Level drei öffnet. Cool. Okay, jetzt, immer noch
im Coin-Sprite-Code, lassen Sie uns jetzt nur die
erste Münze für jedes Level erstellen Wenn wir das Spiel starten
und zum ersten Level gehen, sobald wir die Münze gesammelt haben, der Ausgang zwar aktiv, aber der Spieler kann das
nicht wissen , bis er zu den Ausgängen geht Für ein besseres Spielerlebnis, insbesondere für neue Spieler, sollten
wir den Spieler darüber informieren , dass der Ausgang aktiv geworden ist Dazu können wir das Spiel
einfrieren, der Kamera zum Ausgang
scrollen, es
aktivieren, dann
zurück zum Spieler scrollen und das Spiel fortsetzen. Daran werden wir
in der nächsten Lektion arbeiten.
94. Auto-Scrollen implementieren: Um die Kamera vorübergehend zum Level-Ausgang zu
scrollen , wenn sie zum
ersten Mal aktiviert wird, müssen
wir im Grunde den Rest des Spiels
pausieren Andernfalls
könnte der Spieler von
einem Feind oder etwas anderem getötet werden ,
während er sich außerhalb des Bildschirms befindet. Dazu müssen wir den aktuellen
Stand des Spiels
verfolgen. Lassen Sie uns zunächst eine neue Variable
erstellen. Nennen wir es Game State und
machen es für alle Sprites. Der Spielstatus beeinflusst, was während der Spielschleife
passiert. Gehen wir also zum Code
Wenn ich das
Start-Level-Skript
im Hintergrund erhalte . Bevor die Spielschleife beginnt, bringen
wir ein Set zum Blockieren ein. Und lassen Sie uns den
Spielstatus auf Running setzen. Dies wird der normale
Status für das Spiel sein. Bei jeder Iteration
der Spielschleife wollen
wir
all diese Nachrichten nur dann senden, wollen
wir
all diese Nachrichten nur dann senden wenn sich das Spiel im laufenden Modus
befindet. Wir werden verschiedene Dinge
für die anderen Staaten tun. Gehen wir also zuerst zu Control, schnappen uns einen ITN-Block und wickeln den I-Teil um
alle Broadcast-Blöcke Nehmen wir nun einen dünnen Block und legen ihn in den Outs-Teil Wir werden diesen verwenden, wenn sich das Spiel im
Auto-Scroll-Status befindet, was der
Fall sein wird, wenn die Kamera automatisch zu den
Ausgängen scrollt Okay, also für beide Bedingungen gehen
wir zu den Operatoren und bringen ein paar gleiche Blöcke rein Gehen wir dann zu Variablen
und überprüfen
wir für den Block Ich denke, ob der
Spielstatus gleich läuft für den ITN-Block überprüfen, Lassen Sie uns für den ITN-Block überprüfen, ob der Spielstatus dem Wert Auto Dash
Scroll entspricht Alles, was wir im Autoscroll-Status tun wollen ,
ist
die Kamera zu scrollen Da dies passiert, wenn wir die Nachricht mit Update
3
erhalten, die einzige Nachricht, die wir hier
übertragen möchten ist
die einzige Nachricht, die wir hier
übertragen möchten, die Nachricht nach
Update 3. Lassen Sie uns hier also ein Duplikat des Blocks mit
dem
dritten Broadcast-Update verwenden . Okay, jetzt gehen wir zum Exit-Sprite-Code. Im Handle-Action-Skript vor dem Aktivieren des Exits möchten
wir
vor dem Aktivieren des Exits in den
Auto-Scroll-Spielstatus wechseln Fügen wir also
oben im I ein Set zum Blockieren hinzu,
blockieren wir dann hier und setzen den Spielstatus auf Auto Dash Scroll. Dadurch wird alles
außer dem Scrollen eingefroren. Als Nächstes scrollen wir mit der
Kamera zum Ausgang, aktivieren den Ausgang,
scrollen dann zurück zum Spieler
und setzen das Spiel fort Um die Kamera an
eine bestimmte Position zu scrollen, müssen wir
eigentlich nur
den
Fokuspunkt der Kamera auf diese Position setzen . Und da wir das in diesem Sprite und in einigen
anderen Sprites ein
paar Mal machen werden , gehen
wir zu Meine Blöcke und geben den Namen Benutzerdefinierter Block als Quelltext Geben wir zuerst
Scroll to X Doppelpunkt ein, fügen eine Eingabe von X hinzu, fügen eine Bezeichnung mit Y-Dolon dann eine Eingabe von
Y hinzu und klicken auf Okay Und lassen Sie uns weitermachen und dem Handle-Action-Skript
direkt nach
dem eingestellten
Spielstatus-Block einen Scroll-to-Block
hinzufügen Handle-Action-Skript
direkt nach
dem . Die Position, zu der wir scrollen
wollen , ist die
Weltposition des Ausgangs. Gehen wir also zu Variablen und verwenden X- und
Y-Variablenblöcke als Eingaben. Lassen Sie uns nun den
definierten Block mit
zwei Scrollen in einen leeren Bereich verschieben . Und hier stellen wir Brennpunkt
der Kamera
mit den X- und Y-Eingängen ein. Lassen Sie uns dazu zwei Sets mit
zwei Blöcken einfügen. Stellen Sie dann focal x auf den X-Eingang und focal
Y auf die Y-Eingänge. Jetzt müssen wir jedoch
verhindern, dass das
Handle-Action-Skript seine verbleibenden
Blöcke
ausführt, bis die Kamera mit dem
Scrollen zu den Ausgängen fertig ist Dazu können wir erzwingen, dass
das Scroll-to-Skript
kontinuierlich ausgeführt wird, bis
sich
die Kamera auf dem Teil der
Ebene eingenistet hat , der die Ausgänge enthält Zu diesem Zeitpunkt befindet sich die
Position der Ausgänge innerhalb einer
halben Stufenbreite und einer
halben Bühnenhöhe von
der Scroll-Position entfernt Okay, um zu erzwingen, dass das
Scroll-to-Skript kontinuierlich ausgeführt wird, gehen
wir zu Control und fügen am Ende des Skripts
einen Forever-Block Fügen wir nun dem
Forever-Block einen I Then-Block hinzu. Fügen Sie dann einen weiteren
I-Thin-Block innerhalb dieses Blocks hinzu. Beim ersten Block von I Thin werden
wir prüfen, ob der
Abstand zwischen der X-Eingabe und dem Scroll-X
innerhalb einer halben Stufenbreite liegt. Gehen wir also zunächst zu den Operatoren und geben
einen Block kleiner als ein. Um die Entfernung zu ermitteln, müssen
wir nur die
X-Eingabe nehmen, die in diesem Fall die Weltausstellung
des Ausgangs ist, und
sie von Scroll X subtrahieren. Und wir wollen, dass die Entfernung
eine positive Zahl ist, also erhalten wir den
absoluten Wert davon Okay, nehmen wir also einen Abs-Block und platzieren ihn auf der linken
Seite des Blocks, der kleiner als Dann legen wir einen
Subtraktionsblock in den Absv-Block. Gehen wir nun zu Variablen
und prüfen, ob der absolute
Wert von scroll x minus
der X-Eingabe weniger als 240
oder die Hälfte der Bühnenbreite beträgt Für den gesamten Block wollen
wir vor den Y-Werten eine ähnliche
Prüfung durchführen. Lassen Sie uns hier also zunächst ein Duplikat
des Blocks „Weniger als“ verwenden . Lassen Sie uns dann überprüfen, ob der absolute
Wert von Scroll Y minus der Y-Eingabe weniger als 180
oder die Hälfte der Bühnenhöhe beträgt. Ordnung. Und wenn
diese beiden Bedingungen zutreffen, können
wir zur Steuerung gehen, einen Stopp-Block einbauen
und das Script beenden. Dadurch wird der
Forever-Block nicht mehr ausgeführt, sodass das
Handle-Action-Skript seine verbleibenden Blöcke weiter ausführen kann. Außerdem ist es wichtig, dass
wir die Option „
Ohne Bildschirmaktualisierung ausführen“
für das Scroll-to-Skript nicht aktivieren. Wenn wir es ankreuzen würden, würde
es tatsächlich
die gesamte Spielschleife einfrieren und es würde
kein Scrollen stattfinden Okay, also bei Handle-Aktionen wollen
wir, nachdem wir zum Ausgang gescrollt haben, nachdem wir zum Ausgang gescrollt haben, den Ausgang aktivieren und zum
aktivierten Kostüm wechseln Dann wollen wir zurück zum Spieler-Sprite scrollen und
das Spiel wie gewohnt
weiterspielen Um zum Spieler zu scrollen, gehen
wir zu MI-Blöcken und platzieren unter
all diesen anderen Blöcken einen Scroll-zu-Block. Achten Sie
dabei darauf, dass er sich immer noch
innerhalb des Wenn-Dann-Blocks Gehen wir nun zur Erkennung über und verwenden für jeden Eingang
eine Hintergrundnummer von
Stufenblöcken. Statt Stage wollen
wir den Player-Sprite verwenden. Und für den ersten wollen
wir
statt der Position X des Spielers wählen,
was die Variable X der
Spieler-Sprites ist In ähnlicher Weise nehmen
wir für die zweite Variante Y des Spielers Danach
gehen wir zu Variablen, einen Satz
zum Blockieren hinzu und
setzen den Spielstatus auf Running. Ordnung, lassen Sie uns den Gottmodus
ausschalten falls er noch aktiv ist, und
dann das Spiel starten. Wenn wir jetzt die Münze einsammeln, scrollt
sie zwar zum Ausgang dann zurück zum Spieler,
aber das geht so schnell dass wir nicht wirklich
erkennen können, was vor sich geht. Um das zu beheben, können wir einige Pausen
zwischen den Ereignissen und
dem Handle-Action-Skript
hinzufügen zwischen den Ereignissen und
dem Handle-Action-Skript Gehen wir dazu zur Steuerung und verwenden
einige Gewichtsblöcke Platzieren wir einen direkt vor
dem ersten Scrollen, um zu blockieren, und einen
weiteren direkt danach. Warten
wir für den ersten 0,2 Sekunden und
für den zweiten 0,5 Sekunden. Fügen wir nun eine Wartezeit zum Blockieren vor und nach dem
anderen Scrollen zum Blockieren hinzu. Und lassen Sie uns jeweils 0,5 Sekunden
warten. Und lass es uns versuchen. Viel besser. Jetzt
können wir tatsächlich sehen, wie der Ausgang aktiv wird bevor er zum Spieler
zurückscrollt Ordnung, also können wir jetzt zu
Variablen gehen und die
Spielstatusvariable verstecken Und als Nächstes
wechseln wir nicht sofort zum nächsten Level,
wenn wir durch einen Ausgang gehen, sondern wechseln wir nicht sofort zum nächsten Level,
wenn wir durch einen Ausgang gehen, wechseln
zwischen den Levels,
indem
wir zuerst den
Bildschirm schwarz werden lassen und
dann zum nächsten Level übergehen
95. Einen Bildschirmübergang erstellen: die Bühne
bei Bildschirmübergängen schwarz erscheinen zu lassen, verwenden
wir hier das
Blackout-Sprite Das einzige Kostüm für
den Blackout-Sprite ist ein großes schwarzes Quadrat, das
den gesamten
Bühnenbereich der Leinwand bedeckt den gesamten
Bühnenbereich der Leinwand Okay, um mit
der Codierung des Blackout-Sprites zu beginnen, gehen
wir zunächst in
den Code für eines
der anderen Sprites ein, an denen wir bisher
gearbeitet haben,
und kopieren wir das Sortier- und
Layer-Skript in das Layer-Skript Dann gehen wir zum Blackout-Sprite-Code. Da das Blackout-Sprite
kein leeres Kostüm hat, wollen
wir sicherstellen, dass
es zu Beginn des Spiels versteckt wird Gehen wir also zu den Events und bringen einen Block rein, auf den die grüne
Flagge geklickt wurde Gehen Sie dann zu Looks und fügen
Sie einen Versteckblock hinzu. Als Nächstes müssen wir das Sprite in den Ebenen
sortieren , wenn es
die Setup-Nachricht erhält Gehen wir also zurück zu den Ereignissen,
fügen einen W I
Receive-Block und Receive-Setup hinzu Gehen wir nun zu M-Blöcken, fügen einen Block zur Sortierung nach Ebenen hinzu, gehen wir
dann zu Variablen und verwenden Overlay Z
für die Eingaben in Z-Reihenfolge Overlay Z hat die
höchste Z-Reihenfolge, sodass das Sprite
über alles andere gestellt wird Okay, was
das Ausblenden des Bildschirms auf Schwarz angeht, machen
wir das immer dann, wenn das Sprite die Meldung „ verblassen
“
erhält Gehen wir also zurück zu den Ereignissen und
bringen einen weiteren hinzu, wenn
ich den Block erhalte Und lass uns eine neue
Nachricht namens Fade to Black erhalten. Und hier wollen
wir zuerst das Sprite zeigen. Also lass uns zu Looks gehen und einen Showblock
reinbringen. Wir wollen dann dafür sorgen, dass das
Sprite
über etwa zehn Frames von vollständig transparent zu vollständig undurchsichtig Dazu fügen wir zunächst
einen festgelegten Effekt
in den Block ein und setzen den
Ghost-Effekt auf 100 Gehen wir nun zur Steuerung, einen Block mit zehn Wiederholungen hinzu, gehen
dann zurück zu Looks und fügen Wiederholungsblock
einen
blockweisen Änderungseffekt hinzu. Lassen Sie uns den
Ghost-Effekt um minus zehn ändern. Als Nächstes machen
wir, um das Sprite wieder transparent erscheinen zu
lassen, im Grunde das Gegenteil
des Codes „Fade to Black Und das tun wir, wenn das Sprite
die
Fade-In-Nachricht erhält Wir werden Fade In verwenden
, weil es so
sein wird , als würde das Spiel in das
Level übergehen Okay?
Lassen Sie uns also zuerst das Skript „
Wenn ich
FadeTo Black erhalte und eine neue
Nachricht namens Fade-In erhalten Das passiert, wenn es schwarz
geworden ist,
also sollte
das Sprite schon zu also sollte
das Sprite Daher müssen wir für diesen Block keinen Show-Block
verwenden Für den eingestellten Ghost-Effekt-Block setzen
wir ihn auf Null, um
sicherzustellen, dass er vollständig sichtbar ist. Das sollte schon der Fall sein wenn der Sprite schwarz geworden ist, aber es tut nicht weh, ganz sicher zu sein Im Wiederholungsblock wollen
wir
den Ghost-Effekt diesmal
um positive zehn ändern um positive zehn Schließlich, nach dem Wiederholungsblock, fügen wir einen Versteckblock ein. Und das sollte es sein. Lassen Sie uns diese
Skripte nun
tatsächlich nutzen. Gehen wir dazu zum
Code für den Hintergrund. Wir wollen den Bildschirm zu Beginn
jedes Levels
schwarz werden lassen. also oben im
Start-Level-Skript Gehen
wir also oben im
Start-Level-Skript zu den Ereignissen, einen Broadcast-Block hinzu
und schalten die Übertragung auf Schwarz. Jetzt wollen wir
dem Blackout-Sprite auch
genügend Zeit geben, um seine Animation zu beenden, bevor wir Einrichtung
und dem Start der Spielschleife
fortfahren Gehen wir also zu Control und fügen
direkt nach einen Warte-Block für 1 Sekunde dem Senden von
Fade to Black
einen Warte-Block für 1 Sekunde hinzu Und lassen Sie uns auch
1 Sekunde warten , bevor wir
die Nachricht senden. Als Nächstes wollen
wir, nachdem wir
alle Sprites eingerichtet haben und bevor wir den Game-Loop
starten, wieder einblenden Gehen wir also zu den Ereignissen, fügen direkt
nach dem Broadcast-Setup-Block einen Broadcast-Block hinzu
und schalten die Übertragung ein Und dafür müssen wir auch
eine Pause einlegen. Gehen wir also zur Kontrolle. Fügen Sie nach dem Einblendblock der
Übertragung einen Warteblock hinzu, und eine Gewichtung von 0,5
Sekunden sollte gut sein. Okay, wenn wir
das Spiel jetzt starten, können
wir immer noch
das Spieler-Sprite
sehen der Bildschirm schwarz wird. Der Grund dafür ist
, dass die Ebenen erst
sortiert werden , wenn wir
die Setup-Nachricht senden Das bedeutet, dass das
Blackout-Sprite noch nicht auf
die vordere Ebene gebracht wurde, als wir die Meldung „Fade
to Black“ zum ersten Mal gesendet Um das zu beheben, gehen wir zum
Blackout-Sprite-Code. im Faye to Black-Skript sicherzustellen, dass sich das Sprite auf der vorderen Ebene befindet , bevor
der Bildschirm
verdunkelt wird, können
wir zu Looks gehen und oben in
den Skripten einen Block „Gehe
zur vorderen Ebene“ hinzufügen den Skripten einen Block „Gehe
zur vorderen Ebene Jetzt sollte es auch das Sprite des
Spielers abdecken. Nett. Eine Sache, die
irgendwie nervig ist, ist, dass das Spieler-Sprite nach dem
Wiedereinschalten
kurz im Idle Zero-Kostüm anfängt , bevor es zu
Boden fällt Wir wollen nur im
Idle Zero-Kostüm beginnen , wenn
Godme aktiviert Andernfalls sollten wir mit dem Herbst-Zero-Kostüm beginnen
. Gehen wir dazu zum
Code für die Spieler-Sprites. am Ende
des Setup-Skripts Gehen
wir am Ende
des Setup-Skripts zur Steuerung und
fügen einen Block I then outs Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen
und überprüfen wir, ob der
Gottmodus gleich Null Gehen wir jetzt zu Looks und fügen jedem Teil
einen
Switch-Kostümblock hinzu Wenn der Gott-Modus ausgeschaltet ist, wollen
wir zum Herbst-Zero-Kostüm wechseln. Andernfalls
wechseln wir zu Idle Zero. Wenn wir das Spiel jetzt
mit ausgeschaltetem Gott-Modus ausführen, startet
der Spieler-Sprite
im Herbst-Zero-Kostüm Aber wenn wir Godmde einschalten
und es erneut ausführen, wird
es im
Idle Zero-Kostüm gestartet Okay, nur um sicherzugehen, dass der Bildschirmübergang auch
funktioniert, wenn wir ein Level beendet haben, sammeln
wir die Münze gehen
dann durch Fantastisch. Okay, wenn Sie also in den Stufen
zwei und drei
weitermachen, wird
es Sperren geben, die den Spieler
daran hindern
, auf bestimmte
Teile des Levels zuzugreifen. Um die Schlösser zu öffnen, muss
der Spieler
einen oder mehrere Schlüssel
im Level einsammeln . werden wir daran arbeiten,
die Schlösser und Schlüssel
hinzuzufügen nächsten Lektion werden wir daran arbeiten,
die Schlösser und Schlüssel
hinzuzufügen.
96. Schlösser und Schlüssel hinzufügen: Wir schauen uns hier die Kostüme
für das Lock-Sprite Die Namen ähneln den Kostümnamen für
die
Level- und Umgebungs-Sprites,
wobei die Levelnummer, die Zeilen- und Spaltenindizes
durch Bindestriche getrennt Der einzige Unterschied den Lock
Sprite-Kostümnamen besteht darin, dass sie einen zusätzlichen Bindestrich haben,
gefolgt von einer Taste wie blauem Schlüssel,
grünem Schlüssel und orangefarbenem Schlüssel zu
den Lock
Sprite-Kostümnamen besteht darin, dass
sie einen zusätzlichen Bindestrich haben,
gefolgt von einer Taste wie blauem Schlüssel,
grünem Schlüssel und orangefarbenem Schlüssel. Diese entsprechen den Kostümnamen
im Schlüsselsprite
und geben an, welcher Schlüssel zum Öffnen des
Schlosses erforderlich ist Ebenso wie in der
Umgebung Sprite richten die
Sprite-Objekte mit dem Schloss auf für
den Teil des
Levels, in dem Um also die
Lock-Sprite-Objekte ins Spiel zu bringen, müssen
wir im Grunde genau die gleichen Dinge tun ,
die wir
für die Umgebungsobjekte getan haben Gehen wir also zunächst
in den
Sprite-Code der Umgebung und kopieren alle Skripte in das Lock-Sprite,
beginnend mit
den beginnend mit
den Gehen wir dann zum
Lock-Sprite-Code und Jetzt werden wir ein
paar Anpassungen vornehmen. Erstens: Wenn ich
als Klon-Skript anfange, können
wir es mit
Umgebung Z in
den Ebenen sortieren , wenn wir wollen, aber ich denke, es ist
sinnvoller, Level Z zu verwenden. Als Nächstes haben wir im Generate-Skript, nachdem
wir einen Kostümnamen aufgeteilt haben, nun vier Elemente wobei das vierte
Element der Schlüssel Gehen wir also zunächst zu Variablen und erstellen eine
neue Variablen für den Schlüssel Nennen wir es Schlüssel und machen
es nur für dieses Sprite. Und lass uns die Variable verstecken. Fügen wir nun vor dem
Block Create Clone ein weiteres
Set zum Blockieren zum Generate-Skript und setzen wir die Schlüsselvariable. Für den Wert
wollen wir ein
Blockelement einfügen und das vierte Element der Liste
der Zeichenkettensegmente abrufen. Und das sollte im Moment alles sein, was wir tun
müssen. Also lass uns das Spiel starten. Und in Level zwei, wenn wir in die
Nähe von oben rechts gehen, sollten
wir einige blaue Schlösser sehen jetzt einen Teil des Levels blockieren. Und wenn wir zur dritten Ebene gehen, sollten
hier
oben
einige orangefarbene und rechts einige grüne
Schlösser hier
oben
einige orangefarbene und rechts einige grüne sein. Cool. Im Moment können wir allerdings,
wenn wir den Gottmodus ausschalten, direkt
durch die Schleusen springen. Das ist nicht sehr effektiv. Stattdessen wollen wir, dass sie den Spieler
daran hindern, durchzukommen. Gehen wir dazu zum
Code für den Player Sprite
und suchen wir den Scheck, der das feste
Symbol berührt. Und hier
setzen wir nicht nur berührend fest auf eins, wenn wir
das Level-Sprite berühren, sondern auch auf
eins, wenn wir
das Lock-Sprite berühren Und das stelle ich
dir als Herausforderung vor. das Video jetzt an
und sorge dafür, dass das Berühren des Levels oder des
Lock-Sprites eine Kollision auslöst Okay, um das zu tun, gehen
wir zuerst zu den Operatoren und fügen einen
OR-Block hinzu Platzieren wir den
Touch-Level-Block auf einer Seite. Dann verwenden wir ein Duplikat
für die andere Seite, ändern es in
Touchlock und verwenden all das
als Bedingung. Jetzt wirken die Schlösser
quasi wie eine Mauer, die den Spieler
daran hindert, hindurchzugehen. Ordnung, jetzt müssen wir
die Schlüssel hinzufügen , damit der Spieler die Schlösser entriegeln
kann Dafür verwenden
wir natürlich den Schlüssel Sprite. Der Code für das
Key-Sprite wird Code für das Coin-Sprite
ziemlich ähnlich Zu Beginn können wir also zum
Coin-Sprite gehen und einige Skripte
kopieren. Lassen Sie uns zunächst eine
Position kopieren und in Ebenen sortieren. Erstellen Sie einen Klon und überprüfen Sie, ob Sie den Spieler
berühren. Der Schlüssel Sprite hat
keine Animation, also brauchen wir
das Animate-Script nicht Als Nächstes kopieren wir, wann
ich Update eins erhalte, wann ich Update drei erhalte und wann ich als Klon starte Auch hier gilt: Da wir das Sprite nicht
animieren, benötigen
wir das Skript „Wenn ich Update 2
erhalte“ nicht Lassen Sie uns abschließend das Skript mit
der grünen Flagge
und das Setup-Skript kopieren der grünen Flagge
und das Setup-Skript Und wenn wir schon dabei sind,
lassen Sie uns weitermachen und alle
Crack-Clone-Blöcke wieder in
das Setup-Skript
einfügen . Gehen wir nun zum
Code für das Schlüssel-Sprite über. Okay, also im Create Clone
Script für das Key-Sprite müssen
wir auch angeben, müssen
wir auch angeben welches Kostüm für den Klon
verwendet werden soll wir dazu mit der rechten Maustaste auf den definierten Block
und wählen Bearbeiten Hier fügen wir ein
Semikolon vom Typ Etikett, Kostüm, Doppelpunkt hinzu. Fügen Sie dann eine Eingabe namens
Kostüm hinzu und klicken Sie auf Okay. Jetzt können
wir im Switch-Kostümblock die
Kostümeingabe als Kostüm verwenden. Wir wollen nicht
mit dem Münzzähler herumspielen, also können wir den Block mit den
Wechselmünzen hier loswerden. Und weil das
Key-Sprite keine Animation hat, können
wir auch hier den eingestellten
Anime-Frame-Block loswerden Wir können auch zu Variablen gehen, rechten Maustaste auf die
Anime-Frame-Variable klicken und Als Nächstes gibt es im Skript, das Spieler mit dem Scheck
berührt, das Schlüsselsymbol
kein Hip-Box-Kostüm hat Lassen Sie uns
also den
Switch-Kostümblock loswerden Wir wollen den
Klon löschen, aber vorher wollen
wir dem Lock-Sprite
mitteilen, wollen
wir dem Lock-Sprite welcher Schlüssel gesammelt wurde Dazu speichern wir Kostümnamen
des Clone
in einer globalen Variablenliste Dann werden wir
die Nachricht senden. Die Lock-Sprite-Klone können
dann die Nachricht empfangen und anhand der Liste
überprüfen, ob ihr benötigter Schlüssel gesammelt
wurde In Ordnung, also lassen Sie uns zuerst eine Variablenliste
erstellen. Nennen wir es gesammelte Schlüssel
und machen es für alle Sprites. Wir wollen sicherstellen, dass die Liste zu Beginn
jedes Levels
leer ist Beginn
jedes Levels
leer Kommen wir also
zum Setup-Skript
und fügen den Block „Alle
gesammelten Schlüssel löschen“ ein. Wir müssen die
Listenelemente nur einmal zu
Beginn eines Levels löschen . Also machen wir es, nachdem der Name des Kostüms, wenn nicht
gleich einem leeren Block Auf diese Weise löscht nur das originale Schlüssel-Sprite die Liste Kehren wir nun zum Skript „
Check Touching Player“ zurück. Wenn wir den Spieler berühren, fügen wir als Erstes
den Namen
des Klonkostüms zur Liste
der gesammelten Schlüssel Fügen wir dazu eine
Anzeige in den Block Keys Collected ein. Gehen Sie dann zu Looks, verwenden Sie einen benutzerdefinierten Nummernblock für die Eingabe und ändern Sie
ihn in einen Summennamen Danach
senden wir eine Nachricht. Gehen wir also zu Veranstaltungen, fügen einen Broadcast-Block hinzu und senden wir
eine neue Nachricht, die wir als gesammelten Schlüssel bezeichnen können. Okay, und bevor wir
die Nachricht mit dem gesammelten Schlüssel
im Lock-Sprite bearbeiten , lassen Sie uns weitermachen und
die Schlüssel zu den Levels hinzufügen Kommen wir zunächst
zum Setup-Skript. Wir werden nur Schlüssel und Schlösser
in den Stufen zwei und drei haben. Lassen Sie uns hier Level
gleich eins auf
Level gleich zwei ändern hier Level
gleich eins auf
Level gleich zwei Lassen Sie uns nun das I-Level hier herausziehen, den inneren
Wenn-Dann-S-Block
loswerden
und ihn durch das
I-Level
gleich drei Block ersetzen Und lassen Sie uns auch
die Cratline-Blöcke loswerden , damit Schlüssel
nicht an den falschen Positionen platziert werden Okay, lass uns jetzt das Spiel starten. Schalte den Gottmodus ein und
wechsle zu Level zwei. Und lass uns
auf die rechte Seite des Levels in der Nähe der Mitte gehen. Wir platzieren den Schlüssel
ungefähr hier
und wir wollen, dass es ein blauer Schlüssel ist,
damit er zu den Schlössern passt. Okay, gehen wir
zu M-Blöcken und bringen einen
Crack-Clone-Block für Level zwei rein, und ich verwende 1948
für X, 511 für Y.
Und für das Kostüm geben
wir die blaue Unterstrichtaste Wenn wir erneut auf die
grüne Flagge klicken, sollten
wir jetzt die blaue Taste sehen Und wenn wir sie berühren, verschwindet
sie und blaue Schlüssel wird zur Liste
der gesammelten Schlüssel hinzugefügt. Okay? Wechseln wir jetzt
zu Stufe drei. Dieses Level wird zwei Schlüssel haben. Für den ersten
gehen wir hier ein bisschen runter. Wir platzieren ungefähr hier einen orangefarbenen
Schlüssel. Also lasst uns einen
Klonblock in der Kiste für Level drei hinzufügen und nehmen wir
negative 130 für X,
270 für Y und eine orangefarbene
Unterstrichtaste für das Sorgen wir dafür, dass er erscheint
und dass wir ihn einsammeln können. Cool. Gehen wir jetzt ein bisschen
nach rechts. Wir werden
gleich hier einen grünen Schlüssel anbringen. Lassen Sie uns also einen weiteren Cric-Clone-Block
für Level drei hinzufügen Dann nehmen wir eins,
drei, fünf, fünf für X,
90 für Y und die grüne
Unterstrichtaste für das Stellen wir sicher, dass es funktioniert. Und wenn wir
zum orangefarbenen Schlüssel zurückkehren und ihn ebenfalls
einsammeln, sollten
beide Schlüssel in der Liste auftauchen. Ordnung, jetzt können wir zu
Variablen gehen und die Liste der gesammelten
Schlüssel ausblenden. Alles, was wir jetzt
tun müssen, ist zum Lock-Sprite-Code zurückzukehren und
die Nachricht
mit dem
gesammelten Schlüssel zu Lock-Sprite-Code zurückzukehren und
die bearbeiten Gehen wir also zuerst zu den Events, geben einen Block W I receive ein
und erhalten den Schlüssel gesammelt Was wir hier tun, ist überprüfen, ob die Liste der gesammelten Schlüssel ein Element
enthält, das
dem Wert der Schlüsselvariablen
clones entspricht dem Wert der Schlüsselvariablen
clones Ist dies der Fall,
unterbrechen wir das Gameplay, scrollen mit der Kamera zu den Schlössern, blenden die Sperren aus, scrollen
dann zurück zum Player
und setzen das Gameplay fort Okay,
lassen Sie uns zunächst zu Control gehen und
ein I und dann einen Block hinzufügen. Um zu überprüfen, ob die
Liste der gesammelten
Schlüssel den Wert der Schlüsselvariablen enthält, können
wir zu Variablen
gehen, einen
Block mit den
gesammelten Schlüsseln einfügen und einen
Schlüsselblock als Eingabe verwenden. Als Nächstes fügen wir dem ITN-Block ein
Set zum Blockieren hinzu und setzen
den
Spielstatus auf automatisches Scrollen Wie ihr euch vielleicht erinnert, wird dadurch alles
außer dem Scrollen
eingefroren Und jetzt müssen wir zum aktuellen Lock-Klon scrollen
. Im Moment haben wir
jedoch nicht das Scroll-to-Skript und
den Lock-Sprite-Code Also können wir zuerst
zum Exit-Sprite gehen und das Scroll-to-Skript
in das Lock Sprite kopieren Dann geh zurück zum Lock Sprite. Nachdem wir
den Spielstatus festgelegt und wenn ich den
Schlüssel gesammelt habe, gehen
wir zu MyBlocks und
bringen einen Scroll-Two-Block hinein. Und für die Eingaben gehen
wir zu Variablen und fügen einen X-Block und einen Y-Block hinzu Gehen wir auch zur Steuerung und fügen einen Warteblock sowohl vor als auch
nach dem Scroll-to-Block hinzu. Warten
wir für den ersten 0,2 Sekunden und für den zweiten Fall 0,5 Sekunden. Lex wird den Klon ausblenden. Um das zu tun, lassen Sie uns einen
Block mit zehn Wiederholungen einbauen. Dann gehen wir zu Looks, fügen dem Wiederholungsblock einen blockweisen Änderungseffekt hinzu und ändern
den Ghost-Effekt um zehn. Nachdem wir den Klon ausgeblendet
haben, scrollen wir zurück zu
den Player-Sprites Gehen wir also zu Ma Blocks und bringen eine weitere
Schriftrolle zum Block hinein Gehen wir für die Eingaben zur Sensorik und geben Anzahl der Stufenblöcke in den Hintergrund ein. Statt Stage
wollen wir Player verwenden. Dann holen wir uns die
X-Variable für die
erste und die Y-Variable
für die zweite. Gehen wir auch zur
Steuerung und warten 0,5 Sekunden vor und
nach dem Scrollen, um zu blockieren. Danach können wir zu Variablen
gehen, ein Set zum Blockieren hinzufügen und den Spielstatus auf Running setzen. Jetzt
müssen wir nur noch den Klon löschen,
aber das bedeutet auch, dass wir ihn aus der
Z-Orderliste
entfernen müssen . Lassen
Sie uns also zuerst einen
Block löschen und ihn
in die Z-Orders-Liste umwandeln. Für die Eingabe fügen wir die Artikelnummer eines Blocks verwenden
dabei auch die Z-Bestellliste. Beim Sortieren in den Ebenen verwenden
wir Ebene Z. Verwenden wir
also einen Block der Ebene Z
als Eingabe für die Artikelnummer. Dadurch wird eines der Elemente der
Z-Reihenfolge aus der Liste gelöscht, wodurch die
Ebenen in Schach gehalten werden. Schließlich können wir zu Control gehen und
diesen Klonblock einfügen oder löschen. Bevor wir das alles versuchen, haben
wir ein kleines Problem. Im generierten Skript wir die Schlüsselvariable
für das ursprüngliche Sprite fest,
die auf den
nächsten Klon übertragen wird, den wir erstellen Und weil das
ursprüngliche Sprite auch die Nachricht mit dem
gesammelten Schlüssel erhält, findet
es seinen Schlüssel möglicherweise in der Liste und versucht, auch zu sich selbst zu
scrollen Um das zu verhindern, könnten
wir das Script beenden, falls das Sprite
das leere Kostüm benutzt Aber für einen einfacheren Weg kommen
wir zum
Setup-Skript Gehen wir unten zu Variablen und fügen
einen Satz hinzu, der blockiert werden soll. Und lassen Sie uns die
Schlüsselvariable auf etwas setzen , das niemals zur Liste
der gesammelten Schlüssel hinzugefügt wird. Das könnte Null oder deine Mutter sein, aber ich nehme
den leeren Wert. Damit
wird sichergestellt, dass
das ursprüngliche Sprite seinen Schlüsselwert nie in der Liste
findet, weil nur das ursprüngliche Lock-Sprite den Block I Then überwindet und weil wir
das tun ,
nachdem wir alle Klone generiert und weil wir
das und weil wir
das seinen Schlüsselwert nie in der Liste
findet In Ordnung, jetzt probieren wir es
aus. Ich bin gerade in Level drei, und wenn ich hier den
orangefarbenen Schlüssel sammle, scrollt
er bis zu
den orangefarbenen Schlössern, blendet sie aus und
scrollt dann zurück zum Spieler Ich überprüfe auch den
grünen Schlüssel. Aber zuerst
schalte ich diesmal den Gottmodus aus. Ausgezeichnet. Okay, als Nächstes werden
wir anfangen, das Spiel wirklich unterhaltsam zu gestalten, indem wir den Levels
einige Feinde hinzufügen.
97. Den Schneckenfeind hinzufügen: Der erste Feind, den wir
dem Spiel hinzufügen werden , ist der
Schneckengeist hier. Wenn wir uns seine Kostüme
ansehen, hat
es eine
Bewegungsanimation mit zwei Frames, ein Dead-Zero-Kostüm und ein Hip-Box-Kostüm, das etwas kleiner ist
als die anderen Was wir mit den
Schnecken machen werden, ist, dass
sie sich über Teile eines Levels hin und her bewegen Wenn der Spieler auf eine Schnecke springt, stirbt
die Schnecke und
fällt Aber wenn der Spieler
eine Schnecke auf andere Weise berührt, wird Okay. Und um
den Snail-Sprite zu codieren, können
wir damit beginnen, zum Coin-Sprite-Code zu gehen und
die Skripte zu
kopieren Fangen wir von der rechten Seite an. Wählen Sie also den
Spieler berühren, animieren Sie ihn, erstellen Sie einen Klon, sortieren Sie ihn in Ebenen
und passen Sie die Position an Kopieren wir dann, wenn ich
als Klon starte , wenn ich Update drei
erhalte, Update zwei, Update eins und schließlich das Setup-Skript
und das Skript mit grüner Flagge Gehen wir jetzt zum Schneckensprite und bereinigen den Code ein wenig Okay,
lassen Sie uns nun mit einigen Änderungen mit dem Crate
Clone-Skript beginnen Wenn wir zum ersten Mal einen Klon erstellen wechseln
wir zum
Move Zero-Kostüm Wir werden uns nicht
mit den Münzen befassen, also lasst uns den Block mit den
Wechselmünzen loswerden. Wir müssen auch den aktuellen
Zustand des Klons im
Auge behalten , der je nach Kostüm entweder bewegt oder tot sein
wird. Lassen Sie uns also in Variablen eine neue
erstellen. Nennen wir es State und machen
es nur für dieses Sprite. Und lass uns die Variable verstecken. Dann fügen wir ein Set hinzu, das
vor dem CRA-Klon
meines Blocks blockiert werden soll, und lassen Sie uns State auf Move setzen. Leider können
wir
beim Schnecken-Sprite die Kollisionserkennung
zwischen ihm und dem Level-Sprite nicht verwenden, können
wir
beim Schnecken-Sprite die Kollisionserkennung
zwischen ihm und dem Level-Sprite nicht verwenden um zu verhindern, dass es die Level-Kacheln durchquert , wie wir es mit
dem Spieler-Sprite
tun Das liegt daran, dass die
Schneckensprite-Klone einen Großteil ihrer Zeit außerhalb der Bühne verbringen
werden Und wie wir bereits zuvor gelernt haben, setzt
Scratch Grenzen dafür, wie weit
ein Sprite von der Bühne Das bedeutet, dass sich die Sprites hinter der Bühne tatsächlich den Rändern der Bühne ansammeln Dies wird natürlich
zu Problemen führen, wenn wir versuchen, Kollisionserkennungen
zwischen den Und das ist auch der
Grund, warum wir
benutzerdefinierte X- und Y-Variablen
für jedes Sprite verwenden benutzerdefinierte X- und Y-Variablen
für jedes Sprite um den Überblick über ihre
Weltpositionen im Level zu behalten Stattdessen
positionieren wir einen
Schneckensprite-Klon direkt auf Level-Kacheln und
geben ihm eine bestimmte
Entfernung, die er
zurücklegen kann, bevor er sich umdreht
und in die
entgegengesetzte Richtung geht Okay, um das zu tun, bei der Erstellung eines Klons müssen
wir
bei der Erstellung eines Klons ihm sagen,
wie weit er reisen kann und in welche Richtung er am Anfang
zeigen soll Das bedeutet, dass wir bei der
Ausführung des Skripts Create Clone
die Entfernung und die Startrichtung angeben müssen die Entfernung und die Startrichtung . Klicken wir also mit der rechten Maustaste auf den
definierten Block und wählen Bearbeiten. Fügen wir zunächst eine neue Bezeichnung hinzu, geben Semikolon-Abstandsdoppelpunkt ein
und fügen eine Eingabe
namens Entfernung und fügen eine Eingabe Fügen wir nun eine weitere Bezeichnung hinzu: Semikolon, Richtung, Doppelpunkt.
Fügen wir eine Eingabe namens
Richtung Fügen wir eine Eingabe Als Nächstes müssen wir die minimale und maximale Exposition
der Klone im Auge behalten minimale und maximale Exposition
der Klone Gehen wir also zuerst zu Variablen und erstellen
ein paar neue Nennen wir den ersten Min x und machen ihn nur für
dieses Sprite Dann lassen Sie uns
einen weiteren erstellen, nennen ihn Maxx. Auch nur für dieses Sprite, und lassen Sie uns beide Variablen verstecken Sowohl Minx als auch Maxx hängen von der
Startrichtung der Klone ab, die entweder
90 oder minus 90 sein wird Wenn es 90 ist, was bedeutet, dass der Klon nach rechts zeigt,
ist Minix die
Startposition und Maxx ist der X-Eingang zuzüglich der Entfernung Wenn die Richtung negativ 90 ist,
was bedeutet, dass der Klon nach links zeigt,
ist Maxx die X-Eingabe
und Minx ist X minus Entfernung Gehen wir also zunächst zur Steuerung über und bringen einen In-Thins-Block
in einen leeren Raum. Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Lassen Sie uns dann überprüfen, ob die
Richtungseingabe 90 entspricht. Gehen wir nun zu Variablen und fügen wir jedem
Teil des ITN ls-Blocks
zwei Satz-Zwei-Blöcke Für den I-Teil wollen wir Minix auf den X-Eingang
setzen. Und für Maxx
gehen wir zu Operatoren, einen
Additionsblock und addieren wir die X-Eingaben und
die Entfernungseingabe Für den TS-Teil legen wir Minux fest,
indem wir einen
Subtraktionsblock einfügen
und X minus Entfernung berechnen Schließlich setzen wir Maxx auf
den X-Eingang und platzieren all das über dem Block
Create Clone of myself Und noch eine Sache, die
wir tun wollen, ist das Sprite
tatsächlich
in die richtige
Startrichtung Gehen wir also zur Bewegung über, fügen vor dem
Block Create Clone
of myself einen Punkt- und Richtungsblock hinzu und verwenden
die Richtungseingaben Okay, wenn wir
im Switch-Kostümblock
des Anime-Skripts weitermachen , wollen
wir zu Variablen gehen und das Wort Münze
durch einen Statusblock
ersetzen. Als Nächstes wollen wir
den Animationsframe nur ändern , wenn sich die Schnecke im Bewegungszustand
befindet, weil der tote Zustand nur einen einzigen Frame
hat Gehen wir also zur Steuerung über und setzen wir einen Wenn-Dann-Block um
die Änderung herum und setzen wir auf
Frame-Blöcke Gehen wir für die Bedingung zu Operatoren und fügen einen
Gleichheitsblock ein Gehen wir dann zu Variablen
und überprüfen wir, ob
Status gleich Bewegung ist Okay. Und was die
Animationsgeschwindigkeit angeht, nehmen wir 0,05, weil
Schnecken ziemlich langsam sind
und es sich um eine Animation mit zwei Frames Lassen Sie uns also einen
Anime-Frame mit zwei modifizieren. In Ordnung, lassen Sie uns jetzt weitermachen
und Level eins mit einem Snell ausstatten. Kommen wir zunächst
zum Setup-Skript. Und lassen Sie uns
alle CrakKline-Blöcke loswerden damit wir nicht überall einen Haufen
zufälliger Snlls bekommen Lass uns jetzt das Spiel starten. Schalte den guten Modus ein und
scrolle ein bisschen nach rechts. Wir erstellen
hier eine Snll und lassen sie zwischen der Box
und dem Rand des Hangs hin
und her fahren , und wir beginnen sie gleich rechts neben der Box,
ungefähr hier Okay, um den Klon zu erstellen, gehen
wir zu Mi-Blöcken und fügen einen Create-Clone-Block
für Level eins Nehmen wir 338
für X, 45 für Y, 100 für Entfernung,
und wir zeigen nach
rechts, indem wir
90 für die Richtung verwenden. Wenn wir erneut auf die
grüne Flagge klicken, sehen
wir, wie die neue Schnecke ihre Bewegungsanimation
verwendet Jetzt müssen wir dafür sorgen, dass sich die Schnecke tatsächlich über
die Levelfelder bewegt Kommen wir dazu zu dem
Zeitpunkt, an dem ich Update zwei erhalte. Und hier fügen
wir vor der Animation einen benutzerdefinierten Block für die Aktionen der
Schnecke Lassen Sie uns also zunächst
einen neuen benutzerdefinierten Block erstellen. Nennen wir es Handle-Aktionen. Klicken Sie auf Okay und lassen Sie uns
weitermachen und
einen Block mit Handle-Aktionen direkt
über dem Animationsblock platzieren einen Block mit Handle-Aktionen direkt
über dem Animationsblock platzieren Lassen Sie uns nun den
definierten
Aktionsblock in einen leeren Bereich verschieben Aktionsblock in einen leeren Bereich Und hier
bewegen wir den Klon
zunächst mit einer bestimmten Geschwindigkeit in
seine aktuelle Richtung. Gehen wir dazu zu Variablen, nehmen blockweise eine Änderung und ändern wir die X-Variable. Gehen wir nun zu Operatoren und fügen wir zunächst einen
Multiplikationsblock zum X-Block der Änderung Verwenden Sie dann einen Divisionsblock
für die erste Eingabe. Wenn wir nun zur Bewegung übergehen, können
wir einen
Richtungsblock nehmen und ihn durch 90 teilen, was uns entweder
eins oder eine negative Eins ergibt. Dann können wir
es mit einer Geschwindigkeit multiplizieren. Ich nehme hier eigentlich nur
eine Eins, also bewegt sich die Schnecke nur um einen
Schritt pro Bild Okay, lass
es uns versuchen. Perfekt. Jetzt
müssen wir es nur noch so machen, dass
die Schnecke, wenn sie die
maximale Exposition erreicht hat, sich umdreht und sich
in die entgegengesetzte Richtung bewegt.
Dann wiederholt sie den Vorgang, wenn
sie die minimale
Exposition wieder erreicht hat Dazu müssen wir
überprüfen, ob die Schnecke entweder ihre Max-Variable oder ihre Min-X-Variable
überschritten hat entweder ihre Max-Variable oder ihre Min-X-Variable
überschritten Gehen wir zunächst
zu Control und fügen dem
Handle-Action-Skript einen If-then-Else-Block hinzu Gehen wir für die Bedingung zu Operatoren und fügen
einen Block größer als ein. Dann gehen wir zu Variablen und prüfen, ob X
größer als Maxx ist Wenn das der Fall ist, wollen
wir zuerst einen Satz zum Blockieren hinzufügen und X auf Maxx setzen Dann wollen wir der Schnecke
in die entgegengesetzte Richtung zuschauen. Gehen wir dazu in Bewegung
und fügen einen Punkt-
und Richtungsblock hinzu Gehen wir dann zu
Operatoren und verwenden einen
Multiplikationsblock als Eingabe Jetzt können wir zur Bewegung zurückkehren und Richtung
mal Minus Eins berechnen Damit bewegt sich die Schnecke in diesem Fall bei
der
nächsten Ausführung des Skripts Schnecke in diesem Fall bei
der nach links Wir können das sehen, wenn
wir das Spiel starten. Sobald sich die Schnecke um
eine Entfernung von 100 Stufen bewegt
, also in der Nähe des
Hangrandes, ändert sie ihre Richtung
und beginnt, sich nach links zu bewegen Sie
dreht sich jedoch auch auf den Kopf. Wie wir bereits gesehen haben, können
wir das beheben, indem wir in
das Sprites-Richtungsfeld
klicken und den Rotationstyp links nach
rechts verwenden Wenn wir es noch einmal versuchen, bleibt die Schnecke jetzt rechts oben, wenn
sie sich nach links dreht Jetzt müssen wir dafür sorgen, dass sich die
Schnecke nach rechts dreht, sobald sie
ihre Mindestexposition überschritten hat Gehen wir also zuerst zur Steuerung
und fügen wir hier den Teil „Wenn der
Block“ zu den Ausgängen Für die Bedingung gehen wir zu den Operatoren und fügen einen
Block mit weniger als ein. Gehen wir dann zu Variablen und prüfen, ob X kleiner als Minx ist Jetzt können wir
einige Duplikate des Satzes X und
der Punkt- und
Richtungsblöcke von hier oben einbringen Satzes X und
der Punkt- und
Richtungsblöcke von hier oben Aber dieses Mal wollen wir X
auf minx setzen. Und wenn wir das Spiel jetzt ausführen, sollte
die Schnecke nie
mehr als 100 Schritte
in eine der beiden Richtungen gehen mehr als 100 Schritte
in eine der beiden Fantastisch.
Gut, als Nächstes lassen wir den Spieler die
Schnecke töten, indem er darauf springt Gehen wir dazu in das Skript „
Scheck zum Berühren eines Spielers“ ein. Wir werden
die Klone tatsächlich woanders löschen. Lassen Sie uns also die
beiden Löschblöcke
hier herausziehen und sie für später speichern Und lassen Sie uns den Block mit
den Wechselmünzen loswerden. Wenn der Spieler nun auf eine Schnecke
springt, befindet er sich höchstwahrscheinlich
schon im Herbstzustand, wenn er die Schnecke trifft Nachdem wir also überprüft haben, ob die
Schnecke den Spieler berührt, werden
wir auch überprüfen, ob sich der Spieler gerade
im Sturzzustand befindet Wenn ja, lassen wir die Schnecke sterben. Andernfalls läuft der Spieler
wahrscheinlich in die Schnecke, was
den Spieler stattdessen verletzen sollte Okay, also lasst uns zuerst zur Steuerung
gehen und
einen Wenn-Dann-S-Block zum I-Touch-Platten-Block hinzufügen einen Wenn-Dann-S-Block zum I-Touch-Platten-Block Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock hinzu. Gehen wir dann zur Erkennung über und fügen Gleich“
einen
Block mit der Hintergrundnummer eines Stufenblocks hinzu Um den Status des Spielers zu ermitteln, wechseln
wir von Stufe zu Stufe
und setzen den Status variabel Und lassen Sie uns überprüfen, ob es einem Sturz
entspricht. In Ordnung. Wenn der Spieler auf eine Schnecke
springt, versetzen
wir die Schnecke in den toten Zustand, lassen sie ein wenig
in der Luft aufprallen lassen
sie
dann mithilfe der Schwerkraft auf den
Boden der Bühne fallen Gehen wir also zunächst zu Variablen und fügen dem F-Teil einen Satz zum
Blockieren hinzu Und lassen Sie uns den Status auf tot setzen. Wir wollen auch
den Animationsframe zurücksetzen ,
indem einen Set-Tom-Frame auf den Null-Block setzen. Als Nächstes erstellen
wir eine neue Variable, um eine vertikale
Kraft auf das Sprite auszuüben erstellen
wir eine neue Variable, um eine vertikale
Kraft auf das Sprite auszuüben Wir können es Geschwindigkeit Y nennen und es nur für dieses Sprite
erstellen, ohne dass wir die Variable
anzeigen müssen Übrigens, wenn
Sie den Block für eine
Variable, die Sie gerade erstellt haben, nicht sehen können, können
Sie zu einem anderen
Sprite wechseln und dann zurück, und jetzt
sollte der Block sichtbar sein Okay? Lassen Sie uns jetzt
einen weiteren Satz zum Blockieren einsetzen
und Geschwindigkeit Y auf sieben setzen. Ein positiver Wert
lässt das
Sprite zu Beginn etwas nach oben springen.
Okay? Nun, um Speed Wi zu nutzen, nehmen
wir die beiden
Löschblöcke, die wir
hier gespeichert haben , und übertragen sie in
das Handle-Action-Skript. Zu Beginn des Skripts überprüfen
wir, ob sich das Sprite im toten Zustand
befindet, und wenn ja, verwenden wir die Geschwindigkeitsvariable Y, um
seine Y-Position zu beeinflussen Gehen wir also zuerst zur Steuerung und bringen einen Block I und dann
in einen leeren Bereich Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob state gleich dead ist. Wenn ja, lassen Sie uns eine
Änderung
blockweise vornehmen und Y mit speedY ändern Wir wollen auch die
Schwerkraft nutzen, um SpeedY zu reduzieren, also lassen Sie uns
eine weitere Änderung pro
Block vornehmen und
SpeedY durch die Schwerkraft ändern Danach wollen wir überprüfen, ob der Klon das Ende
der Stufe erreicht hat, und wenn ja, löschen wir ihn Gehen wir also zur
Steuerung und fügen einen If-the-Block unter
dem Change-Block hinzu. Für die Bedingung gehen wir zu den Operatoren und geben einen
Block mit weniger als ein Gehen Sie dann zu Variablen
und prüfen Sie, ob Y kleiner als minus 180 ist. Wenn ja, lassen Sie uns
die beiden Löschblöcke einfügen. Lassen Sie uns nun all
das oben im
Handle-Action-Skript hinzufügen . Wenn der Klon im Moment
noch nicht das Ende der Stufe erreicht hat, werden
diese Blöcke
hier unten immer noch ausgeführt, sodass sich der Klon
auch horizontal bewegt. Wir wollen nicht, dass das passiert. Gehen wir also zur Kontrolle. Fügen Sie
ganz unten im Block I state
is equal dead einen Stopp-Block hinzu und
beenden Sie dieses Skript Und es gibt noch eine
Sache, die wir tun müssen. Und wenn ich Update eins erhalte, wollen
wir nur überprüfen,
ob der Klon den Spieler
berührt, während sich der
Klon im Zugmodus befindet. Also schnappen wir uns ein
I, dann ein Block und wickeln es um den Scheck, der den Spielerblock
berührt. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock hinzu Gehen Sie dann zu Variablen und
prüfen Sie, ob Status gleich Bewegung ist. Okay, ich denke, wir sind bereit
, es zu versuchen. Also lass uns das Spiel starten
und den Gottmodus ausschalten. Wenn wir in die Schnecke laufen, passiert noch
nichts. Aber wenn wir darauf springen, geht
es in den toten Zustand über, springt hoch und fällt auf den Boden der
Bühne. Ziemlich cool Ich würde allerdings noch
besser aussehen,
wenn wir den Spieler auch von der Schnecke
abprallen Wir werden
in der nächsten Lektion sehen, wie das geht. Aber zuerst wollen wir weitermachen und das Hinzufügen der
Schnecken zu den Levels
beenden Okay, hier sind alle
Crate-Clone-Blöcke ich verwende, falls du dieselben Werte verwenden
möchtest
98. Bounce the Player: Immer wenn der Spieler die Sprites
eines Feindes berührt, lassen wir ihn abprallen Wenn sie auf den Feind springen oder
fallen, wir sie direkt nach oben abprallen Und wenn sie vom Feind
getroffen werden, lassen wir sie
entweder nach links oder rechts abprallen welche Richtung
sie auch immer am weitesten vom Feind entfernt
werden sie auch immer am weitesten vom Feind entfernt Und wir lassen das Spieler-Sprite
wissen, dass es abprallen muss, indem wir eine Nachricht senden, wenn ein
gegnerisches Sprite wissen, dass es abprallen muss, indem wir eine Nachricht senden, wenn ein
gegnerisches den Spieler
berührt Okay? den Spieler
berührt, senden
wir im Skript
„Spieler abpritzen Wenn also der Klon den Spieler
berührt, senden
wir im Skript
„Spieler abpritzen“ eine Nachricht, dass der Spieler abprallen muss,
unabhängig davon, ob sich der Spieler im Sturzzustand befindet oder nicht Gehen wir also zu den Ereignissen in
einem Broadcast-Block direkt
über dem IN Os-Block und übertragen wir
eine neue Nachricht, die wir Bounce-Player nennen können Als Nächstes müssen wir
dem Spieler mitteilen , in welche Richtung
er springen soll Dafür können wir
eine globale Variable verwenden. Gehen wir also zu Variablen
und erstellen wir eine neue. Nennen wir es Bounce Der und
machen es für alle Sprites. Es wird drei mögliche
Werte für Bounced Der geben. Null bedeutet direkt nach oben. Eins bedeutet nach oben
und nach rechts und negativ
bedeutet eins nach oben und links. Wenn der Spieler auf die Schnecke
gefallen ist, wodurch die Schnecke stirbt, wollen
wir den
Spieler direkt nach oben springen Fügen wir also dem if-Teil des ItinoBlocks ein Set zum
Blockieren hinzu und setzen wir Bounce
Der Wenn der Spieler nun von der Schnecke getroffen
wurde, können
wir die
Abprallrichtung festlegen, indem wir die Exposition des Spielers mit der Exposition
der Schnecke vergleichen Spielers mit der Exposition
der Befindet sich der Spieler
rechts von der Schnecke, lassen
wir ihn nach oben und nach rechts
springen und umgekehrt . Gehen wir zunächst zu
Steuerung und fügen Outs-Teil dieses Blocks
einen
Wenn-Dann-Out-Block Gehen wir für die Bedingung zu Operatoren und fügen
einen Block größer als ein. Für die linke Seite
des Blocks „Größer als verwenden
wir hier ein Duplikat
des Zustands des Spielerblocks und
ändern ihn auf X des Spielers. Und für die rechte Seite gehen
wir zu Variablen
und fügen einen X-Block ein. Das bedeutet, dass
sich der Spieler rechts von der Schnecke befindet. Bringen wir also ein Set zum
Blocken rein und setzen Bounce Sir auf Andernfalls können wir
Bouncer auf minus eins setzen. Wenn das Spieler-Sprite nun die Nachricht vom Spieler „Bounce
Player“
erhält, können
wir einfach anhand
des Bouncer-Werts
feststellen, ob
der Spieler vom Feind
getroffen wurde oder nicht der Spieler vom Feind
getroffen wurde Und nur um sicherzugehen, dass der Bouncer richtig eingestellt
ist, starten
wir das Spiel und
gehen zur Schnecke über Wenn wir es von
der linken Seite berühren, wird der
Türsteher negativ Wenn wir es von
der rechten Seite berühren, wird
es positiv Und wenn wir auf die
Schnecke springen, wird sie Null. Fantastisch. Gut, wir können die Bouncer-Variable
verstecken Und jetzt müssen wir zum Spieler-Sprite-Code gehen und
die Bounce-Player-Nachricht bearbeiten Lassen Sie uns zuerst einen leeren Raum
finden. Dann lass uns zu den
Events gehen und einen Block mit W,
den ich erhalten habe, als
Bounce Player einfügen Und hier werden wir je nach
Bouncer-Wert
verschiedene Dinge tun je nach
Bouncer-Wert
verschiedene Dinge Gehen wir also zuerst zur Steuerung über und fügen einen Wenn-Dann-Out-Block
ein Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock Gehen wir dann zu Variablen
und überprüfen wir, ob
Bouncer gleich Null ist Unabhängig vom Bouncer-Wert werden
wir nun eine nach oben gerichtete
Abprallkraft auf die Sprites anwenden Wir werden die
Sprungkraft in diesem Skript verwenden, und wir werden sie auch im
Skript „Vertikale Bewegungen verarbeiten“ verwenden verarbeiten Da wir es
in mehreren Skripten verwenden werden, müssen
wir dafür
eine Variable Lassen Sie uns also ein neues erstellen. Wir können es Bounce Force nennen, und nur das
Sprite des Spielers benötigt Zugriff darauf, also können wir es nur für
dieses Sprite machen Und wenn wir schon dabei sind, brauchen
wir noch eine weitere Variable um den Spieler
zurückzudrängen, wenn er Das nennt man Bounce
Back und wir werden es
sowohl im Bounce-Player-Skript als auch im Handle-Skript
für horizontale
Bewegungen verwenden sowohl im Bounce-Player-Skript als auch im Handle-Skript für horizontale
Bewegungen Okay, lassen Sie uns eine
weitere Variable erstellen. Nennen wir es Bounce Back und machen es auch nur
für diesen Sprite Und wir können beide Variablen verstecken. Jetzt müssen wir sicherstellen, dass beide Variablen
zu Beginn
jedes Levels
zurückgesetzt werden, damit der Spieler nicht anfängt,
herumzuhüpfen Gehen wir also zuerst
zum Setup-Skript und fügen wir zwei
weitere Blöcke Und lassen Sie uns sowohl die
Abprallkraft als auch die Rückprallkraft auf Null setzen. Gehen wir nun zurück zum W I receive Bounce Die Abprallkraft
ist unterschiedlich je nachdem, ob das abgeprallte Du
Null ist oder nicht Fügen wir also jedem Teil des ItinoBlocks einen Satz von zwei Blöcken jedem Teil des ItinoBlocks einen Satz von Für den ersten
setzen wir die Abprallkraft auf drei. Und für den anderen setzen
wir ihn auf zwei. Als Nächstes stellen
wir unterhalb des Blocks I
thin outs die Geschwindigkeit Y ein und verwenden dabei die Abprallkraft, um
das Sprite nach oben zu bewegen Fügen wir also am Ende des
Skripts zwei Blöcke hinzu und legen die Geschwindigkeit Y fest. Und wir werden
sie mit der Summe der Sprungkraftvariablen
und
der Sprungkraftvariablen festlegen Sprungkraftvariablen
und
der Sprungkraftvariablen Das wird in Kürze Sinn machen. Gehen wir also zuerst
zu den Operatoren und
fügen einen Zusatzblock in
den Y-Block mit der eingestellten Geschwindigkeit ein. Gehen wir dann zurück zu den Variablen und machen Sprungkraft
plus Sprungkraft Und weil dadurch der
Sprite
technisch gesehen in die Luft gebracht wird , sollten
wir auch noch einen Satz
zum Blockieren einsetzen und einen davon in die Luft bringen zum Blockieren einsetzen und einen davon in die Luft bringen Wenn wir jetzt das Spiel starten
und auf die Schnecke springen, springt
sie uns in Um es zu verbessern, könnten
wir es jedoch
so einrichten, dass, wenn wir beim Abprallen eine
Sprungtaste gedrückt halten, die Sprungkraft weiter ausübt,
sodass wir ziemlich hoch springen sodass wir An dieser Stelle kommt das
Skript „
Vertikale Bewegung handle “ ins Spiel Innerhalb der IY-Achse befindet ein Block, in dem wir prüfen, ob weniger als sieben
Sprünge Wir stellen Geschwindigkeit
breit auf Sprungkraft Wir können also
auch eine Änderung für jeden Block
danach hinzufügen und die
Geschwindigkeit anhand der Sprungkraft ändern Das ist dasselbe, als würden wir
Geschwindigkeit wy auf die Summe aus
Sprungkraft und Abprallkraft setzen ,
wie wir es im
Bounce-Player-Skript tun Also lass es uns versuchen. Wenn wir auf eine Schnecke springen und eine Sprungtaste
gedrückt halten, können
wir ein ganzes Stück höher kommen Das wird sich als sehr praktisch erweisen, wenn wir
die Sprungpads später hinzufügen Im Moment wird die
Sprungkraft jedoch immer noch zu unseren Sprüngen
hinzugefügt, auch wenn wir nicht von einem Feind
abprallen Um das zu beheben, müssen
wir irgendwann die
Abprallkraft wieder auf Null setzen Um das zu tun, bevor wir überprüfen,
ob die Y-Achse gleich Eins ist, können
wir überprüfen, ob die
Sprungkraft größer als Null und ob der Spieler angefangen hat, wieder auf den Boden zu
fallen ,
oder mit anderen Worten, ob Geschwindigkeit Y nicht
größer als Null ist. Okay, also zuerst gehen wir zur Steuerung und bringen einen IT-Block
in einen leeren Raum. Gehen wir für die Bedingung zu den Operatoren und fügen zuerst einen
AND-Block ein wir auf der linken Seite einen
Block größer als ein, und für die rechte Seite fügen
wir zuerst einen Nicht-Block dann einen Block größer als hinzu. Kehren wir nun zu den Variablen zurück
und überprüfen wir, ob die
Sprungkraft größer als Null und die Geschwindigkeit Y nicht
größer als Null ist Wenn all dies zutrifft, können
wir einen Satz zum
Blockieren hinzufügen und die Abprallkraft auf Null setzen Jetzt können wir den Block
I und dann direkt
über der IY-Achse platzieren , was einem Block
entspricht, und das sollte das Problem beheben Wir können immer noch höher springen,
während wir von einem Feind abprallen, aber danach wird das
Springen wieder normal Ordnung, als Nächstes
müssen wir den
Bounce-Back implementieren , der passieren sollte, wenn der Spieler von einem Feind getroffen wird Lassen Sie uns dafür zunächst zum Bounce-Player-Skript
zurückkehren Am Ende des Skripts fügen wir ein weiteres Set zum
Blockieren und Zurücksetzen ein. Die Richtung des Bounce-Backs hängt
natürlich vom
Wert des zurückgeworfenen DRE Gehen wir also zunächst zu den Operatoren und verwenden einen
Multiplikationsblock als Eingabe Gehen wir dann zurück zu den Variablen und multiplizieren wir
Bounce der mit sagen wir drei Okay, jetzt kommen wir zu
den Skripten für die Handhabung horizontaler
Bewegungen Und wenn der Rücksprung nicht gleich Null
ist, addieren wir den
Wert weiterhin zu Geschwindigkeit x. Außerdem verhindern
wir, dass der Spieler die Bewegungen überschreibt Das alles ähnelt
dem, was wir sowohl beim Wandspringen als auch beim
Hangrutschen tun sowohl beim Wandspringen als auch beim
Hangrutschen Wir
möchten jedoch aufhören,
den Rückprall anzuwenden , sobald die
Abprallkraft Null wird Ordnung, um das alles zu
überprüfen, gehen
wir zunächst zur Steuerung und bringen einen FTN-Block
in einen leeren Bereich. Für den Zustand gehen wir zu den Operatoren und bringen einen
UND-Block rein Für die linke Seite fügen wir einen Block „
größer als“ ein. Und für die rechte Seite fügen wir zuerst einen
Nicht-Block ein, dann einen Gleichheits-Block Gehen wir nun zu Variablen
und überprüfen wir, ob die
Abprallkraft größer als Null ist und ob die Rückprallkraft
nicht gleich Null ist Wenn all dies zutrifft, können
wir eine Änderung pro
Block und die Geschwindigkeit
X anhand der Abprallspezifikation ändern Und um zu verhindern, dass der Spieler
das überschreibt, können
wir einen Satz zum
Blockieren hinzufügen und die X-Achse auf Null setzen Jetzt können wir das alles
direkt über dem Block platzieren falls nicht
die X-Achse
gleich Null Wenn wir das Spiel starten und
auf einen Feind stoßen, werden wir
hochgeschleudert und vom Feind
weggeschleudert. Hervorragend. Im
Moment schadet das dem Spieler jedoch nicht wirklich da der Spieler
noch keine Gesundheit hat. Also werden wir das
in der nächsten Lektion beheben.
99. Verletzungen: Damit der Spieler verletzt wird, wenn ein
Feind ihn trifft, müssen
wir
ihm etwas Gesundheit geben. Beginnen wir also damit,
eine Variable für die Gesundheit des
Spielers zu erstellen . Da der Herzgeist später auch auf
die Variable zugreifen muss, machen
wir sie zu einer globalen Variablen Nennen wir es also Spielergesundheit und machen es für alle Sprites Wir werden auch eine für
die maximale Anzahl an
Gesundheit erstellen , die der Spieler haben kann Nennen wir es
Max Player Health und machen es auch
für alle Sprites. Lassen Sie uns die Variable Max
Player Health ausblenden. Und vorerst werden wir dafür sorgen, Gesundheit der
Spieler
auf der Bühne sichtbar bleibt. Okay,
lassen Sie uns im
Player-Sprite-Code zum
Green Flag-Skript übergehen Lass uns ein Set zum Blockieren hinzufügen und lass uns die maximale
Spielergesundheit auf drei setzen. Bringen wir nun
ein weiteres Set zum Blockieren hinzu und setzen wir die Spielergesundheit
auf Max. Spielergesundheit. Als Nächstes setzen
wir im Setup-Skript die Gesundheit
wieder auf das Maximum zurück, aber nur, wenn die Gesundheit auf Null
gefallen
ist, kann die Gesundheit
des
Spielers zwischen den Stufen übertragen werden . Gehen wir also zuerst zur Steuerung und bringen den IDN-Block in einen
leeren Bereich Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Gehen wir dann zu den Variablen und
überprüfen, ob die
Gesundheit des Spielers gleich Null ist. Wenn ja, können wir ein Set zum
Blockieren hinzufügen und die Spielergesundheit
auf maximale Spielergesundheit setzen Fügen wir nun den
ITN-Block zum Setup-Skript hinzu. Als Nächstes werden wir daran arbeiten, dass
der Spieler verletzt wird. Dazu
müssen wir verfolgen, ob
der
Spieler derzeit verletzt ist oder nicht. Wenn der Spieler
verletzt wird, machen
wir ihn außerdem für kurze Zeit unbesiegbar Dadurch wird verhindert, dass der
Spieler
mehrmals gleichzeitig verletzt mehrmals gleichzeitig und ermöglicht es ihm, den Feinden zu
entkommen. Okay, fangen wir also damit an,
ein paar weitere Variablen zu erstellen. Bei der ersten nennen wir es weh und machen es nur für
diesen Geist Dann lass uns einen anderen erstellen, ihn immer wieder Max HRP
nennen, ihn nur für diesen Sprite
machen maximale HRP-Zeit ist die Anzahl der
Frames, für die der Spieler
unbesiegbar
wird, Spieler
unbesiegbar Dieser Wert wird
sich während des Spiels nicht ändern, daher können wir ihn im
Green Flag-Skript festlegen Lassen Sie uns das tun,
indem wir ein Set zum Blockieren hinzufügen und die maximale
Verletzungszeit auf 30 Frames setzen. Bei einer Bildrate von
30 Bildern pro Sekunde der Spieler
dadurch für 1 Sekunde
unbesiegbar,
nachdem er sich Nun wollen
wir die Variable Hurt zu Beginn jedes
Levels zurücksetzen Fügen wir also dem Setup-Skript einen Satz zum
Blockieren hinzu und setzen wir Hurt auf Null. Okay, der Spieler
wird also offensichtlich verletzt, wenn er
von einem Feind getroffen wird. Wenn das passiert, erhalten wir die Nachricht, dass
der Spieler abspringt. Kommen wir also zum Skript Wenn ich einen Bounce-Spieler erhalte Wir wissen, dass der Spieler von
einem Feind getroffen
wurde , wenn der Wert des
abgeprallten DR-Werts nicht Null ist Wenn also der Teil von „
Ich abgeprallt bin“ gleich Null Block ist, lassen
wir den Spieler etwas Schaden erleiden
. Zuallererst: Wenn der
Spieler bereits verletzt ist, wollen
wir nicht, dass er noch einmal
verletzt Wenn der Spieler also bereits verletzt
ist, beenden
wir einfach das Drehbuch. Okay,
lassen Sie uns zunächst zur Steuerung gehen und einen
Wenn-Dann-Else-Block
in ein leeres Feld bringen . Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block größer als ein. Gehen wir dann zu Variablen und prüfen, ob Hurt
größer als Null ist. Wir verwenden mehr
als Null statt gleich
eins,
weil wir die Variable quasi
als Timer
verwenden, der anzeigt, wie lange
der Spieler verletzt wurde. Okay, und wenn das der Fall ist, gehen
wir zur Steuerung,
fügen einen Stopp-Block hinzu
und beenden das Skript. Wenn „Ich verletzt“ nicht größer als Null ist, sollte der Spieler verletzt werden. Dafür verwenden wir
einen benutzerdefinierten Block. Gehen wir also zu MyBlock
und erstellen einen neuen. Geben wir zuerst Get hurt B ein. Dann fügen wir eine neue Eingabe hinzu, nennen sie Damage und klicken auf Okay Nun fügen wir hier den Teil „Verletzt durch
Block“ zum Teil hinzu. Und für den Schadenseintrag nehmen
wir 0,5. Dann können wir das hinzufügen, falls sonst der Block zu den Ausgängen
des I-Bouncer gleich Null Block über dem eingestellten
Bounce-Force-Block liegt Okay, jetzt verschieben wir den definierten Get Hurt für
Block in ein Das erste, was wir hier tun
wollen, ist, zu Variablen zu gehen, einen Satz zu blockieren
und RT auf eins zu setzen. Als Nächstes reduzieren wir die Gesundheit
des Spielers um den zugeführten Schaden. Lassen Sie uns also blockweise eine Änderung vornehmen und die Gesundheit des
Spielers ändern. Um die Gesundheit zu reduzieren, müssen
wir den Schadens-Eingabewert negieren Gehen wir also zu Operatoren und fügen Spielergesundheit
ändern“
einen Subtraktionsblock Dann machen wir Null abzüglich
der Schadenseingaben. Als Nächstes
müssen wir den RT-Wert weiter erhöhen , bis er den Max
Hert-Zeitwert erreicht
hat Da das mit dem Status
des Players zu tun hat, behandeln
wir das im
Status-Aktualisierungsskript Am Anfang des Skripts überprüfen
wir zunächst, ob der Wert von Hertz
größer als Null ist Gehen wir also zu Control und bringen einen Wenn-Block
in ein leeres Feld Gehen wir nun zu den Operatoren und fügen einen „
größer als“ -Block ein. Gehen Sie dann zu Variablen und prüfen Sie, ob Hertz
größer als Null ist Als Nächstes prüfen wir,
ob der HRT-Wert Verletzungszeit erreicht
hat Wenn ja, setzen wir
ihn wieder auf Null, und wenn nicht, erhöhen wir den
HRT-Wert weiter um eins. Gehen wir also zuerst zu Control und fügen dem I Then-Block einen I then s Block
hinzu. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob rt dem maximalen Wert von hErtt entspricht. Wenn ja, lassen Sie uns einen Satz zum Blockieren
hinzufügen und Hurt auf Null setzen Andernfalls lassen Sie uns eine
Änderung Block und
die Änderung für den Schaden um eins hinzufügen. Lassen Sie uns das alles jetzt an
den Anfang des
Update-State-Skripts setzen . Und bevor wir alles testen, kommen
wir zum
Green Flag-Skript und setzen Mx Hurt Time auf
einen ziemlich hohen Wert wie 150, was ungefähr 5 Sekunden entspricht. Wenn wir jetzt das Spiel starten
und auf einen Feind stoßen, springen
wir ab, verlieren einen halben
Lebenspunkt
und der RT-Wert
beginnt hochzuzählen Bis
die maximale Verletzungszeit erreicht ist, können
wir uns direkt
durch die Feinde bewegen ,
ohne verletzt zu werden Sobald es
die maximale Verletzungszeit erreicht hat, wird es auf Null zurückgesetzt und
wir können erneut verletzt werden Im Moment ist
es für den Spieler jedoch nicht sehr offensichtlich , dass er nach einer Verletzung
unbesiegbar ist Um es noch klarer zu machen, können
wir die Sprites der Spieler
blinken lassen , obwohl der
Spieler Lassen Sie uns zunächst die Max Hurt-Zeit
auf 30 zurücksetzen. Kehren wir dann
zum Update-State-Skript zurück. Nun, benutze
hier einen benutzerdefinierten Block, um das Sprite zum Blinken zu bringen Gehen wir also zunächst zu
Mblocks und erstellen einen neuen. Geben wir zuerst flash if ein und dieses Mal
fügen wir boolesche Eingaben hinzu, die wir bisher nicht verwendet haben Boolesche Eingaben, wie die Vergleichsblöcke und die bedingten Blöcke in
der Kategorie Operatoren, haben
den Wert
entweder wahr oder falsch Ordnung, also
fügen wir eine boolesche Eingabe und nennen sie
Flash-Fragezeichen Klicken wir nun auf Okay und
lassen Sie uns weitermachen und
einen Flash hinzufügen, falls der Block nach der
Änderung hier um einen Block verletzt wurde Wir verwenden die Bedingung, um dem Block
mitzuteilen, ob er blinken soll
oder nicht. Gehen wir dazu zu Operatoren
und fügen wir zunächst einen Gleichheitsblock ein Dann platzieren wir einen
Mod-Block auf der linken Seite. Gehen wir nun zu Variablen und machen wir Hurt Mod
Four, entspricht Null Damit blinkt
das Sprite jedes Mal, wenn der RT-Wert durch vier
teilbar wird, was alle vier Frames der Fall Okay, jetzt bringen wir den definierten Flash-Block
in einen leeren Bereich Und hier wollen wir überprüfen, ob die Flash-Eingabe wahr oder falsch
ist. Gehen wir also zur Steuerung und fügen
einen ITN-Ls-Block hinzu, und wir können den
Flash-Eingang als Bedingung verwenden Der I-Teil wird ausgeführt,
wenn Flash wahr ist, und der S-Teil wird
ausgeführt, wenn er falsch ist Okay, und um
das Sprite blinken zu lassen, können
wir den
Helligkeitseffekt verwenden Gehen wir dazu zu Looks und fügen beiden Teilen
des ITN
Ls-Blocks einen festgelegten Effekt zum Blockieren hinzu. Wenn Flash auf True gesetzt ist, setzen
wir den
Helligkeitseffekt auf 100, wodurch das
Sprite komplett weiß wird Andernfalls setzen wir ihn auf Null, wodurch der Effekt im Wesentlichen
ausgeschaltet wird Bevor wir das versuchen, kehren
wir nun zum Update-State-Skript zurück. Es ist möglich, dass
das Sprite
immer noch weiß ist, wenn der HRT-Wert
die
maximale Verletzungszeit erreicht der HRT-Wert
die
maximale Verletzungszeit Um sicherzugehen, dass dies nicht der Fall ist, fügen
wir
dem I-Teil dieses Blocks einen
Effekt mit zwei Blöcken und setzen die
Helligkeit auf Null Wenn wir nun das Spiel starten
und von einem Feind getroffen werden, blinkt
der Sprite, während
der Spieler unbesiegbar ist Im Moment kann
unsere Gesundheit weiter sinken, wenn
wir immer wieder getroffen werden, kann
unsere Gesundheit weiter sinken sogar
bis in Als Nächstes lassen wir den Spieler sterben, wenn seine
Gesundheit Null erreicht.
100. Töten des Spielers: Zum Beispiel, wenn der Spieler verletzt wird, müssen
wir verfolgen,
ob der Spieler tot ist oder nicht. Gehen wir zunächst zu Variablen
und erstellen eine neue. Nennen wir es tot und machen
es nur für diesen Sprite. Wir wollen
die tote Variable zu
Beginn jedes Levels zurücksetzen die tote Variable zu
Beginn jedes Levels im Setup-Skript Lassen Sie uns im Setup-Skript einen Satz zum
Blockieren hinzufügen und den Wert tot auf Null setzen. Okay, jetzt kommen wir
zu den Get-Hurt-Skripten. Und hier, nachdem wir
die Gesundheit des Spielers reduziert
haben, werden wir überprüfen, ob der Spieler
gestorben ist, und wir werden
das tatsächlich in einem anderen benutzerdefinierten Block tun. Gehen wir also zuerst zu Mblocks
und erstellen einen neuen. Nennen wir es Check
Dad und klicken wir auf Okay. Und lassen Sie uns weitermachen und
am Ende des Get-Hurt-Skripts
einen Check-Block hinzufügen . Ordnung, wir lassen
den Spieler sterben, wenn seine Gesundheit
auf Null oder unter Null gefallen ist. Also im Check Dead-Skript überprüfen
wir das, indem wir zuerst die Kontrolle aufrufen und dann einen
Wenn-Block einfügen. Für die Bedingung gehen wir zu den Operatoren und fügen einen
OR-Block ein. Dann fügen wir auf der einen Seite einen
Gleichheitsblock und auf der anderen Seite einen
Block mit weniger als Gehen wir nun zu Variablen
und überprüfen wir, ob die
Gesundheit des Spielers gleich Null Oder die Gesundheit des Spielers
ist kleiner als Null. Wenn ja,
bringen wir zuerst einen Satz zum
Blockieren ein und setzen die
Gesundheit des Spielers auf Null. Dadurch wird verhindert, dass
Probleme auftreten, wenn wir
die Herzanzeige später erstellen. Dann bringen wir ein weiteres Set zum Blockieren und setzen es auf eins. Als Nächstes senden wir
die Nachricht , dass der Spieler gestorben ist. Der Hintergrund empfängt die Nachricht und startet
das aktuelle Level neu. Gehen wir also zu den Events, einen Broadcast-Block und übertragen wir
die neue Nachricht, die wir Spielerseite nennen können Bevor wir uns mit der Nachricht „
Spieler gestorben“ befassen, blenden
wir zuerst
den Spieler-Sprite
hier aus und fügen eine kurze
Pause ein, bevor wir das tun Gehen wir also zur Steuerung und lassen Sie uns zuerst einen Warteblock einfügen und 0,5 Sekunden
warten Dann lassen Sie uns
eine Wiederholung von zehn Blocks einbauen. Gehen wir jetzt zu Los und fügen dem Wiederholungsblock einen
Änderungseffekt für Block hinzu
und ändern wir den Ghost-Effekt um zehn. Okay, jetzt kommen wir zum
Bounce-Player-Skript. nach dem Ausführen des G-Hurt-Blocks Wenn der Spieler nach dem Ausführen des G-Hurt-Blocks gestorben ist, wollen
wir ihn nicht
abprallen lassen Um das zu überprüfen,
gehen wir zur Steuerung und platzieren einen Wenn-Dann-Block direkt
unter dem Block G Hurt Gehen wir für die Bedingung zu den Operatoren und fügen einen
Equals-Block ein Gehen wir dann zu Variablen
und prüfen, ob tot gleich eins ist. Wenn ja, können wir zur Steuerung gehen, einen Stopp-Block einfügen
und dieses Skript beenden Und um es einfacher
zu machen, alles zu testen, verwenden
wir vorerst eine Zwei als
Schadenseingabe, sodass nur zwei
Treffer erforderlich sind, um den Spieler zu töten. Okay, jetzt gehen wir
zum Hintergrundcode und suchen wir ein leeres Feld Wir möchten die Nachricht mit dem
Spielerdatum erhalten. Gehen wir also zu den Events, bringen einen
Block mit, den ich erhalten habe, und empfangen wir den
Spieler. Und hier
wollen wir zuerst die Spielschleife beenden Gehen wir also zur Steuerung über,
fügen einen Stopp-Block ein und stoppen wir
andere Skripte und Sprites Als Nächstes starten wir
das aktuelle Level neu. Aber bevor wir das tun, wollen
wir dem Spieler
Sprite genügend Zeit zum Ausblenden geben Sprite genügend Zeit zum Ausblenden Lassen Sie uns also zunächst einen Block mit
einer Wartezeit von 1 Sekunde einbauen. Jetzt können wir das
Level neu starten, indem wir zu den Ereignissen gehen, einen Broadcast-Block
und einen Broadcast-Start-Level hinzufügen. Okay, wenn wir jetzt
das Spiel starten und
zweimal von einem Feind getroffen werden, pausiert
das Spiel und der Sprite des
Spielers wird ausgeblendet, dann startet das Aber jetzt können wir das Sprite des Spielers nicht sehen
. Das liegt daran, dass wir den Ghost-Effekt nicht
zurückgesetzt haben. Gehen wir dazu
zurück zum
Sprite-Code des Players und dann
zu den Setup-Skripten Und hier können wir zu Looks gehen und einen übersichtlichen Block mit
grafischen Effekten einfügen Das sollte das Problem beheben. Ordnung. Und eine andere Sache ist, wenn wir den Gottmodus einschalten, einen Feind
berühren und dann den Gottmodus
ausschalten, werden
wir verletzt und kommen zurück Das liegt daran, dass wir immer noch die
Bounce-Player-Nachricht
erhalten, der
die Variablen Hurt
und Bounce gesetzt und Bounce Sobald wir also den Gottmodus
ausschalten
, werden wir verletzt Wir
wollen wahrscheinlich nicht, dass das passiert. Am Anfang des Skripts können
wir also überprüfen, ob
wir im guten Modus sind, und wenn ja,
beenden wir das Skript. Gehen wir also zuerst zur Steuerung und bringen einen ITN-Block
in einen leeren Bereich Für die Bedingung gehen wir zu den Operatoren und fügen einen
Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob der Gottmodus gleich eins ist. Wenn ja, können wir zur Steuerung gehen, einen Stoppblock einfügen und die Skripte
stoppen. In Ordnung. Und jetzt, wenn wir das an
den Anfang der Skripte setzen, das Spiel
starten, den guten Modus einschalten, einen Feind
berühren und den guten Modus
ausschalten, wir nicht mehr verletzt. Okay, cool. Stellen wir sicher, dass wir den
verletzten Schaden wieder auf
0,5 setzen und wir können weitermachen und die tote Variable,
die HRT-Variable und die
Mx-HRT-Zeitvariable
ausblenden . Als Nächstes sorgen wir dafür, dass es dem Spieler
auch weh tut,
vom Level in die Flüssigkeit zu fallen dem Spieler
auch weh tut,
vom Level in die Flüssigkeit , und wir reagieren an
einem Ort in der Nähe.
101. Respawn Sie den Spieler: Wenn der Spieler vom Level in die
Flüssigkeit fällt, verliert
er etwas Lebenspunkte Wenn er danach noch
Lebenspunkte hat, reagiert
er auf eine Stelle in der Nähe seines Sturzes Wenn der Spieler
keine Lebenspunkte mehr hat, starten
wir das Level neu. Um zu entscheiden, wo der Respawn stattfinden soll, verwendet
der Spieler hier das
Span Point-Sprite Das Hauptkostüm für den Sprite ist einfach ein Wir platzieren unsichtbare Klone
des Sprites an verschiedenen Stellen in den Levels, aus denen
der Spieler
wahrscheinlich fallen und
in die Flüssigkeit fallen wird aus denen
der Spieler
wahrscheinlich fallen und
in die Flüssigkeit fallen Jedes Mal, wenn der Spieler einen der
Spa-Punkt-Klone
durchquert , wird
die Position des Klons zur
neuen Span-Position des Spielers Wenn sie also in die Flüssigkeit fallen, reagieren
sie
auf diese Position Okay, also zu Beginn können
wir zuerst zum Coin-Sprite-Code gehen
und einige Skripte in
das Spawn-Point-Sprite kopieren Lassen Sie uns mit dem Skript „Scheck
berühren“ beginnen. Dann erstellen wir eine Klonsortierung in Ebenen
und passen die Position an. Als Nächstes wollen wir wissen, wann
ich als Klon starte , wann ich Update
drei erhalte und wann ich Update eins
erhalte. Lassen Sie uns abschließend
das Setup-Skript und
das Skript mit der grünen Flagge kopieren . Gehen wir nun zum Spawn-Punkt-Code über. Ich habe Check Touching Player definiert, der Spawn-Point-Sprite
hat kein Hip-Box-Kostüm, also können wir den
Switch-Kostümblock loswerden Wir wollen hier auch nicht
den Münzzähler ändern oder
den Klon löschen , damit wir alle Blöcke innerhalb
des Wenn-Dann-Blocks loswerden können alle Blöcke innerhalb
des Wenn-Dann-Blocks Was wir tun wollen, wenn der Klon den Spieler
berührt, ist, die Position des Klons
als neue
Spawnposition des Spielers zu verwenden als neue
Spawnposition des Spielers Dazu benötigen wir
einige globale Variablen, mit denen wir einige globale Variablen Spawn-Position des
Spielers
verfolgen Gehen wir also zunächst zu Variablen und erstellen
ein paar neue. Nennen wir den
ersten Spieler Spawn X. Und das machen wir für alle Sprites Und für den zweiten nehmen wir den Spielerspawn Y.
Auch für alle Sprites. Auch Dann fügen wir dem Spielerblock
, der I berührt
, zwei Blöcke der I berührt
, Und setzen wir den Spielerspawn
X auf die X-Variable. Und die Spieler spawnen Y
mit der Y-Variablen. Als Nächstes wollen
wir in Define Crate Clone zum
Spawnpunkt-Kostüm wechseln Wir wollen weder
Münzen noch Animationen ändern,
also können wir den eingestellten Anime-Frame-Block und
den Change-Münzen-Block loswerden und
den Change-Münzen-Block Wir können auch die
Anime-Frame-Variable löschen. Okay, jetzt, und wenn ich Update eins
erhalte, da wir
das Kostüm im
Scheck-gegen-Spieler-Skript nicht ändern , der „Wenn nicht Kostüm gleich
Blankoscheck ist
der „Wenn nicht Kostüm gleich
Blankoscheck“ nicht
mehr nötig Also können wir die
Einstellungsposition verschieben und überprüfen, ob sich Spieler
über dem Block Ich dann berühren, dann
den Block Ich dann wieder loswerden Der Grund, warum wir die Überprüfung nicht durchführen
müssen, ist, dass damit Scratch
eine Kollision zwischen zwei Sprites erkennen kann , beide Sprites irgendein sichtbares Objekt in
ihren aktuellen Kostümen haben müssen sichtbares Objekt in
ihren aktuellen Da die ursprünglichen
SponPoint-Sprites immer
das leere Kostüm verwenden werden, das natürlich
komplett leer ist, wird
es das Spieler-Sprite niemals berühren Okay, jetzt lass uns
weitermachen und
ein paar
Spawnpunkt-Klone zu Level eins hinzufügen ein paar
Spawnpunkt-Klone Gehen wir zunächst zum Setup-Skript und entfernen wir alle
Crit Clone-Blöcke Und wir werden auch
Spawnpunkte in Level vier haben, also werden wir hier den Block I Level
entspricht drei durch einen Block I Thin
Outs ersetzen hier den Block I Level
entspricht drei durch einen Block I Thin
Outs Um das zu tun,
gehen wir zu Control und bringen den Block I Thin-Outs
in ein leeres Feld Lassen Sie uns nun die Ebene gleich
drei Blocks in
den Block ITN Outs verschieben und
dann den ITN-Block durch den Block
I then outs ersetzen Okay? Lass uns jetzt das
Spiel starten und den Gottmodus einschalten. Wir platzieren Spawnpunkte in der Nähe
der Ränder aller Teile
des Levels, von denen der Spieler
fallen und
in die Flüssigkeit fallen könnte von denen der Spieler
fallen und
in die Flüssigkeit fallen Zum Beispiel ist der
Startpunkt des Spielers eigentlich
eine gute Position, und auch auf dieser schwebenden Plattform hier und in der Nähe des Randes auf dieser Seite Okay, den
ersten erstellen wir ungefähr hier, in der Nähe der
Startposition des Spielers. Gehen wir also zu MI-Blöcken und fügen einen
Create-Clone-Block für Level eins hinzu,
und verwenden wir die Werte, auf die Sie geklickt haben,
und die angeklickten Y-Werte
für die Eingaben Wenn wir das Spiel starten, können
wir jetzt den
Spawnpunkt-Klon sehen,
und wenn wir ihn betreten, und wenn wir ihn betreten die Werte von Spieler-Spawn X und
Spieler-Spawn werden
die Werte von Spieler-Spawn X und
Spieler-Spawn Y auf die Position des Klones gesetzt Jetzt erstellen wir hier drüben einen. Fügen wir einen weiteren
Create Clone Block und geben die
angeklickten Punktwerte Wir sollten jetzt beide
Klone sehen, wenn wir das Spiel starten. Und die Werte für die Spannposition ändern sich, wenn wir zwischen den Klonen
hin und her wechseln Aber wir wollen natürlich nicht, dass diese großen Rechtecke
tatsächlich im Spiel auftauchen Eine Sache, die wir tun können, ist
zu „Wenn ich starte“
als Klon-Skript übergehen die wir tun können, ist
zu „Wenn ich starte“
als Klon-Skript und statt
Komponente Z im Block mit den
Sortierebenen zu verwenden, können
wir Hintergrund Z verwenden. Das funktioniert
momentan, da die Spawn-Punkte hinter
die
anderen Hintergrundobjekte Es kann jedoch sein, dass es nicht
immer so funktioniert. Um zu sehen, was ich meine, lasst uns das Spiel
beenden und uns ganz schnell den Kostümen für mit
den Kostümen für
den Spawnpoint
Sprite befassen Lasst uns das
Spawn Point-Kostüm auswählen und den
Sprite anklicken und auf die Bühne ziehen Wenn wir das Spiel starten, die Spawn Point-Klone jetzt erscheinen
die Spawn Point-Klone jetzt vor den Sprite-Klonen im Hintergrund Okay? Für eine andere
mögliche Lösung können
wir versuchen, alle
Spawnpunkte zu verstecken wir dazu zum Code für
den
Spawn Point Sprite zurück Code für
den
Spawn Point Sprite im Green Flag-Skript Lassen Sie uns im Green Flag-Skript den
Show-Block herausziehen und zur Seite legen Gehen wir dann zu Looks und fügen dem Skript einen Versteckblock hinzu. Wenn wir das Spiel jetzt starten, sind
die Spawnpunkte alle versteckt, aber wenn wir jetzt
durch die Orte gehen, die
Werte der Spawnposition nicht Wir haben
das schon einmal kurz besprochen, aber der Grund dafür ist,
dass Scratch bei versteckten Sprites keine Kollisionserkennung
durchführt Dafür gibt es jedoch eine
Problemumgehung. Lassen Sie uns zunächst
den Versteckblock loswerden und
den Show-Block wieder einfügen Lassen Sie uns nun
einen eingestellten Effekt mit zwei Blöcken hinzufügen und den
Ghost-Effekt auf 100 setzen. Dadurch werden
die Sprites auch unsichtbar, aber anders als beim Ausblenden werden sie bei Scratch immer noch
Kollisionserkennungen durchgeführt Jetzt, wo wir
die Spawn-Punkte durchqueren, werden die Werte der Spawn-Position
aktualisiert Fantastisch. Nun, da
die Spawnpunkt-Klone im Spiel niemals
sichtbar sein werden, müssen
wir
sie eigentlich überhaupt nicht in den Ebenen sortieren Wir können sie einfach
automatisch
nach hinten schieben lassen , wie wir es
bei allen Original-Sprites tun Also in Win I starte ich
als Klon-Skript, wir können den Block mit den
Sortierebenen loswerden Dann können wir auch
das Sortierschicht-Skript loswerden. Und zu Testzwecken wollen wir weitermachen und
einen weiteren Spawnpunkt
direkt über der schwimmenden
Plattform hier oben erstellen einen weiteren Spawnpunkt direkt über der schwimmenden
Plattform hier oben Als Nächstes machen wir es so, dass das
Spieler-Sprite die Werte
der Span-Position tatsächlich verwenden kann , wenn
sie in die Flüssigkeit fallen Gehen wir dazu in
den Spieler-Sprite-Code ein. Lassen Sie uns zunächst das Skript für die festgelegte
Startposition finden. Und
anstatt
die Startwerte für X und Y für jedes Level direkt festzulegen , legen
wir stattdessen
die
Werte für Spielerspawn X und Spielerspawn Y Dies dient einfach dazu, zu Beginn
jedes Levels eine Standard-Spawn-Position zu haben Beginn
jedes Levels eine Standard-Spawn-Position nun nach all den
ITN-Blöcken, bevor
wir
die Position anpassen, Gehen wir nun nach all den
ITN-Blöcken, bevor
wir
die Position anpassen, zu den Variablen und
fügen zwei weitere
Set-2-Blöcke Und jetzt können wir X auf
Spielerspawn X und Y auf Spielerspawn Y setzen .
Machen Sie
auch weiter und verstecken Sie die Variablen für die
Spawnposition Sie
auch weiter und verstecken Sie die Variablen für die Als Nächstes suchen wir nach den Skripten für die vertikale Bewegung
. Unten
überprüfen wir, ob der Spieler unter den unteren Rand der Stufe
gefallen ist, und wenn ja, senden wir
die Start-Level-Nachricht. Lasst uns stattdessen
eine neue Nachricht senden, die wir
Respawn-Spieler nennen können Wir werden diese Nachricht erhalten
und den Spieler respawn. Lasst uns also zuerst einen leeren Raum
finden. Gehen wir jetzt zu den Events,
bringen einen Block W, den ich erhalte, rein
und empfangen den Respawn-Spieler Wie beim
Bounce-Player-Skript wollen
wir nun nicht, dass dieses Skript
irgendwas tut, wenn der
Gottmodus aktiviert ist Also können wir zuerst
den I Gott-Modus duplizieren , der
einem Block vom
Bounce-Player-Skript entspricht , die zusätzlichen Blöcke entfernen
und sie dem Respawn-Player-Skript hinzufügen Okay. Danach gehen
wir zur Steuerung über, einen Stopp-Block ein und
stoppen andere Skripte in Sprite Das liegt daran, dass wir nicht
wollen, dass das Spieler-Sprite während des Respawnens etwas anderes tut Da wir
das Respawn-Spieler-Skript möglicherweise für andere
Zwecke verwenden
könnten das Respawn-Spieler-Skript möglicherweise für , als wenn der Spieler
in die Flüssigkeit fällt, werden
wir als Nächstes überprüfen, ob der Spieler
in die Flüssigkeit gefallen ist,
und falls ja, nehmen wir ihm etwas von seiner Gesundheit weg. Lassen Sie uns also einen
Wenn-Dann-Block einbauen. Und was die Bedingung angeht, könnten
wir überprüfen, ob das
Sprite des Spielers unter
das Ende der Stufe gegangen ist , wie wir es im
Move-Vertikal-Skript tun, oder da der Spieler sich diesem Zeitpunkt in der
Flüssigkeit befindet, können
wir zur Erkennung übergehen, können
wir zur Erkennung übergehen,
einen berührenden Block einbauen
und prüfen, ob wir
den flüssigen Sprite berühren Wenn ja, werden wir dafür sorgen, dass
der Spieler verletzt wird, aber nur, wenn er
nicht schon Gehen wir also zunächst zu Steuerung und fügen dem Flüssigkeitsblock bei
Berührung einen IN-Block hinzu. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock Gehen Sie dann zu Variablen und
prüfen Sie, ob hurt gleich Null ist. Das bedeutet, dass der Spieler derzeit nicht verletzt
ist, also nicht unbesiegbar Und wenn das der Fall ist, können
wir dasselbe tun wie im
Bounce-Player-Skript, indem wir den Block „Verletzt werden“
ausführen und das Skript
dann beenden, wenn der Spieler Lassen Sie uns also
den Block G Hurt duplizieren
, der auch
den Block If Dead duplizieren sollte Dann können wir sie zum Block „Hurt ist
gleich Null“ und zum
Respawn-Player-Skript hinzufügen Block „Hurt ist
gleich Null“ und zum
Respawn-Player-Skript Aber diesmal für
die Schadenseingabe im Block „Verletzt werden“,
nehmen wir eins Als Nächstes, wenn der Spieler die
Flüssigkeit
nicht berührt oder er es tut,
aber noch am Leben ist die
Flüssigkeit
nicht berührt oder er es tut, , werden
wir den Spieler mit
den Werten Spielerspawn X und
Spielerspawn Y respawn den Werten Spielerspawn X und
Spielerspawn Y respawn Dazu fügen wir am Ende des Skripts zwei Blöcke hinzu und
setzen X auf
Spielerspawn X.
Und Y auf Spielerspawn Y. Außerdem wollen
wir sicherstellen, dass sich das Sprite nicht bewegt. Außerdem wollen
wir sicherstellen, dass sich Bringen wir also zwei weitere Blöcke von Satz
zwei hinzu und setzen sowohl
Geschwindigkeit X als auch Geschwindigkeit Y auf Null Okay, wenn wir jetzt das Spiel starten und in die Flüssigkeit fallen, verlieren
wir Lebenspunkte und tauchen an
der richtigen Span-Position wieder Und wenn wir sterben, wird der Sprite ausgeblendet und Das Respawning funktioniert
einwandfrei, solange
die Spawn-Position nicht
zu weit von der Wenn wir jedoch von der
schwimmenden Plattform hier oben fallen, die Plattform gefallen
, bis das Spieler-Sprite reagiert und die
Kamera
es erreicht bereits auf die Plattform gefallen
, bis das Spieler-Sprite
reagiert und die
Kamera
es erreicht Wenn wir von
einer noch höheren Stelle
in die Flüssigkeit fallen würden, könnte
das zu einer noch höheren Stelle
in die Flüssigkeit fallen würden, könnte
das Problemen bei
der Kollisionserkennung führen , weil das Sprite des Spielers von der Bühne
verschwindet Um das Problem zu beheben, wollen wir
das Gameplay pausieren und zuerst mit
der Kamera zum Spieler scrollen dann das Gameplay fortsetzen Dazu müssen wir
zuerst entweder den Exit-Sprite- oder den Lock-Sprite-Code aufrufen entweder den Exit-Sprite- oder den Lock-Sprite-Code und
das Scroll-to-Skript
in
das Player-Sprite kopieren Scroll-to-Skript
in
das Player-Sprite Gehen wir nun zurück zum Sprite-Code
des Players. Zurück im
Respawn-Player-Skript um alles
außer dem Scrollen anzuhalten, können
wir ein
weiteres Set zum
Blockieren hinzufügen und den Spielstatus auf Auto Dash Scroll
setzen Dann können wir zum
Spieler-Sprite scrollen, indem wir zuerst zu den MI-Blöcken
gehen und
einen Scroll-zu-Block einfügen,
dann zu Variablen zurückkehren und X- und Y-Blöcke
als Eingaben
verwenden Als Nächstes fügen wir eine kurze
Verzögerung hinzu, indem wir zur Steuerung wechseln, einen Warteblock und 0,5 Sekunden warten Schließlich können wir
das Spiel fortsetzen, indem wir zu Variablen
gehen, einen Satz zum Blockieren hinzufügen und den
Spielstatus auf Running setzen. Und wenn wir jetzt das Spiel starten
und in die Flüssigkeit fallen, scrollt
die Kamera zur neuen Position
des Spielers,
bevor das Spiel fortgesetzt wird neuen Position
des Spielers,
bevor das Spiel fortgesetzt Eine merkwürdige Sache
, die passieren kann, ist wenn wir eine Wand
die Steine hinunter in die Flüssigkeit rutschen.
Da wir den größten Teil der Spielschleife pausieren, reagieren
wir mit dem Wandrutschenkostüm Und wenn wir das
noch einmal machen und eine Sprungtaste
gedrückt halten , bevor
das Spiel weitergeht, können
wir in die Luft springen Das passiert, weil
beim Verschieben der Wand sowohl die Variable in der Luft als auch die
Variable beim Springen Null sind Diese Werte werden
übertragen, wenn wir reagieren
, sodass wir springen können. Um das Problem mit
dem Springen zu beheben, fügen
wir also vor dem ganzen Scroll-Zeug zwei weitere
Blöcke vor dem ganzen Scroll-Zeug Und lassen Sie uns beide in der Luft platzieren und auf etwas
Hohes wie 99
springen Und was das Kostümproblem angeht, können
wir einfach zu Looks gehen, einen Switch-Kostümblock
reinbringen und zum
Herbst-Zero-Kostüm wechseln. Jetzt sollten wir immer im Herbst-Zero-Kostüm respawnen und nicht in der Lage
sein, in der Luft zu springen Großartig. Okay, und
noch etwas, das wir verbessern können
, ist, wenn wir ein paar Mal fallen,
bis wir sterben Wenn das
Sprite des Spielers ausgeblendet wird, es etwas schwer zu erkennen, weil das Sprite gerade noch
über dem unteren Rand der Stufe ist.
Um zu verhindern, dass es so weit
untergeht, kommen
wir zum Drehbuch „Vertikal
bewegen Anstatt zu überprüfen, ob die Y-Variable
des Sprites
kleiner als minus 180 ist, gehen
wir hier unten Y-Variable
des Sprites
kleiner als minus 180 ist, zu etwas
wie minus 150. Gehen wir auch zu Variablen, fügen dem I dann Block einen Satz
zum Blockieren und setzen Y auf minus 150 Gehen wir dann zu M-Blöcken und fügen einen Block zum Anpassen der
Position hinzu. Dadurch friert die
Y-Position der Sprites bei minus 150 Wenn wir das Spiel jetzt laufen lassen
und fallen, bis wir sterben, ist
es einfacher zu sehen, wie das Sprite verblasst, bevor
das Level neu Ordnung, was wir jetzt
tun können, ist, zum Spawn-Punkte-Sprite-Code zurückzukehren und
die Spawnpunkte weiter zu den Levels hinzuzufügen Okay, hier sind alle
Craklone-Blöcke, die ich verwende. Es gibt
offensichtlich einige davon. Wenn Sie sich also lieber nicht Mühe machen möchten, all
diese Werte selbst einzugeben, können
Sie Ihr
Spawn-Point-Sprite durch das
ersetzen , das ich als
herunterladbare Ressource
zur Verfügung gestellt habe als
herunterladbare Ressource
zur Verfügung gestellt Okay, und nachdem wir uns um die
Spawnpunkte gekümmert
haben, werden wir wieder
die verbleibenden
Feinde zum Spiel hinzufügen die verbleibenden
Feinde zum
102. Den Bienenfeind hinzufügen: Der nächste Feind, den wir
dem Spiel hinzufügen werden , ist der B-Sprite hier. Die Kostüme für den
B Sprite bestehen aus einer Fliegenanimation mit zwei Frames, einem Totenkostüm und einer Hip Box Im Spiel lassen wir die Bienen wiederholt in einem
Halbkreis in jede Richtung nach unten stürzen, und sie bewachen oft
etwas das der Spieler braucht,
wie eine Münze oder einen Schlüssel Okay, und ein Großteil des Codes für
den Be Sprite wird
derselbe sein wie für den Schnecken-Sprite Also können wir zuerst zum
Snail-Sprite-Code gehen und alle Skripte
kopieren im B-Sprite-Code Kommen
wir im B-Sprite-Code zum Animate-Skript Der Animationsstatus für
die Biene ist der Flugstatus. Gehen wir also hierher, um zu fliegen. Das Be sollte auch
etwas schneller animieren als die Schnecke. Also lasst uns den Anime-Frame um
0,15 ändern. Kommen wir als Nächstes zum Crit
Clone-Skript. Das erste Kostüm
, zu dem wir wechseln möchten, ist Fly Zero, und der
Standardstatus sollte Fly sein Wir werden die Variablen Minx
und Maxx nicht für das B verwenden, also können wir
hier die ganze I-Richtung, die einem Block 90
entspricht, loswerden hier die ganze I-Richtung, die einem Block 90
entspricht Wir werden auch keine Entfernung
angeben müssen, wenn wir einen Klon
erstellen Klicken wir also mit der rechten Maustaste auf den
definierten Block und wählen Bearbeiten. Lassen Sie uns zuerst
die Entfernungsbeschriftung und
dann die
Entfernungseingabe löschen und auf Okay klicken. Wir müssen jedoch ein paar
neue Variablen
initialisieren Gehen wir also zu Variablen. Wenn wir immer noch die Variablen
Maxx und Minx haben, können
wir mit der rechten Maustaste auf eine klicken
und sie in Winkel umbenennen Dann können wir die
andere umbenennen, um sie zu verzögern. zeichnet den aktuellen Winkel
des B auf,
wenn es nach unten fällt und wir verwenden Delay, um zwischen jedem Abwärtsflug des Bes
eine kurze Pause einzufügen ,
und wir verwenden Delay, um zwischen jedem Abwärtsflug des Bes
eine kurze Pause einzufügen Okay, jetzt können wir
die beiden Variablen initialisieren, indem wir dem Clone-Skript zwei weitere Blöcke
hinzufügen Und sowohl Winkel
als auch Verzögerung auf Null setzen. Als Nächstes ändern
wir im Skript „Wenn ich Update One
erhalte “ den Status „Status ist gleich bewegen
“ in „Status ist gleich fliegen Und im Handle-Action-Skript belassen
wir den gesamten Block I
state equals tot, aber wir können nicht alles andere
loswerden Und lass uns weitermachen und
das erste B zum Spiel hinzufügen. zunächst im Setup-Skript Lassen Sie uns zunächst im Setup-Skript alle
Crack-Clone-Blöcke entfernen. Dann lass uns das Spiel starten
und den Gottmodus einschalten. Um zu verhindern, dass du beim Testen
zu weit gehen musst, platzieren
wir vorübergehend ein B in der Nähe der Stelle, an der der Spieler in Level eins
anfängt. Lass uns irgendwo hier drin klicken. Gehen Sie dann zu Mblocks, fügen Sie einen Cre-Clone-Block für Level eins hinzu und geben Sie die
angeklickten Und lassen Sie uns mit 90
für die Richtung gehen. Wenn wir auf die grüne Flagge klicken, haben
wir unser erstes animiertes B. Jetzt arbeiten wir daran,
das B nach unten zu bewegen. Kehren wir dazu zum
Handle-Action-Skript zurück. Wenn das B nach unten fährt, bewegt
es sich sowohl nach unten
als auch horizontal in der
Richtung, in der es also für die
horizontale Bewegung zunächst Gehen
wir also für die
horizontale Bewegung zunächst zu Variablen und fügen am Ende des Skripts
eine Änderung pro Block hinzu Ändern wir dann die X-Variable Wir möchten, dass sich das Sprite um
einen bestimmten Betrag in die
Richtung bewegt , in die es zeigt Gehen wir dazu zu Operatoren und fügen dem Change-X-Block einen
Multiplikationsblock hinzu Platzieren Sie dann den
Divisionsblock auf der linken Seite. Gehen wir nun zur Bewegung und geben wir die
Richtung geteilt durch 90 mal 3,5 für die Geschwindigkeit an. Wenn wir das Spiel jetzt starten, fängt
das B an,
nach rechts zu fliegen. Als Nächstes müssen
wir
etwas Trigonometrie
und auch die Winkelvariable verwenden, damit das Sprite
in einem Bogen nach
unten müssen
wir
etwas Trigonometrie
und auch die Winkelvariable verwenden, damit stürzt Gehen wir also zunächst zu den Variablen und nehmen eine weitere Änderung blockweise vor Und lassen Sie uns den Winkel um zehn ändern. Der Wert, den wir hier verwenden,
wirkt sich darauf aus, wie schnell sich das B bewegt, und wir werden ihn wahrscheinlich im Laufe der
Zeit ein wenig anpassen
müssen. Okay, lassen Sie uns nun einen Satz zum Blockieren und dann Geschwindigkeit Y einstellen. Hier müssen wir etwas Trigonometrie
verwenden,
damit das Sprite langsamer wird , wenn
es sich dem Boden des Bogens nähert, und
dann wieder schneller wird, wenn es sich wieder
nach oben bewegt Wir können die Kosinus-Methode verwenden. Aber der Kosinus gibt uns
wirklich kleine Zahlen zwischen minus eins wirklich kleine Also müssen wir den
Wert mit einer größeren Zahl multiplizieren. Gehen wir also zu den Operatoren und fügen wir zunächst einen Multiplikationsblock zum Y-Block mit
der eingestellten Geschwindigkeit Dann platzieren wir einen Block aus
Bauchmuskeln auf
der linken Seite und ändern
ihn in die Ursachenfunktion Dann wollen wir zu Variablen gehen und den Kosinus
der Winkelvariablen ermitteln Und lass es uns mit zwei multiplizieren. Je höher die
Zahl, die wir hier verwenden, desto weiter fällt
das B nach unten. Schließlich können
wir eine Änderung
blockweise und Y durch Geschwindigkeit Y ändern. Wenn wir das Spiel jetzt ausführen, stürzt das B zwar ab,
aber am Anfang steigt es Damit es
am Anfang nach unten stürzt, müssen
wir
all diese Berechnungen negieren Gehen
wir dazu zu Operatoren und bringen einen Subtraktionsblock
in ein leeres Feld. Nehmen wir nun den
Multiplikationsblock hier und legen ihn auf
die rechte Seite, subtrahieren ihn von Null
und verwenden all das, um Geschwindigkeit Y einzustellen.
Das B sollte jetzt anfangen
,
nach Das B sollte jetzt anfangen Es stürzt jedoch nicht
weit genug nach unten,
also versuchen wir, im Block für die eingestellte Geschwindigkeit Y mit
fünf zu multiplizieren fünf Das ist besser, aber um es etwas zu
verlangsamen, können
wir versuchen, die
Winkelvariable um vier zu ändern Das sollte funktionieren.
In Ordnung, also als Nächstes wollen
wir die Biene aufhalten wenn sie die
Spitze des Bogens erreicht, umdrehen und in
die entgegengesetzte Richtung stürzen Um zu beginnen, bevor wir die Geschwindigkeit Y einstellen, setzen
wir den Winkel auf Null zurück, wenn er 180 oder mehr erreicht hat Dadurch stürzt das Sprite
kontinuierlich
nach unten, sobald es seine
ursprüngliche Y-Position erreicht hat Gehen wir also zuerst zu Control und bringen einen ITN-Block
in einen leeren Bereich. Gehen
wir für die Bedingung zu Operatoren einen
OR-Block ein Fügen Sie dann einen Gleichheitsblock auf eine Seite und einen Block größer
als auf die andere Gehen wir nun zu Variablen
und prüfen, ob der Winkel gleich 180 ist oder der Winkel
größer als 180 ist Wenn ja, fügen wir einen
Block hinzu und setzen den Winkel auf Null Damit das Sprite dann in die
entgegengesetzte Richtung nach unten stürzt, müssen
wir nur seine Richtung
umkehren Gehen wir dazu
zu Bewegung und fügen I then
einen Punkt- und
Richtungsblock hinzu Gehen wir für die Eingabe zu Operatoren und fügen
einen Subtraktionsblock hinzu Kehren wir dann zur Bewegung zurück und machen wir Null
minus Richtung Wenn wir den Block I und dann direkt über
den
Block Y mit der eingestellten Geschwindigkeit setzen
und das Spiel starten, stürzt der Block B nun kontinuierlich in
wechselnde Richtungen nach unten Wir wollen
aber definitiv nicht, dass
es auf den Kopf gestellt wird, also ändern wir den
Rotationstyp auf links, rechts Da haben wir's. Wenn wir jedoch
ein paar Sekunden warten, können
wir sehen, dass das B langsam immer
näher an den Boden kommt. Das liegt daran, dass
wir
die Y-Position auch nach dem
Zurücksetzen des Winkels immer noch ändern , was dazu führt, dass
das Sprite etwas unter seiner
ursprünglichen Um das zu beheben,
können wir zu Control gehen, einen Stopp-Block
am unteren Rand
des I-Blocks
platzieren und dieses Skript
beenden Jetzt sollte es immer an
seiner ursprünglichen Y-Position
am oberen Rand des Bogens anhalten . Jetzt müssen wir nur noch
eine kurze Verzögerung hinzufügen , bevor das B die Richtung ändert
und wieder nach unten stürzt Dazu ziehen wir zuerst
den Punkt- und
Richtungsblock heraus und
legen ihn zur Seite. Wir warten bis nach der Verzögerung, um die Richtung zu
ändern Stellen wir sicher, dass der
Stop-Block wieder in
den Block I then eingefügt wird. Gehen wir nun zu
Variablen und fügen dem Block I then
einen weiteren Block
hinzu Lassen Sie uns die Verzögerung auf 30 setzen. Dadurch wird eine Verzögerung von 30
Bildern oder 1 Sekunde erzeugt. Als Nächstes überprüfen wir, bevor
wir den B-Swoop machen, ob die Verzögerung größer als Null
ist, und wenn ja, werden wir verschiedene
Dinge tun Gehen wir also zuerst zur Steuerung und bringen den Block I und dann
in einen leeren Bereich Für die Bedingung gehen wir zu den Operatoren und fügen
einen Block größer als ein. Gehen wir dann zu Variablen und prüfen, ob die Verzögerung
größer als Null ist. Wenn ja, wollen wir zuerst den verzögerten Wert
reduzieren, also lassen Sie uns eine Änderung pro
Block vornehmen und die Verzögerung
um einen negativen Wert ändern. Als Nächstes wollen wir überprüfen, ob der Wert für die Verzögerung Null erreicht
hat Falls ja, ändern wir Richtung
des Sprites und beginnen mit dem Swooping in
die Andernfalls wollen wir nicht, dass
das Sprite etwas tut, also beenden wir Gehen wir also zur Steuerung und fügen einen
Wenn-Dann-S-Block ein. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob die Verzögerung gleich Null ist. Wenn ja, können wir den Punkt- und
Richtungsblock einfügen, den wir hier gespeichert haben Andernfalls können wir zur Steuerung wechseln, einen Stopp-Block einfügen
und dieses Skript beenden. Wenn wir nun all
das direkt über
dem Change-X-Block platzieren und das Spiel starten, wird
es
zwischen jedem Sturz des B eine kurze Verzögerung geben. Wenn wir jedoch etwas genauer hinschauen, bewegt
es sich tatsächlich ein wenig
horizontal weiter , auch wenn seine vertikale
Bewegung aufgehört hat Um das zu beheben,
müssen wir nur den X-Block für
die Änderung nehmen und ihn unter
den Block I verschieben , wo
wir den Winkel neu einstellen. Da haben wir's. Okay, wir sind fast fertig mit
den Be-Sprites. Aber lassen Sie uns zuerst das
Spiel ausführen und den Gottmodus ausschalten. Wenn wir auf das Be springen, tötet
es die Biene,
was zu erwarten war. Wenn wir jedoch den richtigen Zeitpunkt haben und die Biene uns beim Fallen von der
Seite trifft, tötet
sie auch die Biene,
obwohl sie uns wahrscheinlich stattdessen verletzen
sollte. Das passiert, weil
im Skript „Scheck berührt
Spieler“ die Biene stirbt, wenn die Biene den Spieler
berührt ,
solange sich
der Spieler im Fallzustand befindet . Das war mit
dem Schneckengeist in Ordnung , weil die Schnecken immer
am Boden sind,
aber es bereitet
Feinden, die sich in der Luft befinden, Probleme Wir können
also dafür sorgen, dass
sich das
Sprite des Spielers im Herbstzustand befindet und mindestens
etwas höher
als
das Bienengeistchen sein muss , um die Biene zu
töten Gehen wir dazu zunächst zu Operatoren und bringen einen Block
in einen leeren Bereich Verwenden wir
hier für die eine Seite den Zustand, dass Spieler gleich fallen, und für die andere Seite fügen wir einen Block
größer als ein Platzieren Sie dann einen
Zusatzblock auf der rechten Seite. für die linke Seite
des Blocks „Größer als Verwenden
wir für die linke Seite
des Blocks „Größer als“ ein Duplikat des Blocks mit
dem Status „Spieler“. Aber dieses Mal wollen wir
die Y-Variable des Spielers ermitteln. Jetzt können wir zu den Variablen gehen
und prüfen, ob das Y des
Spielers größer ist als die Y-Variable der B-Sprites
plus ein bestimmter Betrag Ich fand, dass 15 ziemlich gut
funktioniert. Wenn wir das alles jetzt als Bedingung nehmen und
das Spiel laufen lassen, tut es dem Spieler
jetzt weh, in das B zu
springen. Jetzt müssen wir also tatsächlich auf das B
springen, um es zu töten. Perfekt. In Ordnung, wir sind
fertig mit dem Programmieren des B-Sprites Jetzt können wir damit fortfahren,
die Klone zu den Levels hinzuzufügen. Ich werde zuerst
diesen Create Clone Block loswerden. Da dieser nur zu
Testzwecken gedacht war, werde ich diejenigen erstellen, die ich tatsächlich im Spiel verwenden werde. Okay, hier sind die
Create Clone Blöcke , die ich für die Bienen verwende. Und sobald wir bereit sind, können wir mit der nächsten Lektion
weitermachen. Wo wir den Flugfeind hinzufügen werden.
103. Den Flugfeind hinzufügen: Um den Fliegenfeind zu erstellen, wird hier
natürlich der
Fliegengeist verwendet. Wie beim Be Sprite hat der Fly Sprite eine Fliegenanimation mit zwei
Frames, ein Totenkostüm und
eine Hip Die Fliegen werden
so ziemlich genau das
Gleiche tun wie die Schnecken, nämlich sich
über eine bestimmte Entfernung hin und her bewegen, nur dass sie dies
in der Luft statt
am Boden tun in der Luft statt
am Okay, also den Fliegengeist zu programmieren, wird eigentlich sehr
einfach sein da wir
einfach einige der
Skripte sowohl vom Schneckensprite als auch
vom Bienensprite stehlen und
nur ein paar Anpassungen vornehmen
können Skripte sowohl vom Schneckensprite als auch
vom Bienensprite stehlen und nur ein paar Anpassungen vornehmen Gehen wir also zuerst zum B-Sprite-Code
. Vom B-Sprite aus können
wir das Skript, das den Spieler
berührt,
zusammen mit dem Animate-Skript
in das Fly-Sprite kopieren , die Ebenen
sortieren Als ich als Klon angefangen habe, wenn ich Update
drei erhalte und wenn ich Update eins
erhalte Gehen wir jetzt zum
Snell-Sprite. Von hier aus können wir
Craik Clone Handle-Aktionen kopieren. Wenn ich Update zwei erhalte, das Setup-Skript und
das Skript mit grüner Flagge Okay, jetzt gehen wir in den Fly-Sprite-Code
und bereinigen ihn Wir müssen nur ein paar
Änderungen vornehmen. Zunächst werden wir im Animationsskript die Fliegenanimation etwas
schneller machen, indem
wir den Animationsframe um
0,25 ändern Als Nächstes wollen
wir im Rake-Clone-Skript zum Fly Zero-Kostüm wechseln
und
den Status auf „Fly“ Und schließlich wollen
wir, dass sich die Fliegen bei Handle-Aktionen um
einiges schneller bewegen als die Schnecken also im Block Change X Lassen Sie uns also im Block Change X mit
2,5 multiplizieren, und das war's Jetzt können wir zum Setup-Skript übergehen und mit
der
Erstellung einiger Klone beginnen Lassen Sie uns zunächst
die Blöcke zum Erstellen von Klonen loswerden und es steht uns frei, einige Fliegen
zu Level eins in Ihrem Spiel hinzuzufügen, aber ich werde nur
einige zu Level zwei und drei hinzufügen Also zuerst werde ich hier das I-Level, das
einem Block entspricht, loswerden . In Ordnung. Und für den ersten Klon starten
wir das Spiel. Schalte den Gottmodus ein und
wechsle zu Level zwei. Lass uns in die Nähe der oberen
rechten Ecke des Levels kommen. Zu diesem Plättchen mit dem
Ausrufezeichen erstellen
wir hier eine Fliege, die zwischen den Wänden hin und her
fliegt Fügen wir also einen kritischen
Klonblock für Level zwei und verwenden wir 12 80 für X,
530 für Y, 200 für Entfernung und minus 90 wir nun sicher, dass Sie den
Rotationstyp
der Fly-Sprites auf links und
rechts setzen Rotationstyp
der Fly-Sprites auf links und dann auf die grüne Flagge klicken Exzellenz. Wir haben jetzt
unseren ersten Flugfeind. In Ordnung, jetzt erstelle ich
die restlichen Fliegenklone. Und hier sind alle
Crêpe-Klonblöcke, die ich verwende. Okay, wir werden die Dinge am Laufen halten indem wir als Nächstes
den Fischfeind hinzufügen
104. Den Fischfeind hinzufügen: Der letzte Feind, den wir dem Spiel
neben dem Boss
hinzufügen werden , ist hier
der Fish Sprite. Die Kostüme für den
Fish Sprite bestehen aus einer Animation mit zwei Frames nach oben,
einer Animation mit zwei Frames nach unten, einem Totenkostüm und einer Hip Box Die Fische
beginnen natürlich im Wasser, wobei ihr Kopf
leicht aus dem Wasser herausragt Nach einer kurzen Verzögerung springen
sie
aus dem Wasser, fallen zurück ins Wasser und wiederholen den Vorgang. Damit soll versucht
werden,
den Spieler daran zu hindern ,
über einen bestimmten
Teil des Wassers zu springen . Okay, und um
das Fish Sprite zu codieren, können
wir damit beginnen, in
den Fly-Sprite-Code zu gehen und alle Skripte zu
kopieren Okay, also
lasst uns im
Fish Bright-Code zuerst zum
Create Clone Script kommen Das Kostüm, zu dem wir wechseln
wollen, ist das Up-Zero-Kostüm. Als Nächstes können
wir, da die
Fischklone immer am unteren Rand des
Levels im Wasser
beginnen, am unteren Rand des
Levels im Wasser
beginnen, für
jeden die
gleiche Y-Position verwenden , sodass wir
den Y-Eingabeblock
im eingestellten Y-Block loswerden den Y-Eingabeblock
im eingestellten Y-Block und ihn auf
minus eins oder fünf setzen können Das bedeutet, dass wir
im Skript auch
keine Y-Eingabe mehr angeben müssen im Skript auch
keine Y-Eingabe mehr angeben Klicken wir also mit der rechten Maustaste auf den
definierten Block und wählen Bearbeiten. Lassen Sie uns zuerst das Y-Etikett und dann die Y-Eingabe löschen. Wir werden auch keine
Entfernungseingabe benötigen. Lassen Sie uns also die
Entfernungsbeschriftung und
dann die
Entfernungseingabe löschen und auf Okay klicken Als Nächstes sollte der
Startstatus aktiviert sein, und wir müssen
kein minimales und maximales
X für den Fisch festlegen , da er sich nicht horizontal bewegt, sodass wir
den Block I thin s loswerden können Wir müssen jedoch ein paar neue Variablen
erstellen. Gehen wir also zu Variablen. Zunächst können wir die
Maxx- und Minix-Variablen umbenennen. Lassen Sie uns eine ändern, um
Y zu starten , und die
andere auf Timer ändern I müssen wir auch eine neue Variable
erstellen. Nennen wir das eine Gewichtszeit und machen es nur für
diesen Sprite, und wir müssen es nicht zeigen Die gesamte
Gewichtungszeitvariable gibt an, lange ein Klon zwischen den Sprüngen warten
soll Dieser Wert wird sich
während des Spiels nicht ändern, sodass wir ihn
im Green Flag-Skript festlegen können Dazu fügen wir dem Skript
zwei Blöcke hinzu
und setzen die Wartezeit für 30 Frames
auf 30. Okay, jetzt kommen wir zurück
zum Create Clone Script. Wir verwenden die
Start-Y-Variable, um
einen Klon nach dem Springen wieder in seine ursprüngliche
Y-Position zu bringen . Um die Variable zu setzen, fügen
wir also direkt nach dem eingestellten Y-Block einen zu blockierenden Satz hinzu, und wir können den Start Y
mithilfe der Y-Variablen setzen. wir nun zwei weitere Blöcke hinzu und setzen den Timer auf Gewichtungszeit und
Geschwindigkeit auf Null. Okay, als Nächstes wollen
wir im
Animationsskript animieren, ob sich der Klon entweder
im aktiven
oder im heruntergefahrenen Zustand befindet , oder mit anderen Worten, nicht im toten Gehen wir also zu Operatoren und bringen einen Knotenblock
in einen leeren Raum. Dann können wir den Block „Status ist
gleich fliegen“
in den Knotenblock verschieben , ihn in den Zustand „Gleich tot“
ändern
und den Knotenblock als Bedingung verwenden Und lassen Sie uns den Anim-Frame um 0,2 ändern
. Ebenso wollen
wir, wenn ich Update 1
erhalte, überprüfen, ob
der Klon den Spieler berührt , obwohl sich der Klon nicht im toten Zustand
befindet.
So können wir den Block „Status ist
gleich fliegen“ entfernen und
ihn durch ein Duplikat
des Blocks „Nicht Status
ist tot“ aus
dem animierten Skript ersetzen ihn durch ein Duplikat
des Blocks „Nicht Status
ist tot“ aus
dem animierten Skript Suchen wir nun das
Handle-Action-Skript. Im Moment können wir
einfach
alles loswerden, nachdem das Ich
tot einem Block entspricht Ordnung, jetzt können wir zum
Setup-Skript gehen und einige Klone
erstellen Wir werden eigentlich nur
in Level drei Fischklone
erstellen Also können wir hier zuerst
den Block I Level entspricht
drei herausziehen , den Block dann S
entfernen
und den Block I Level entspricht
drei Block wieder zum Drehbuch hinzufügen, und den Block I Level entspricht
drei Block wieder zum Drehbuch hinzufügen bevor wir
das
Kostüm auf einen leeren Block umstellen Und lassen Sie uns die
Create Clone-Blöcke loswerden. Lass uns jetzt das Spiel ausführen. Schalte den guten Modus ein und
wechsle zu Stufe drei. Lass uns auf den Grund gehen. Wir werden den ersten Klon
im Wasser ungefähr hier erschaffen , und wir werden ihn hier
bis zur Münze springen lassen. Okay, gehen wir also zu MI Blocks und fügen einen
Crate-Clone-Block für Level drei Und lassen Sie uns drei auf fünf
für X und 90 für Richtung verwenden. Klicken wir erneut auf die
grüne Flagge. Und jetzt gehen wir
ganz nach rechts. Wir werden
hier einen weiteren Klon erstellen, indem wir zu dieser Münze springen. Fügen wir also einen weiteren
Crit-Clone-Block und verwenden wir 17 64 x und
negative 94-Richtung Okay, lassen Sie uns weitermachen und den
Rotationstyp
der Sprites auf links, rechts ändern Rotationstyp
der Sprites auf links, rechts Und wenn wir erneut auf die
grüne Flagge klicken, haben
wir jetzt zwei Fischklone, die im
Wasser animieren Jetzt müssen wir die
Fische in die Luft springen lassen. Suchen wir dazu das
Handle-Action-Skript. Zunächst möchten
wir am Ende
des Skripts überprüfen, ob sich der Klon derzeit an der
Y-Startposition befindet. Gehen wir also zunächst zur Steuerung und fügen einen
Wenn-Dann-Block ein. Für die Bedingung gehen wir zu den Operatoren und fügen einen
Gleichheitsblock Gehen Sie dann zu Variablen und
überprüfen Sie, ob Y gleich Start Y ist. Wenn ja, überprüfen wir, ob
der Timer abgelaufen ist, und wenn ja,
lassen wir den Andernfalls
reduzieren wir einfach den Timer. Gehen wir also zur Steuerung und fügen Ich-Think-Block
einen
Ich-Thins-Block hinzu. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob der Timer gleich Null ist. Um den Klon zum Springen zu bringen
, können
wir zuerst einen Satz zum Blockieren eingeben und dann die Geschwindigkeit Y 230 einstellen Dann können wir
blockweise eine Änderung vornehmen und Y durch Geschwindigkeit Y. Und wenn der Timer
nicht gleich Null ist, können
wir
blockweise eine Änderung vornehmen und den Timer
um einen negativen Wert ändern Als Nächstes ändern wir weiterhin Y-Position
des Klons mit
Geschwindigkeit Y , während wir den Klon mithilfe der Schwerkraft
wieder nach unten ziehen Bevor wir überprüfen,
ob Y gleich Start Y ist, überprüfen
wir zunächst, ob Y
größer als Start Y ist. Gehen wir
also zuerst zur Steuerung und bringen einen If-Block
in einen leeren Bereich Gehen wir für die Bedingung zu Operatoren und fügen einen Block größer als
ein Gehen wir dann zu Variablen und prüfen, ob Y größer
als Start Y ist. Wenn ja, nehmen wir eine Änderung
blockweise und
speedY nach der Schwerkraft Dann nehmen wir
eine weitere Änderung Block vor und ändern Y durch Geschwindigkeit Y. Wenn wir das jetzt setzen,
dann Block direkt über
dem IY entspricht Start
Y-Block und das Spiel starten Nach der ersten Pause von 1 Sekunde springen
die Fische kontinuierlich hoch und fallen Es schafft es jedoch nicht ganz bis zu
seiner Y-Startposition,
bevor es wieder springt, und das liegt daran, dass wir
die Y-Position
sofort wieder nach oben heben ,
sobald es
die Startposition erreicht. Um das Problem zu beheben, können wir an einem Stoppblock am Ende
des I
Y ist größer als der
Start-Y-Block
kontrollieren Ende
des I
Y ist größer als und dieses Skript
beenden. Dadurch wird bis zum
nächsten Frame gewartet , bevor
der Klon wieder springt. Okay. Nun, zwei weitere
Dinge, die wir tun wollen, sind, dass der
Klon in
den Down-Zustand wechselt , sobald
er wieder
herunterkommt , und dass er auch jedes Mal
pausiert, wenn er den Boden
erreicht. Um in den Down-Zustand
zu wechseln, bringen
wir zunächst einen If-Block
in ein leeres Feld. Für die Bedingung gehen wir zu den Operatoren und geben einen
Block mit weniger als ein. Gehen wir dann zu Variablen und prüfen, ob die Geschwindigkeit Y kleiner als Null
ist. Das bedeutet, dass der Klon
wieder herunterkommt, sodass wir einen Satz zum Blockieren und dann direkt nach unten
setzen können. Jetzt platzieren wir diesen dünnen Block direkt über dem Block Stop
this Script. Als Nächstes, damit der Klon am unteren Rand
pausiert, gehen
wir zur Steuerung und bringen einen weiteren I-Thin-Block
in eine leere Stelle. Für den Zustand dieses Blocks gehen
wir zu Operatoren und
fügen einen Equals-Block ein Gehen Sie dann zu Variablen und
überprüfen Sie, ob Y gleich Start Y ist. Wenn ja, können wir einen Satz zum
Blockieren hinzufügen und den Timer
auf die Wartezeit setzen Und wir sollten auch
einen weiteren Satz zum Blockieren hinzufügen und zweiten Status so
einstellen, dass
der Klon wieder nach oben zeigt Wenn wir nun diesen „if
then block“ über den Block „
Dieses Skript stoppen“ setzen und falls y
größer als Start
Y ist und das Spiel starten, wechselt
der Fisch jetzt in den
Down-Zustand, wenn er wieder
herunterfällt , und pausiert kurz unten, bevor er wieder
springt Das funktioniert definitiv,
und es sieht okay aus, aber das Anhalten am Boden
scheint mir etwas zu abrupt Es wäre besser,
wenn wir die Fische am Boden allmählich zum
Stillstand
kommen lassen und uns
dann wieder in
ihre Ausgangsposition zurückbewegen, dann wieder in
ihre Ausgangsposition zurückbewegen bevor wir eine
Pause einlegen und Wenn sich der Klon im Abwärtszustand
befindet und seine Y-Position nicht
immer noch über seiner
Y-Startposition liegt , können
wir den Klon weiter nach
unten bewegen und gleichzeitig die Geschwindigkeit schrittweise auf Null
reduzieren Danach bewegen wir
ihn Schritt für Schritt nach oben bis er wieder an
seiner ursprünglichen Position ist. Okay, also
lassen Sie uns zuerst zur Steuerung gehen und ein weiteres Wenn und dann einen
Block in einen leeren Bereich bringen. Für die Bedingung
wollen wir überprüfen, ob sich der Klon
im Downse befindet und ob er sich nicht immer noch über seiner
Startposition
befindet Gehen wir also zu den Operatoren und bringen
zuerst einen AND-Block rein. Setzen wir einen
Gleichheitsblock auf die eine Seite und für die andere Seite verwenden
wir einen Block, dann einen Block, der größer als ist dann einen Block, der größer als Gehen wir nun zu den Variablen
und überprüfen wir, ob Status gleich unten ist und Y nicht
größer als Start Y ist. Jetzt hier werden wir Geschwindigkeit Y schrittweise auf
Null reduzieren Aber sobald Geschwindigkeit Y nahe
Null ist, wollen
wir den
Klon in den Upstate schalten und ihm
erlauben, sich
wieder an seine
ursprüngliche Position zu bewegen wieder an seine
ursprüngliche Position zu Gehen wir also zunächst zur Steuerung über und fügen dem ITN-Block einen ITN-Outs-Block
hinzu Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Dann legen wir einen runden
Block auf die linke Seite. Gehen wir nun zu Variablen
und prüfen wir, ob
der gerundete Wert
der Geschwindigkeit Y gleich Null ist der Geschwindigkeit Y gleich Null Wenn ja, lassen Sie uns
einen Satz zum Blockieren hinzufügen und
Geschwindigkeit Y auf Null setzen , um zu verhindern, dass sich der Klon weiter nach unten
bewegt Dann fügen wir einen weiteren Satz zum Blockieren hinzu und setzen Zustand zwei auf Wenn Geschwindigkeit Y noch nicht nahe Null
gekommen ist, werden
wir sie weiter reduzieren. Dazu fügen wir TS-Teil
einen Block mit zwei Sätzen hinzu und stellen die Geschwindigkeit Y ein. Für die Eingabe gehen wir zu Operatoren und fügen
einen Multiplikationsblock Kehren wir dann zu den Variablen zurück und setzen wir Geschwindigkeit Y
auf Geschwindigkeit Y mal 0,5 Dies muss ein
Dezimalwert von 0 bis 1 sein, und je höher der
Wert ist,
den wir wählen, desto langsamer
wird der Klon gestoppt Um
den Klon tatsächlich zu verschieben, müssen
wir jedoch eine Änderung für
Block und Y für Geschwindigkeit Y vornehmen. Schließlich, nach dem ITN-Block, gehen
wir zu Control, einen Stoppblock ein
und beenden dieses Skript Wenn wir jetzt diesen
ITN-Block über alle
anderen stellen , um
die Y-Variable zu überprüfen , und
das Spiel ausführen , macht der Fisch eigentlich genau das
Gleiche wie zuvor Das liegt daran, dass wir hier
den zweiten Status einrichten,
sobald der Klon wieder an seine
ursprüngliche Position
zurückfällt an seine
ursprüngliche Position
zurückfällt Da der dünne Block
hier oben nach
dem Zustand „down“ sucht, ist
die Bedingung nie erfüllt. Eigentlich wollen wir hier weder
den zweiten Zustand noch den Timer
einrichten, also können wir diesen ganzen Block IY ist
gleich Start Y herausziehen und zur Seite legen Aber stellen wir sicher, dass
der Block „Stopp dieses Skripts“ wieder an den unteren Rand des wird, ist größer
als
der Start-Y-Block Wenn wir es noch einmal versuchen, kommt
der Fisch jetzt allmählich am
Grund zum Stillstand , bevor er in den Hinterland
wechselt Okay, das Letzte, was wir tun
wollen, ist, den Fisch
wieder in seine Ausgangsposition zu bringen wieder in seine Ausgangsposition zu ,
damit er eine Pause einlegen
und wieder springen kann Dafür
müssen wir einen
weiteren Block
in einen leeren Raum bringen . Für diese Bedingung
überprüfen wir, ob sich der Klon
im Up-Status und unter
seiner Startposition befindet. Gehen wir also zu den Operatoren
und fügen einen AND-Block hinzu. Dann setzen wir auf der einen Seite einen
Gleichheitsblock und auf der anderen Seite einen
Block mit dem Wert „Weniger als Gehen wir nun zu Variablen
und prüfen, ob der Status gleich hoch und y kleiner als Start Y ist. Wenn ja, können wir eine Änderung blockweise vornehmen
und Y um eins ändern , um es einen Schritt nach oben zu
bewegen Als Nächstes prüfen wir,
ob sich der Klon seiner
Startposition angenähert hat seiner
Startposition angenähert Dazu
nehmen wir zunächst den Block IY ist gleich
Start Y, den wir
hier gespeichert haben, und platzieren ihn direkt
unter dem Block für die Änderung von Y Anstatt den
Y-Wert hier direkt zu verwenden, da er möglicherweise nicht genau mit dem Start-Y-Wert
übereinstimmt, wollen
wir zu Operatoren gehen und den Y-Block
mit einem runden Block
umschließen Und wenn das der Fall ist, wollen
wir den
Timer auf Wartezeit setzen, aber der Klon wird
sich bereits im Upstate befinden Wenn dieser Wert auf Block gesetzt ist, setzen
wir Y auf Start Y,
um den Klon an seine
exakte Startposition zu bringen Gehen wir abschließend zu Control, fügen einen Stoppblock
ganz unten am äußeren wenn auch dünnen Block hinzu und
beenden das Skript. Wenn wir nun diesen
wenn dünnen Block über
alle anderen legen und es
versuchen,
bleibt
der Fisch jetzt glatt am Boden stehen, kommt
langsam wieder hoch, macht eine bleibt
der Fisch jetzt glatt am Boden stehen, kommt
langsam wieder hoch, Pause und springt Perfekt. Alles klar, das
Letzte, was wir tun müssen um die
ersten drei Level zu beenden ,
ist das Hinzufügen der Sprungpads, was wir in
der nächsten Lektion tun werden.
105. Die Jump-Pads hinzufügen: Es gibt ein paar Stellen
in Level drei, die
etwas zu hoch sind , als dass der
Spieler sie normal erreichen könnte. Also werden wir
dort Sprungpads bereitstellen , um die Sprunghöhe des
Spielers zu erhöhen, und wir werden hier das
Sprungpad-Sprite verwenden Wenn wir uns die Kostüme
ansehen,
hat der Jump-Pad-Sprite ein Down-Kostüm für der Spieler
gerade nicht darauf springt, ein Up-Kostüm für den Moment, in dem er gerade ist, und es hat auch eine
separate Hüftbox für den Downstate
und den Upstate Okay, um
das Jump-Pad-Sprite zu codieren, fangen wir damit an, zum Coin-Sprite-Code zu
gehen und Lassen Sie uns zunächst das Skript „
Scheck berühren Spieler“ kopieren. Wir werden
die Sprungpads nicht animieren, also können wir das
Animationsskript überspringen. Als Nächstes können wir eine
CrakKlone-Sortierebene überschreiben. Und die Position anpassen. Lassen Sie uns nun herausfinden, wann ich
als Klon anfange und wann ich Update drei
erhalte. Denn wenn ich Update zwei erhalte, wollen
wir alles außer
dem Animationsblock Lassen Sie uns also zuerst den Animationsblock
herausziehen, den Rest
des Skripts
kopieren und
dann den Animationsblock wieder einfügen Lassen Sie uns abschließend kopieren,
wenn ich Update 1 erhalte, wenn ich das Setup erhalte Und das Skript mit grüner Flagge. Gehen wir jetzt zum
Jumppad Sprite und bereinigen den Code Okay, also im Skript, das Spieler
checkt, wechseln
wir vorerst zum
Down-Hip-Box-Kostüm, und wir werden
hier nicht
die Coins-Variable ändern oder den Klon
löschen , damit wir
diese drei Blöcke im
Block „Ich berühre“ loswerden können diese drei Blöcke im
Block „Ich berühre Als Nächstes wechseln
wir im Crete-Clone-Skript zum Down-Kostüm. Wir werden keine
Nom-Frame-Variable benötigen, aber wir benötigen
eine State-Variable,
sodass wir zu Variablen wechseln und einen Anim-Frame in State umbenennen können Ich und hier können wir den Status auf
down ändern. Und lassen Sie uns den Block mit
den Wechselmünzen loswerden. Ordnung, jetzt können wir
weitermachen und dem Spiel
ein paar
Jump-Pad-Klone hinzufügen . Kommen wir also zum
Setup-Skript. Wir werden nur
Sprungpads zu Level drei hinzufügen, also können wir zuerst
die Create Clone Blöcke loswerden, und die Stufe I
entspricht drei Blöcken, den Block herausziehen, das Switch-Kostüm
am leeren Block am unteren Rand
anbringen ,
die anderen
Wenn-Dann-Blöcke
loswerden Und verschiebe das alles
zurück in das Drehbuch. Lass uns jetzt das Spiel ausführen. Vergewissere dich, dass der Gottmodus aktiviert ist und dass wir uns in Level drei befinden. Und lass uns zur
unteren Mitte des Levels gehen. Wir werden den ersten
Jump-Pad-Klon hier
direkt unter der Münze auf den Boden legen . Okay? Gehen wir also zu M-Blöcken und fügen einen
Kisten-Clone-Block für Level drei Und nehmen wir 625 für X
und minus drei für Y. Gehen wir
nun
etwas weiter nach rechts Wir platzieren den anderen genau
hier unter dem grünen Schlüssel. Fügen wir also einen weiteren
kritischen Klonblock und verwenden wir 13 55 für X, und wir werden auch für
diesen einen Y-Wert von
minus Drei verwenden auch für
diesen einen Y-Wert von
minus Drei Wenn wir erneut auf die
grüne Flagge klicken, können
Sie jetzt die
Jump-Pad-Klone sehen, aber sie
verwenden derzeit Hip-Box-Kostüme Das liegt daran, dass
wir
im Drehbuch, das
Spieler berührt, zum
Down-Hip-Box-Kostüm wechseln Und weil wir
kein Anime-Drehbuch haben , um es
wieder zu einem normalen Kostüm zu machen, bleibt
es einfach
beim Hipbox-Kostüm Im Moment können wir das Problem beheben
, indem wir zu Looks gehen, einen Block
für das Umschalten des Kostüms am Ende des Drehbuchs
hinzufügen am Ende des Drehbuchs und dann
zum Down-Kostüm wechseln Jetzt sollten wir sehen, wie die Klone das Daunenkostüm
benutzen. Okay, im Gegensatz zu
Feinden und Sammelobjekten wollen
wir es so gestalten, dass der Spieler nicht
durch die Sprungbretter laufen kann Um das zu tun, müssen wir
zum
Sprite-Code des Players gehen und das Skript „
Check Touching Solid“ finden Und hier
überprüfen wir nicht nur, ob wir das Level-Sprite
oder das Lock-Sprite
berühren, sondern auch, ob
wir das Jump-Pad-Sprite
berühren Zuerst können wir den OR-Block
hier
duplizieren und ihn für den Moment an einer
leeren Stelle platzieren Lassen Sie uns den
ersten Berührungsblock loswerden und den anderen so ändern,
dass er das Jumppad berührt. Jetzt können wir den
Or-Block vom
Wenn-Dann-Block auf die linke
Seite dieses Oder-Blocks verschieben Wenn-Dann-Block auf die linke
Seite dieses Oder-Blocks dann all das
als Bedingung verwenden. Wir sollten jetzt nicht in der Lage sein, durch die Sprungflächen zu
gehen. Und wir können auch
auf ihnen laufen. In Ordnung, jetzt gehen wir zurück
zum Sprite-Code des Jump-Pads. Im
Check-Touching-Player-Skript wollen
wir eigentlich nur einen
dieser Blöcke ausführen , wenn sich der
Klon im Downstate befindet Wenn es im Hinterland ist, wechseln
wir einfach zum
Up-Hip-Box-Kostüm wechseln
wir einfach zum
Up-Hip-Box-Kostüm Gehen wir also zuerst zur
Steuerung und holen uns einen ITN-Outs-Block und wickeln
den I-Teil um alles
in den Jetzt können wir
das Switch-Kostüm
auf den unteren Block hier
in den Outs-Teil verschieben , aber wir wollen stattdessen zum
Up-Hip-Box-Kostüm wechseln Für den Zustand
des ITN-Outs-Blocks gehen
wir zu Operatoren und
fügen einen Equals-Block Gehen wir dann zu Variablen und prüfen, ob der Status gleich down ist Wenn ja, wechseln wir
zum Down-Hip-Box-Kostüm und prüfen, ob wir den Spieler
berühren Wenn wir jetzt den Spieler
berühren, wechseln wir
vorerst einfach in den Upstate Lassen Sie uns also ein Set zum
Blockieren hinzufügen und den zweiten Status einrichten. Und wir wollen hier auch ein Duplikat
des Switch-Kostüms zum
Up-Hip-Boxblock
mitbringen . Bevor wir das ausprobieren, müssen
wir
je nach Bundesstaat immer noch
entweder zum normalen Down-Kostüm
oder zum normalen Up-Kostüm zurückkehren entweder zum normalen Down-Kostüm
oder zum normalen Up-Kostüm . Wir
wollen das eigentlich machen wenn ich ein Update zum Skript erhalte. Und weil wir hier noch ein paar Dinge
tun müssen , werden
wir dafür einen
benutzerdefinierten Block erstellen. Gehen wir also zu MyBlocks
und erstellen einen neuen. Wir können es Handle
Actions nennen und auf Okay klicken. Fügen wir dem Block I then
des Update-To-Skripts einen Block mit
Handle-Aktionen hinzu. Bringen Sie dann den definierten
Handle-Aktionsblock in einen leeren Bereich. Und vorerst können wir
zum richtigen Kostüm wechseln, indem zuerst zu Looks gehen und einen
Switch-Kostümblock einfügen, dann zu Variablen gehen und einen
Statusblock als Eingabe verwenden. Wenn wir jetzt alles
ausprobieren, wird es
jedoch nicht wirklich funktionieren. Auf ein Sprungpad zu springen, bringt
es nicht in den Hinterland. Das liegt daran, dass sich
die Sprites des Spielers vertikal
bewegen und das Sprite
gerade so weit nach oben
bewegt, dass seine Hüftbox die Hüftbox
des Jump-Pads nicht berührt Daher erkennt das Skript, das den Spieler
berührt ,
niemals eine Kollision
mit dem Wir können den Klon also zuerst um einen Schritt nach
oben bewegen dann nach einer Kollision suchen. Dazu verwenden Sie das Skript Check
Touching Player. Gehen wir zur Bewegung über, schnappen uns eine Änderung Y für Block und platzieren sie direkt unter dem Umschalt-Kostüm, um Block
nach unten zu drücken. Und wir müssen Y nur eins nach dem anderen
ändern. Nachdem wir überprüft haben, ob
wir den Spieler berühren, wollen
wir den Klon wieder an seine
ursprüngliche Position bringen. Nehmen wir also eine weitere
Änderung Y für Block, platzieren sie direkt unter dem Block, der den
Spieler berührt und ändern Y um einen negativen Wert. Wenn wir jetzt das Spiel starten
und auf das Sprungpad springen, wechselt
es in den Up-Status. Okay, als Nächstes wollen
wir, dass das Jump-Pad nach
einer kurzen Verzögerung wollen
wir, dass das Jump-Pad nach automatisch wieder in den Down-Zustand
zurückwechselt. Dazu benötigen wir
eine neue Variable. Gehen wir also zu Variablen
und erstellen eine neue. Wir können es Timer nennen und es nur
für dieses Sprite machen ,
und dann verstecken wir es Fügen wir nun ein weiteres Blockier-Set zum Block hinzu, wenn es mit dem Plater-Block in
Berührung kommt, und setzen wir den Timer auf 20. Dadurch entsteht eine
Verzögerung von 20 Frames, was knapp einer Sekunde entspricht Okay? Nun, um
die Timer-Variable tatsächlich zu verwenden, kommen
wir zum
Handle-Action-Skript. Die Timer-Variable ist nur wichtig , wenn sich der Clone derzeit
im Up-Status befindet. Um das zu überprüfen, gehen
wir zunächst zur Steuerung und bringen einen
Wenn-Dann-Block in einen leeren Bereich. Gehen wir für die Bedingung zu Operatoren und fügen einen Gleichheitsblock ein. Gehen wir
dann zu Variablen und
prüfen, ob der Status gleich hoch ist Falls ja, reduzieren wir die
Timer-Variable, indem eine
Änderung pro Block vornehmen und den Timer um einen negativen Wert
ändern Jetzt überprüfen wir, ob der
Timer abgelaufen ist, und wenn ja, wechseln wir in
den Down-Status. Gehen wir also zur
Steuerung und fügen direkt nach dem Change-Timer-Block einen Wenn-Dann-Block hinzu. Für die Bedingung können wir hier
ein Duplikat des Blocks state
equals up verwenden hier
ein Duplikat des Blocks state
equals up Aber mit diesem wollen wir
überprüfen, ob der Timer gleich Null ist. Wenn ja, gehen wir zu Variablen,
fügen einen Satz zum Blockieren hinzu
und setzen den Status auf down Jetzt können wir all
das dem Handle-Action-Skript direkt
über dem Block „
Kostüm zum Status wechseln“ hinzufügen das dem Handle-Action-Skript direkt . Wenn wir das Spiel jetzt starten
und auf ein Sprungpad springen, wechselt
es kurzzeitig in
den Upstate, bevor es
wieder in den Down-Status wechselt Ordnung, das Letzte,
was wir tun müssen,
ist, den Spieler dazu zu bringen, nach
oben zu springen, wenn das Sprungpad steigt Lassen Sie uns dafür zum Drehbuch zurückkehren, bei dem der Scheck den
Spieler berührt Wir wollen sicherstellen, dass der Spieler direkt nach oben
springt,
nicht nach links oder rechts also im I
touching-Player-Skript Lassen Sie uns also im I
touching-Player-Skript zunächst einen weiteren Satz zum
Blockieren hinzufügen und Bounce DR auf Null setzen Jetzt können wir zu Events gehen, einen Broadcast-Block
und einen Broadcast-Bounce-Player hinzufügen Lass es uns versuchen. Wenn wir jetzt auf ein Sprungpad springen, springen
wir ein bisschen nach oben Aber natürlich wollen wir noch ein bisschen
höher
springen Dazu müssen wir zum Code für
die Player-Sprites gehen und uns das
Bounce-Player-Skript suchen Im Block I bounce dr ist
gleich Null setzen
wir die Abprallkraft gerade
auf drei Das ist in Ordnung, wenn man auf die
Feinde springt. Aber für die Sprungpads wollen
wir eine viel
höhere Sprungkraft verwenden Dazu können wir
zunächst überprüfen, ob
wir das
Sprungpad-Sprite berühren, und
dann die
Sprungkraft entsprechend einstellen Gehen wir also zuerst zur Steuerung und schnappen uns einen
I-Thin-Out-Block, fügen ihn dem I-Teil
des Blocks I bounce dr entspricht Null hinzu und fügen
einen festgelegten Abprallkraftblock in beide Teile ein Für den Zustand
können wir zur Sensorik übergehen, einen Berührungsblock einbauen und prüfen, ob wir das Sprungpad
berühren Wenn wir ein Sprungpad berühren, setzen
wir die Sprungkraft auf 15. Andernfalls
setzen wir es weiterhin auf drei. Da sich die Sprites des
Spielers jedoch
vertikal bewegen, kann
das dazu führen , dass sich die Sprites nicht
wirklich berühren sollten
wir das Sprite des
Spielers zunächst ein
wenig nach unten bewegen , bevor wir prüfen, ob es das
Spritpad berührt Gehen wir dazu zur Bewegung über. Fügen Sie eine Änderung Y für Block direkt über dem Block I, der das
Sprungpad berührt, hinzu, und lassen Sie uns Y
um einen negativen Wert ändern. Wir wollen das
Sprite danach auch wieder nach oben bewegen. Fügen wir also direkt
unter dem
If-Thin-Out-Block eine blockweise Änderung hinzu und ändern sie
durch eine positive Okay, lass es uns versuchen. Fantastisch. Jetzt
springen wir viel höher Und wenn wir beim
Hüpfen eine Sprungtaste gedrückt halten, können
wir noch
höher gehen. Sehr cool In Ordnung, als Nächstes fügen
wir dem Spiel einige
Spezialeffekte hinzu,
nämlich den Hangrutscheffekt
und die Staubpartikel beginnen wir mit dem
Hangrutscheffekt In der nächsten Lektion beginnen wir mit dem
Hangrutscheffekt
106. Den Slope-Slide-Effekt erstellen: Wenn der Spieler einen Hang
hinunterrutscht, erzeugen
wir hinter dem Spieler einen coolen
Bewegungseffekt. Und dazu verwenden wir hier das Sprite mit
dem
Slope-Slide-Effekt Das Kostüm für den Sprite
besteht aus ein paar Rechtecken, die einen linearen Farbverlauf von weiß
bis transparent haben bis transparent Okay, und um das Sprite zu codieren, können
wir damit beginnen, zum Coin-Sprite-Code zu
gehen und ein paar Skripte zu
kopieren. Lassen Sie uns zunächst bestimmte Ebenen
kopieren. Passen Sie dann die Position an,
wenn ich
als Klon starte und wenn ich Update drei
erhalte, denn wenn ich Update zwei erhalte, wollen
wir alles außer
dem Animationsblock Lassen Sie uns ihn also zuerst entfernen und das Skript
kopieren Und füge den
Animationsblock wieder ein. Wenn ich Update 1 erhalte, entfernen
wir alles
aus dem Skript, kopieren
dann nur den Block, wenn
ich Update 1 erhalte,
und fügen alles wieder ein und fügen alles wieder Als Nächstes wollen
wir für das Setup-Skript nur, dass der Name des
Kostüms leer ist, falls nicht leer sein sollte, dann löschen wir diesen Klonteil Lassen Sie uns also
alles andere herausziehen, mit dem Block
I Level 1
beginnen und das
Skript überschreiben Und alles
wieder so machen, wie es war. Lassen Sie uns abschließend das Drehbuch mit
der grünen Flagge kopieren. Gehen wir nun zum
Slope-Slide-Effekt Sprite und bereinigen den Code Wir möchten, dass der
Slope-Slide-Effekt direkt
hinter dem Spieler gezeichnet
wird Im Skript Wenn ich
als Klon starte, verwenden
wir also nicht die Komponente
Z als Eingabe für die Z-Reihenfolge,
sondern den B-Effekt Z, einen Wert hat
, der um
eins kleiner ist als der von Spieler Z. Und wenn ich Update 1 erhalte, wollen
wir nur die Position
anpassen. Gehen wir also zu Mblocks
und fügen einen Block zum Anpassen der
Position hinzu Okay, jetzt müssen wir dem Sprite mitteilen, wann es einen Klon erstellen
soll Das sollte natürlich passieren, wenn der Spieler einen Hang
hinunterrutscht Gehen wir also zum
Code für den Player Sprite und suchen wir das
Slide on Slope-Skript Hier
unten im Skript,
wo wir den Status auf Slope Slide setzen, können
wir eine Nachricht
für den Slope
Slide-Effekt Sprite senden für den Slope
Slide-Effekt Sprite Gehen
wir dazu zu den Ereignissen und fügen nach dem
eingestellten Statusblock
einen Broadcast-Block hinzu. Anschließend senden wir
eine neue Nachricht, senden wir
eine neue Nachricht die wir Crate
Slope Slide Effect nennen können Ordnung, jetzt
müssen wir zum Slope-Slide-Effekt-Code zurückkehren und die Nachricht empfangen also in einem leeren Bereich Lassen Sie uns also in einem leeren Bereich den
Block W I receive einfügen und den
Receive-Slide-Effekt erzeugen. Und wenn es sich bei dem
Sprite, der
die Nachricht empfängt , um den ursprünglichen
Slope-Slide-Effekt handelt, erstellt
Sprite einen Klon Also wollen wir zuerst überprüfen, ob der Sprite das leere Kostüm verwendet Gehen wir dazu zu Control und fügen dem Skript einen ITN-Block
hinzu Und für die Bedingung können
wir ein Duplikat
des Kostümnamens gleich
Blank aus dem Skript „Wenn ich ein Update
erhalte“ verwenden Blank aus dem Skript „Wenn ich ein Update
erhalte Bevor wir einen Klon erstellen, wollen
wir zum
richtigen Kostüm wechseln Gehen wir also zu Looks, fügen dem Block I then einen Block
„Kostüm wechseln hinzu
und wechseln wir zum Kostüm mit Slope
Slide-Effekt. Als Nächstes können wir
den Klon erstellen, indem wir zu
Control gehen und den Block
Create Clone of myself einfügen. Und schließlich wollen wir zurück
zum leeren Kostüm wechseln, indem
wir zu Looks zurückkehren, einen weiteren
Switch-Kostümblock einfügen und zu leer wechseln. Okay, also nachdem wir einen Klon erstellt
haben, wollen wir sicherstellen, dass er
dem Spieler folgt , wenn er den Hang
hinunterrutscht. Lassen Sie uns zunächst zu
den Kostümen für den
Sprite mit
Hangrutscheneffekt gehen den Kostümen für den
Sprite mit
Hangrutscheneffekt und sicherstellen, dass wir derzeit das Kostüm mit Slope
Slide-Effekt verwenden Lassen Sie uns den
Sprite auf der Bühne zeigen Das Sprite
befindet sich derzeit auf 00, und wenn wir das
Spieler-Sprite auch auf 00 setzen, können
wir sehen, dass sie sich ziemlich gut
anordnen,
aber der
Slope-Slide-Effekt ist etwas hoch aber der
Slope-Slide-Effekt ist etwas Die Verwendung einer Y-Position von minus Zehn für den
Slope-Slide-Effekt sollte besser funktionieren Wenn wir außerdem die Richtung der
Böschungseffekte auf 45 setzen, entspricht
sie dem Winkel
der nach links ausgerichteten
Hänge im Spiel. Wenn Sie den Wert auf minus
45 setzen, entspricht er auch
den nach rechts ausgerichteten Hängen. Okay, zurück im Code für
das Slope-Slide-Effekt-Sprite können
wir die Position der
Player-Sprites
sowie deren Slope
der Variablen verwenden, um den
Slope-Slide-Effekt-Klon korrekt zu positionieren und zu drehen Slope-Slide-Effekt-Klon Wie wir bereits gesehen haben, orientiert sich
eine Richtung von minus
45 an nach
rechts gerichteten Hängen und 45 an linksgerichteten Hängen Die Spielervariable Sprite Slope
der
verwendet jedoch einen Wert von Eins für nach
rechts ausgerichtete Hänge und einen
negativen Wert für nach
links ausgerichtete Hänge nach
links Um also die richtige
Richtung für den Klon zu ermitteln, können
wir den Wert für die Steigung
du mit minus 45 multiplizieren Okay, gehen wir also zunächst zu
Motion und fügen dem Block I then des Slope-Slide-Effektskripts einen Punkt
- und
Richtungsblock Slope-Slide-Effektskripts einen Punkt
- und
Richtungsblock hinzu,
bevor wir den Klon erstellen. Gehen wir für die Eingabe zu Operatoren und fügen
einen Multiplikationsblock hinzu Gehen
wir für die linke Seite zunächst zur Sensorik über und fügen einen Stufenblock mit der
Hintergrundnummer Anstelle von Stage
wollen wir das Plater-Sprite verwenden,
und wir wollen, dass es die
Steigung du Und lassen Sie uns das mit minus
45 multiplizieren. die
Position des Klons festzulegen, gehen
wir als Nächstes zu Variablen
und fügen zwei Blöcke
hinzu, bevor wir den Klon
erstellen. Und lassen Sie uns sie verwenden, um
die X-Variablen und
die Y-Variable festzulegen . für den eingestellten X-Block Lassen Sie uns für den eingestellten X-Block die
Steigungsdauer des Spielerblocks duplizieren und die Variablen X für die
Spieler-Sprites ermitteln Wie wir bereits gesehen haben, soll der
Slope-Slide-Effekt nun soll der
Slope-Slide-Effekt zehn Schritte unter
dem Sprite des Spielers also für den Y-Block Gehen
wir also für den Y-Block zunächst zu Operatoren und fügen dort einen
Subtraktionsblock Jetzt können wir hier das
X des Spielerblocks duplizieren, es auf die linke Seite
des Subtraktionsblocks
legen und wir machen Y von
Spieler minus Zehn Wenn wir jetzt das Spiel ausführen
und einen Hang hinunterrutschen, erhalten
wir zwar den Effekt „
Böschungsrutsche“, aber er
folgt dem Spieler noch nicht Das liegt daran, dass
wir die Position
der Klone nur festlegen , wenn
wir sie zum ersten Mal erstellen, aber wir müssen dies auch
bei jeder Iteration
der Spielschleife tun bei jeder Iteration
der Spielschleife Dazu verwenden wir
einen benutzerdefinierten Block im Skript „W I receive
Update to Gehen wir also zuerst zu Meine
Blöcke und erstellen einen neuen. Nennen wir es
Handle-Aktionen. Und klicken Sie auf Okay. Im Update des Skripts fügen
wir nun dem ITN-Block einen
Handle-Aktionsblock hinzu Dann verschieben wir den
definierten
Handle-Aktionsblock in einen leeren Bereich Jetzt können wir
die Blöcke Set X und Set
Y aus dem Script Create
Slope Slide Effect duplizieren , sie dem
Handle-Action-Skript
hinzufügen und die überflüssigen Blöcke entfernen. Jetzt sollte der Effekt
dem Spieler den Hang hinunter folgen. Ordnung, das funktioniert also,
aber wir wollen,
dass der Effekt
verschwindet , wenn der Spieler das Ende
des Abhangs erreicht Um das zu tun und Aktionen zu bearbeiten, können
wir überprüfen, ob der Wert von
Slope Dur Null geworden ist, was der Fall sein wird, wenn der Spieler
nicht mehr auf einem Hang befindet, und wenn ja, können wir den Klon
löschen Gehen wir also zunächst zur Steuerung und fügen
am Ende des Skripts einen ITN-Block Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Jetzt können wir dem Block „Gleich“ ein Duplikat
der Steigungsdauer eines
Spielerblocks hinzufügen Gleich“ ein Duplikat
der Steigungsdauer eines
Spielerblocks hinzufügen Und überprüfe, ob es gleich Null ist. Wenn ja, möchten wir zuerst
den Artikel „Klone“ aus
der Z-Bestellliste entfernen den Artikel „Klone“ aus
der Z-Bestellliste dann den Klon löschen Gehen wir also zu Variablen und fügen
einen Block zum Löschen ein. Verwenden Sie dann die Artikelnummer
eines Blocks als Eingabe. Für die Eingabe der Artikelnummer fügen wir einen
Back-Effect-Z-Block hinzu. Und wir wollen die
Z-Bestellliste für beide Blöcke verwenden. Gehen wir abschließend zu Control
und fügen einen Block zum Löschen
dieses Klones ein. Und jetzt, sobald wir den Grund
eines Abhangs
erreicht haben , verschwindet der Effekt. Das sieht okay aus, aber anstatt den
Effekt so abrupt
verschwinden zu lassen, würde
es besser aussehen, wenn wir ihn
zuerst ausblenden Dazu benötigen wir
ein paar Variablen, eine für den
aktuellen Status des Klons
und
eine für einen Ausblend-Timer Gehen wir also zu Variablen
und erstellen sie. Wir können den ersten Zustand aufrufen und ihn nur für
dieses Sprite erstellen Für den zweiten nennen
wir ihn Timer, auch nur für dieses Sprite, und wir können weitermachen und beide Variablen
ausblenden Okay, für den Status verwenden
wir aktiv als Standard
und inaktiv, wenn der Klon langsam
ausgeblendet werden soll. also zunächst im Crate
Slope Slide-Effekt-Skript Lassen Sie uns also zunächst im Crate
Slope Slide-Effekt-Skript einen Satz zum Blockieren
vor dem Block „Kiste klonen“ hinzufügen und den Status auf „Aktiv“ setzen Als Nächstes ziehen
wir im
Handle-Action-Skript die beiden
Löschblöcke heraus und legen sie beiseite. Jetzt wollen wir all
diese Dinge nur machen , wenn sich der Klon im aktiven Zustand
befindet. Andernfalls machen wir
ein paar andere Sachen. Gehen wir also zur Steuerung, nehmen einen I-Thins-Block und wickeln den I-Teil um alle
Blöcke im Skript. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob der Status
gleich aktiv ist. Okay, in der I-Slope ist
dr gleich Nullblock, wollen
wir den
Status auf inaktiv setzen und den Timer einstellen Bringen wir also zwei Blöcke mit
zwei Sätzen rein. Und lassen Sie uns den Status auf
inaktiv und den Timer auf zehn setzen. Als Nächstes überprüfen
wir im TS-Teil, ob der
Timer abgelaufen ist. Wenn ja,
löschen wir den Klon. Andernfalls
blenden wir den Klon
ein wenig aus und reduzieren
den Timer-Wert. Gehen wir also zuerst
zur Steuerung und fügen TS-Teil
einen
Wenn-Dann-Ls-Block hinzu. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob der Timer gleich Null ist. Wenn ja, können wir die beiden Löschblöcke
, die wir zuvor gespeichert haben, Andernfalls lassen Sie uns zuerst eine
Änderung pro Block vornehmen und
den
Timer um einen negativen Wert ändern. Um den Klon auszublenden, gehen
wir zu Looks, fügen einen
Change-Effekt für Block hinzu und ändern den
Ghost-Effekt um zehn. Da wir den
Wert von Timer auf Zehn setzen, der Ghost-Effekt nach
Ablauf des Timers 100,
sodass der Klon
vollständig transparent ist . Okay, wenn wir das Spiel starten
und einen Hang
hinunterrutschen, verblasst der Effekt,
sobald wir unten Stellen wir auch sicher, dass es
auf nach rechts ausgerichteten Hängen funktioniert. Fantastisch. Nachdem dieser
Effekt abgeschlossen ist, erzeugen
wir als Nächstes den
Staubpartikeleffekt , der auftritt, wenn der
Spieler auf dem Boden landet.
107. Die Staubpartikel erstellen: Um die Staubpartikel zu erzeugen , wenn der Spieler auf dem Boden
landet, verwenden
wir hier das
Staubpartikel-Sprite. Das Kostüm für den
Staubpartikel-Sprite besteht aus drei kleinen grauen Ellipsen , die eine Art Wolkenform bilden Okay, und um mit
der Codierung des Staubpartikel-Sprites zu beginnen, gehen
wir zuerst zum Code für das Sprite mit
dem Slope-Slide-Effekt
und kopieren Von hier aus wollen wir den Block mit
den definierten
Handle-Aktionen von selbst kopieren Block mit
den definierten
Handle-Aktionen von Lassen Sie uns also alle
Blöcke aus dem Skript ziehen, definierte Handle-Aktionen in
das Staubpartikel-Sprite
kopieren und die Blöcke wieder einfügen Lassen Sie uns nun die Sortierebenen nach einer
Position kopieren. Wenn ich als Klon anfange, wenn ich Update
eins, Update zwei,
Update drei, das Setup-Skript
und das grüne Flaggen-Skript erhalte Update drei, das Setup-Skript
und das , gehe ich zu den
Staubpartikel-Sprites und bereinige den Code Okay, für die
Staubpartikel-Klone wollen
wir, dass sie vor
dem Spieler erscheinen Wenn ich also
als Klon-Skript anfange, für die Eingabe von Sortierung und Ebenen verwenden
wir
für die Eingabe von Sortierung und Ebenen Fronteffekt Z. Als Nächstes müssen wir
dem Sprite mitteilen, wann die Klone
erstellt werden sollen Das sollte passieren
, wenn der Spieler nach einem Sturz wieder auf dem
Boden landet Gehen wir also zum
Sprite-Code des Players und suchen das
Update-State-Skript Am Ende
des Skripts haben
wir ein Wenn-Zustand gleich Fall und in der Luft gleich Null-Block, wo wir den Zustand auf Land
setzen Hier wollen wir auch
Staubpartikel erzeugen. Also lasst uns zu Veranstaltungen gehen und
einen Broadcast-Block einbauen und lasst uns
eine neue Botschaft mit dem
Titel „Staubpartikel erzeugen“ senden . Jetzt müssen wir zurück zum
Staubpartikel-Sprite gehen und uns um die Botschaft kümmern Lassen Sie uns also, wenn
ich Block erhalte, in
einen leeren Raum bringen und Staubpartikel
erzeugen Wir wollen nur Klone erzeugen, wenn das empfangende Sprite
das ursprüngliche
Staubpartikel-Sprite ist das ursprüngliche
Staubpartikel-Sprite Also müssen wir zuerst
sicherstellen, dass das leere Kostüm verwendet
wird Also gehen wir zur Kontrolle und
bringen ein Ich rein, dann Block. Für die Bedingung
können wir ein Duplikat
des Blocks Kostümname entspricht einem
leeren Block aus dem
Update zum Skript verwenden des Blocks Kostümname entspricht leeren Block aus dem
Update zum Skript Und wenn das der Fall ist, werden
wir einige Klone erstellen Wir wollen das eigentlich in
einem benutzerdefinierten Block machen , weil wir mehrere
Klone gleichzeitig erstellen
werden
und wir wollen, dass sie alle in einem einzigen
Frame erstellt werden Gehen wir also zu Meine Blöcke
und erstellen einen neuen. Nennen wir es Create Clones. Stellen Sie sicher, dass die Option
Ohne Bildschirmaktualisierung ausführen aktiviert ist,
und klicken Sie auf Okay Fügen wir nun dem Block I costume name is
blank einen Block
Crate Clones hinzu und verschieben
den definierten Block Create I costume name blank einen Block
Crate Clones hinzu und verschieben
den definierten Block Clones
in Das Erste, was wir beim Erstellen von
Klonen tun
möchten , ist, zum Staubpartikel-Kostüm zu wechseln Gehen wir zu Looks, bringen einen Switch-Kostümblock rein
und wechseln wir zum Staubpartikelblock und wechseln wir zum Staubpartikelblock Als Nächstes wollen wir jeden Klon
an derselben
Position wie der Spieler
starten , aber nahe
am unteren Rand des Sprites Gehen wir dazu zunächst zu Variablen,
fügen einen Satz von zwei Blöcken und setzen sowohl die X-Variable
als auch die Y-Variable für den Block „Satz X Gehen
wir für den Block „Satz X“ zur Erkennung über und fügen eine Hintergrundnummer
von Stufenblöcken hinzu, und wir wollen die
X-Variable des Spieler-Sprites ermitteln für den Block Set Y Gehen
wir für den Block Set Y zunächst zu Operatoren und fügen dort einen
Subtraktionsblock Jetzt können wir ein Duplikat
des Blocks X des Spielers
auf die linke Seite legen und Y von Spieler -35
machen Ordnung, als Nächstes werden
wir
zehn Klone erstellen und sie ziemlich
zufällig anordnen, indem wir ihnen
beispielsweise
zufällige Richtungen, zufällige Größen und
zufällige
horizontale und vertikale Geschwindigkeiten geben Größen und
zufällige
horizontale und vertikale Geschwindigkeiten Gehen wir also zuerst zur Steuerung und fügen einen Block mit zehn Wiederholungen
ein Um die Richtung nach dem Zufallsprinzip zu
bestimmen, gehen wir zu Bewegung und fügen Wiederholungsblock
einen Punkt- und Richtungsblock hinzu Und für die Eingabe gehen wir zu Operatoren und fügen
einen Block mit zufälliger Auswahl hinzu Gehen wir mit einer Zahl von 0-359 aus, das sind alle möglichen Winkel die Größe nach dem Zufallsprinzip zu bestimmen, gehen
wir als Nächstes zu Los und fügen dort einen Block mit
festgelegter Größe ein Dann können wir ein Duplikat
des
PIC-Zufallsblocks als Eingabe verwenden , und wir gehen von
einer Zahl 80-150 Als Nächstes müssen wir
die horizontalen und vertikalen
Geschwindigkeiten für jeden Klon verfolgen die horizontalen und vertikalen
Geschwindigkeiten für jeden Klon Gehen wir also zu Variablen und
erstellen ein paar neue. Nennen wir die erste Geschwindigkeit x und machen sie nur für
dieses Sprite Lassen Sie uns nun eine
weitere für Geschwindigkeit
Y erstellen und sie auch nur
für dieses Sprite Und wenn wir schon dabei sind, wollen
wir nicht, dass die
Klone ewig existieren. Lassen Sie uns also
eine weitere Variable erstellen, die wir Leben nennen können und sie auch nur für
diesen Sprite erstellen Und lass uns weitermachen und alle drei Variablen
verstecken. Fügen wir nun dem Wiederholungsblock drei
Blöcke des Satzes zwei hinzu. Und lassen Sie uns zu jedem Block einen
zufälligen Auswahlblock hinzufügen. Für den ersten Fall setzen wir
Geschwindigkeit X auf eine Zufallszahl zwischen minus fünf und fünf ,
sodass sie
entweder nach links oder rechts gehen kann. Als Nächstes setzen wir speedY
und wollen, dass sich die Klone
nach oben bewegen, also wählen wir zwischen
zwei positiven Zahlen Etwas 1—3 sollte gut sein. Lassen Sie uns abschließend
das Leben auf eine Zahl von 4-7 setzen.
Wenn Sie eine
Zufallszahl für Leben verwenden, werden die Klone
zu unterschiedlichen
Zeiten verschwinden Jetzt müssen wir tatsächlich
einen Klon erstellen , indem wir zu Control gehen und den
Block Create
Clone of myself am Ende
des Wiederholungsblocks hinzufügen Block Create
Clone of myself am Ende
des Wiederholungsblocks Nachdem wir
alle Klone erstellt
haben, müssen wir zum leeren Kostüm zurückkehren Gehen wir zu Looks, fügen am Ende des Skripts einen Block zum
Wechseln des Kostüms hinzu
und wechseln wir zu Blink Damit das alles funktioniert,
wollen wir nun die Handle-Aktionen
definieren Und hier
wollen wir zuerst
überprüfen, ob der Klon
kein Leben mehr hat. Wenn ja,
löschen wir den Klon. Andernfalls
verschieben wir den Klon anhand seiner Geschwindigkeitsvariablen und
reduzieren auch seine Lebensdauer. Gehen wir also zuerst zu Control und fügen dem Skript einen I und dann S
-Block hinzu. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und
prüfen, ob Leben gleich Null ist. Wenn ja, löschen wir den Artikel
aus der Z-Bestellliste und dann den Klon Lassen Sie uns also
zuerst einen Block löschen. Verwenden Sie dann die Artikelnummer
eines Blocks als Eingabe
und lassen Sie uns die Artikelnummer des
Fronteffekts Z in
Z-Bestellungen von Z-Bestellungen löschen . Gehen wir nun zur Steuerung und bringen
diesen Klonblock hinein und löschen ihn. Als Nächstes gehen
wir im TS-Teil zu Variablen und fügen drei Change-B-Blöcke hinzu. Mit dem ersten
ändern wir X mit der Geschwindigkeit x.
Mit dem zweiten
ändern wir Y mit der Geschwindigkeit Y. Und zum Schluss ändern wir das
Leben durch einen negativen Wert Ordnung, wenn wir das Spiel
jetzt ausführen, jedes Mal, wenn wir auf dem Boden landen, erhalten wir
jedes Mal, wenn wir auf dem Boden landen,
zehn
Staubpartikel, die sich in verschiedene Richtungen
verteilen, bevor sie verschwinden Das sieht okay aus, aber
die Partikel sind ein bisschen zu dunkel und auch
ein bisschen zu undurchsichtig Um das zu verbessern, können
wir auch
ihre Werte für den Geistereffekt und den
Helligkeitseffekt nach dem Zufallsprinzip anordnen ihre Werte für den Geistereffekt und den
Helligkeitseffekt Um das zu tun, kommen wir zurück zum
CrakKline Script. Bevor wir
im Wiederholungsblock einen Klon erstellen, gehen
wir zu Looks und fügen zwei Blöcke hinzu,
um die Wirkung zu erhöhen Und lassen Sie uns zu jedem Block einen Pick
Random Block hinzufügen. Lassen Sie uns zunächst den
Ghost-Effekt auf einen Wert von 50-80 setzen. Dann setzen wir den
Helligkeitseffekt auf einen Wert von 0-100. Lass es uns versuchen. Viel besser. In
der nächsten Lektion werden
wir es so gestalten, dass der Spieler eine
Pause einlegen kann , indem wir das
Spiel pausieren
108. Das Spiel pausieren: das
Spiel zu pausieren, zeigen wir eine Pause-Taste an während des Spiels oben rechts auf
der Bühne Wenn der Spieler auf
die Pause-Taste klickt, wird das Spiel eingefroren
und
es wird ein Pausen-Overlay angezeigt, das Schaltflächen enthält,
die der Spieler
drücken kann , um das
Spiel entweder fortzusetzen oder zu beenden Für all das verwenden wir hier
das Pause-Sprite. Der Pause-Sprite hat alle Kostüme, die wir zum Pausieren
benötigen Zuerst haben wir die Pause-Taste, die jederzeit
im HUD angezeigt wird Als Nächstes verwenden wir das BG-Kostüm als Hintergrund für
das Pas-Overlay Das ist einfach ein schwarzes Rechteck , das
die gesamte Bühne bedeckt, es
aber halbtransparent macht sodass wir die Spielobjekte darunter sehen können Als Nächstes verwenden wir das
Panel-Kostüm als
Container für die Zoom-Taste
und die Schaltfläche zum Beenden im
Pause-Overlay Und für die Schaltflächen „Fortfahren“
und „Beenden“ haben
wir
Standardkostüme für den Fall, haben
wir
Standardkostüme dass der
Spieler sie nicht drückt,
und für den Fall, dass die Tasten gedrückt werden, haben wir Standardkostüme für den Fall, dass die
Tasten gedrückt werden Okay, und um mit der
Codierung des Pas-Sprites zu beginnen, gehen
wir zuerst
zum Coin-Sprite-Code und kopieren einige Skripte Da alle
Pas-Sprite-Klone der
Scroll-Position im Spiel dieselbe
Position auf der Bühne haben
werden unabhängig von der
Scroll-Position im Spiel dieselbe
Position auf der Bühne haben
werden, müssen
wir
ihre Positionen nicht bei jeder
Iteration des Game-Loops anpassen ihre Positionen nicht bei jeder
Iteration Und wir werden sie auch nicht animieren oder prüfen, ob
sie die Sprites der Spieler Also wirklich, es gibt nur ein paar Skripte
, die wir kopieren können Zunächst können wir die Skripte
der Sortierebene kopieren. Als Nächstes können wir das Skript mit
der grünen Flagge kopieren. Schließlich wollen wir das
Setup-Skript kopieren, aber nur der
Name des Kostüms, wenn nicht, entspricht leeren Teilen Lassen Sie uns also alles
andere aus dem Skript entfernen, dann das Skript in
den Pa Sprite kopieren und
alle Blöcke wieder einfügen Gehen wir nun zum
Pause-Sprite-Code. Okay, also erstellen wir alle Klone direkt
im Setup-Skript und beginnen mit
der Pause-Taste also in der Kategorie „Aussehen Lassen Sie uns also in der Kategorie „Aussehen“ einen Block zum
Wechseln des Kostüms hinzufügen und zur Pause-Taste wechseln Als Nächstes positionieren Sie den Klon. Gehen wir zur Bewegung über, bringen wir einen Go-to-XY-Block rein. Und lassen Sie uns 205
für X und 150 für Y verwenden. Dadurch wird es
oben rechts auf der Bühne angezeigt Lassen Sie uns nun den
Klon erstellen, indem wir zu
Control gehen und den Block
Create Clone of Myself einfügen Schließlich müssen wir
zurück zum Blank-Kostüm wechseln. Gehen wir also zu Looks, bringen einen weiteren
Switch-Kostümblock hinein und wechseln wir zu Blink Okay, bevor
wir das ausprobieren, müssen
wir den
Klon in den Ebenen sortieren,
und zwar mit einem When
I start as a clone Script Gehen wir also zu Control und
fügen Klon-Block ein, wenn ich
anfange Was nun die PoS-Schaltfläche angeht, wollen
wir
beim Sortieren in den Ebenen die Hud Z Z-Reihenfolge verwenden beim Sortieren in den Ebenen die Aber für alle anderen
POS-Sprite-Klone verwenden
wir Overlay Z, wodurch sie über
allem im Spiel stehen Also wollen wir zuerst den Namen
des aktuellen Klonkostüms überprüfen des aktuellen Klonkostüms Um das zu tun, bringen
wir ein Ich und dann einen Split rein. Für die Bedingung
können wir ein Duplikat
des Blocks Kostümname entspricht einem leeren
Block im Setup-Skript verwenden des Blocks Kostümname entspricht einem leeren
Block im Setup-Skript Prüfen Sie dann, ob es der Taste „
Pause“ und „Unterstrich“ entspricht. Gehen wir nun zu
M-Blöcken und fügen jedem
Teil des
Ithn-s-Blocks einen Block zur Sortierung nach Ebenen hinzu Dann gehen wir zu Variablen
und für den I-Teil verwenden
wir HUDz als Eingabe für die
Sortierung von Inlayern und wir verwenden Overlay
Z für den Okay, wenn wir das Spiel jetzt starten, erhalten
wir eine Pause-Taste, die oben
rechts auf der Bühne
an Ort und Stelle bleibt oben
rechts auf der Bühne
an Ort Es
wäre jedoch besser, wenn wir es halbtransparent
machen würden, damit der Spieler
alle Sammelobjekte
oder Feinde sehen kann , die sich
möglicherweise unter dem Button befinden dazu im Skript Wenn ich als Klon
anfange, Gehen wir dazu im Skript Wenn ich als Klon
anfange, zu Looks und fügen einen festgelegten Effekt zum Blockieren Teil I
des Blocks Ich denke aus,
einen festgelegten Effekt zum Blockieren hinzu Und lassen Sie uns den Ghost-Effekt
auf 30 setzen. Dann probiere es aus. Da haben wir's. Okay, als Nächstes machen
wir es so, dass
das Drücken der Pause-Taste das Spiel tatsächlich
pausiert Um das zu tun,
gehen wir zuerst zu den Events und bringen einen Gewinn, auf den dieser Sprite geklickt hat, in ein leeres Feld
. Da wir verschiedene Dinge
tun wollen,
je nachdem, auf welchen
Klon geklickt wird, müssen
wir zuerst den Namen
des Kostüms überprüfen Gehen wir also zu Control und
fügen einen Wenn-Dann-Else-Block ein das Spiel zu pausieren, wollen
wir das nur tun, wenn der
Klon, auf den geklickt wird,
das Pause-Button-Kostüm verwendet und das Spiel gerade
läuft die Bedingung angeht, gehen
wir also zu den Operatoren und fügen
zuerst einen UND-Block ein Für eine Seite des Und-Blocks können
wir ein Duplikat
des Kostümnamens
gleich Pause-Block
verwenden , wenn ich als Klon anfange Und für die andere Seite können
wir einen Gleichheits-Block einfügen und
dann zu Variablen gehen und
prüfen, dann zu Variablen gehen und ob der Spielstatus
gleich läuft Wenn ja, senden wir
eine neue Nachricht die der Hintergrund
empfängt, und unterbrechen das Spiel Gehen wir zu den Ereignissen, fügen dem Teil I einen
Broadcast-Block und übertragen wir eine neue
Nachricht namens Spiel pausieren. Jetzt müssen wir zum Hintergrundcode gehen
und
die Meldung „Spiel
pausieren“ bearbeiten. Lassen Sie uns zunächst einen Block mit W I Receive-Block und
Receive-Pause-Spiel eingeben. Um das Spiel anzuhalten, müssen wir
lediglich den Spielstatus auf einen anderen Status als den
Status Running
oder
den Auto-Scroll-Status setzen anderen Status als den
Status Running
oder
den . Wenn ich also das Spiel pausieren erhalte, gehen
wir zu Variablen, fügen ein Set zum Blockieren hinzu und
verwenden es, um den Spielstatus festzulegen. Und ich setze es auf
das Wort pausiert. Wenn wir jetzt das Spiel starten und
auf die Pause-Taste klicken, stoppt
das Spiel vollständig Im Moment haben
wir jedoch keine Möglichkeit, das Spiel zu
unterbrechen. Vorerst machen wir
es so, dass wir die
Pe-Taste drücken können, um
die Pause sowohl anzuhalten Gehen wir dazu zu den Events, bringen einen Block mit gedrückter Win-Taste rein
und überprüfen, ob die
P-Taste gedrückt wird und überprüfen, ob die
P-Taste Und wenn sich das Spiel
derzeit im Status Running befindet, pausieren
wir das Spiel, und wenn es sich gerade
im Pause-Status befindet, setzen
wir es fort. Gehen wir also zuerst zur Steuerung über
und fügen wir
einen I-Then-S-Block ein. Dann fügen wir dem Os-Teil einen
I-Thin-Block hinzu. Für die Bedingungen gehen wir zu Operatoren und fügen jedem Operator einen
Gleichheitsblock hinzu Gehen wir nun zu Variablen
und überprüfen
wir für den ITN ts-Block, ob der
Spielstatus gleich läuft für den Block I then überprüfen, Lassen Sie uns für den Block I then überprüfen, ob der
Spielstatus einer Pause entspricht Gehen wir nun zu den Ereignissen und fügen wir jedem Teil einen
Broadcast-Block hinzu Wenn das Spiel läuft, wollen
wir das Spiel pausieren übertragen Wenn das Spiel pausiert ist, senden
wir eine neue Nachricht, die wir RezomGame nennen können Wir müssen uns jetzt mit der RezomGame-Nachricht befassen
. Lassen Sie uns also ein weiteres W einbauen, das ich erhalte, Block und
erhalte RezoomGame Alles, was wir tun müssen, um
das Spiel fortzusetzen, ist zu Variablen zu gehen, einen Satz zum Blockieren
einzufügen und den Spielstatus auf Running zu
setzen Wenn wir das Spiel jetzt starten, können
wir auf die Pause-Taste klicken, um das Spiel anzuhalten, und
die Pikey drücken, um
die Pause aufzuheben Oder wir können einfach
die P-Taste verwenden , um das Spiel anzuhalten
und die Pause aufzuheben Kehren wir nun zum
Brite-Pause-Code zurück. In der nächsten Lektion werden wir am Pause-Overlay
arbeiten.
109. Das Pause-Overlay erstellen: Um das PAS-Overlay zu erstellen, müssen
wir zuerst zum Setup-Skript im POS-Sprite-Code gehen und
die verbleibenden Klone
erstellen Dazu ziehen wir zunächst
den Block „ Kostüm wechseln“ auf einen leeren
Block
und duplizieren die drei Blöcke, beginnend mit
dem Block „Kostüm
wechseln“ bis zum
Pause-Block, und fügen sie am Ende
des Skripts beginnend mit
dem Block „Kostüm
wechseln“ bis zum
Pause-Block , und fügen sie am Ende
des Skripts Und das wiederholen wir noch
dreimal für
insgesamt fünf Klone. Dann können wir
das Switch-Kostüm
zum leeren Block am Ende
des Skripts hinzufügen zum leeren Block am Ende
des Skripts Für den zweiten Klon wechseln
wir zur
Resume-Taste nach oben für das
Kostüm für die Position, nehmen
wir Null
für X und 14 für Y. Für den nächsten Klon benutzen
wir die
Quit-Taste nach oben und positionieren ihn bei
Null minus 49. Als Nächstes erstellen wir das
Panel-Kostüm und positionieren es auf 00. Lassen Sie uns abschließend
zum BG-Kostüm wechseln und es ebenfalls auf 00
positionieren. Und es ist wichtig, dass wir
das Biji-Kostüm als letztes
und das Panel-Kostüm
als letztes machen das Biji-Kostüm als letztes , da dadurch die
Klone auf
der Bühne richtig übereinander gelegt werden , mit dem
Biji-Klon im Hintergrund, dann dem
Panel-Klon darüber
und schließlich den Knöpfen oben
auf dem Panel und schließlich den Knöpfen oben
auf dem Okay, als Nächstes kommen wir zum Wenn ich
als Klon anfange Wir wollen natürlich
nicht, dass die
Pas-Overlay-Klone angezeigt werden, wenn
sie zum ersten Mal erstellt werden also im TS-Teil
des ITN-TS-Blocks Gehen
wir also im TS-Teil
des ITN-TS-Blocks zu Looks und fügen dort einen
Versteckblock hinzu Auch für den BG-Klon wollen
wir ihn
halbtransparent machen Gehen wir also zuerst zu Control und fügen dem Outs-Teil ein I und dann einen
Block hinzu. Für die Bedingung
können wir ein Duplikat
des Blocks „Kostümname ist
Pause“ verwenden des Blocks „Kostümname und
prüfen, ob es gleich BG ist Wenn ja, können wir hier
ein Duplikat des eingestellten
Ghost-Effekt-Blocks einfügen und ihn für den
BG-Klon auf 50 setzen Als Nächstes wollen
wir, wenn der Spieler das Spiel
pausiert, alle Pause-Overlay-Klone einblenden, und wenn sie das Spiel fortsetzen, werden
wir die Klone ausblenden Gehen wir also zuerst zu den Events und bringen ein paar hinzu,
wenn Lassen Sie uns das erste Spiel erhalten. Dann lass uns zu Looks gehen und einen Showblock
reinbringen. Für den zweiten Fall
erhalten wir das Resüme-Spiel. Und hier wollen wir
alles außer
der Pause-Taste verstecken . Also stellen wir zunächst sicher, dass der aktuelle Klon nicht
das Pause-Button-Kostüm verwendet. Um das zu tun, gehen wir zur Steuerung und fügen einen
I und dann Block ein. Für die Bedingung gehen
wir zuerst zu den Operatoren und fügen einen
Not-Block hinzu. Dann können wir ein Duplikat
der Kostümnamen gleich
Pause-Button Block und
wenn ich als Klon starte, reinbringen der Kostümnamen gleich Pause-Button Block und
wenn ich als Klon starte Und wenn es nicht das
Pause-Button-Kostüm verwendet, können
wir zu Looks gehen und
einen Versteckblock einfügen Okay, wenn wir
das Spiel jetzt starten und pausieren,
wird das Pause-Overlay Und wenn wir das Spiel unterbrechen, das Overlay Jetzt müssen wir nur noch
die
Schaltflächen Zoom und Beenden zum Laufen bringen die
Schaltflächen Zoom und Beenden Kommen wir also zu dem
Zeitpunkt, als dieser Sprite geklickt hat. Im Outs-Teil
des ITN-Outs-Blocks müssen
wir überprüfen, ob es sich bei dem Klon
entweder um die Zoom-Taste
oder die Quit-Taste handelt entweder um die Zoom-Taste
oder die Quit-Taste Gehen wir also zunächst zu Control und fügen
einen ITN Outs-Block ein Bei dieser Bedingung
überprüfen wir, ob der Klon das
Kostüm mit der Resume-Taste der Resume-Taste aktiviert und ob das Spiel gerade
pausiert ist Falls ja, wechseln wir zum Reszoom-Button
im
Kostüm und setzen das Spiel fort Wir können also damit beginnen, hier
ein Duplikat des
Und-Blocks vom
ersten Wenn-Dann-Out-Block zu verwenden hier
ein Duplikat des
Und-Blocks vom
ersten Wenn-Dann-Out-Block Aber für diesen Fall wollen wir überprüfen,
ob der Name des Kostüms gleich „Lebenslauf“, „Unterstrich“, „Unterstrich“, Unterstrich nach oben“ Und wenn der Spielstatus Pause
entspricht, wenn ja, gehen
wir zu Looks, bringen einen Block zum Wechseln des Kostüms hinzu
und wechseln mit der Taste runter zum
Vergrößern Als Nächstes wollen wir warten, bis der Spieler die Maus
losgelassen hat Dann senden wir die Nachricht zur
Fortsetzung des Spiels. Also lass uns zur Steuerung gehen und
eine Wartezeit bis zum Block einbauen. Für den Zustand gehen wir zu den Betreibern und bringen einen
Knotenblock rein Gehen Sie dann zur Sensorik und fügen Sie einen Block mit
der Maus nach unten ein. Lassen Sie uns abschließend zu den Ereignissen gehen
, einen Broadcast-Block
einfügen und das Spiel fortsetzen. Ordnung, und wenn wir jetzt
das Spiel starten und das Pause-Overlay
aufrufen, können
wir auf die
Schaltfläche „Vergrößern“ klicken, um das Spiel fortzusetzen Wenn wir das
Pause-Overlay jedoch wieder einschalten, der Rezom-Button jetzt am
Rezom-Button-Down-Kostüm hängen und es
passiert nichts, wenn wir darauf klicken und es
passiert nichts Um das zu beheben, müssen wir das Kostüm
wieder
auf die Schaltfläche zum Vergrößern zurücksetzen , wenn
das PAS-Overlay angezeigt wird, was im Skript „Wann erhalte
ich PAS“ passiert,
und das müssen wir auch für die Schaltfläche „Beenden“
tun also nach dem Show-Block Gehen
wir also nach dem Show-Block zu Control und
fügen einen ITN Os-Block ein Dann fügen wir dem Outs-Teil einen
I-Thin-Block hinzu. Für den Zustand jedes einzelnen verwenden
wir ein Duplikat eines Blocks mit dem Namen
eines Kostüms Für den ersten Fall überprüfen
wir, ob der Name des Kostüms gleich „Lebenslauf“, Unterstrich nach unten“ Und wenn ja, können wir zu Looks gehen,
einen Block zum Wechseln des Kostüms und mit der Taste nach oben zu Rezom wechseln Und für den Block „Ich dann“ überprüfen
wir, ob
Kostümname der Taste „
Unterstrich
beenden“ entspricht Taste „
Unterstrich
beenden Dann bringen Sie einen Block zum Wechseln des Kostüms
hinzu
und wechseln Sie mit der Taste nach oben zum Beenden. Und jetzt sollte jedes Mal, wenn wir
das POS-Overlay aufrufen, die Schaltfläche
die Standardkostüme verwenden Okay, jetzt müssen wir nur noch den Quit-Button zum Laufen
bringen. Um das zu tun, kommen wir zurück zu der
Zeit, als dieser
Bright geklickt hat im leeren TS-Teil hier Gehen
wir im leeren TS-Teil hier zu Control und fügen ein I hinzu
, dann blockieren Für die Bedingung können wir
ein Duplikat eines Kostüms mit
dem Namen „Gleich“ -Block verwenden und prüfen, ob es der
Quit-Unterstrich-Button
Unterstrich nach oben entspricht Quit-Unterstrich-Button
Unterstrich Falls ja, lassen Sie uns zunächst
Duplikate
aller drei Blöcke einfügen, die wir für die Schaltfläche Vergrößern
verwenden Aber dieses Mal
wollen wir auf die Schaltfläche „Beenden“
umschalten und
eine neue Nachricht senden, die wir „Spiel beenden“ nennen können Ordnung, jetzt müssen wir zum Hintergrundcode gehen und uns um die Meldung „Spiel beenden“ kümmern. Also lasst uns zuerst zu den Events gehen, einen
Block „Gewinn erhalten“ eintragen und „Spiel beenden“ erhalten. Sobald wir
einen Titelbildschirm erstellt haben, wird er beim
Beenden des Spiels Aber im Moment können wir einfach zur
Steuerung gehen und
einen Stop-All-Block einfügen Wenn wir jetzt das Spiel starten, das POS-Overlay
aufrufen und auf die Schaltfläche „Beenden“ klicken,
wird das Spiel gestoppt Beachten Sie jedoch Wenn wir das Spiel
starten und
das Pass-Overlay erneut aufrufen, klickt
der Spieler
manchmal auf
die Spieler
manchmal auf
die Schaltfläche „Beenden“, entscheidet dann
aber, dass das Spiel
nicht beenden
möchte Sie werden dann versuchen, ihre Maus von der Taste
wegzubewegen , bevor sie die Maustaste
loslassen Im Moment wird das Spiel
dadurch aber trotzdem beendet. Wir können es also so einrichten, dass das Spiel
nur beendet wird ,
wenn die Quit-Taste immer noch den Mauszeiger berührt , wenn
der
Spieler die Maus loslässt Gehen wir dazu zurück zum
Code für das Pause-Sprite. Und wenn das Sprite geklickt hat, wollen
wir das Spiel
beenden nur senden , wenn der Klon den Mauszeiger
berührt Andernfalls wechseln wir zurück zum Schnellstart-Kostüm Also schnappen wir uns einen
Wenn-Dann-Out-Block und wickeln den I-Teil um den Block „
Übertragung beenden“. Und nur zum Spaß wollen wir auch einen um den Spielblock „Übertragung fortsetzen“ drehen. Was den Zustand der einzelnen Elemente angeht, gehen
wir zur Erkennung über und fügen ein paar Blöcke mit dem
Mauszeiger hinzu, die sich berühren. Dann können wir zu Looks gehen und dem Outs-Teil jedes einzelnen
einen Switch-Kostümblock hinzufügen . Und für die Zoom-Taste wechseln
wir zur Zoom-Taste nach oben. Und für den Quit-Button machen
wir Quitt-Button Up. Und jetzt muss der Spieler
weiter mit der Maus über
die Schaltfläche fahren, wenn er die Maustaste
loslässt, um entweder das Spiel fortzusetzen
oder das Spiel zu beenden Okay, und der Einfachheit halber
können wir es
noch so machen, dass die Leertaste
drücken ,
während das
Pause-Overlay angezeigt wird fortsetzen, indem
wir die Leertaste
drücken,
während das
Pause-Overlay angezeigt wird Um das zu tun, gehen wir
zunächst zu den Events und bringen einen Block mit gedrückter
Win-Leertaste rein Dann gehen wir zu Control und fügen
ein I hinzu, dann Block. Für die Bedingung können wir
ein Duplikat des Blocks verwenden und
wenn dieses Sprite klickt, überprüfen wir, ob es
sich Kostüm mit
dem Zoom-Button nach oben handelt
und das Spiel pausiert Dann können wir auch Duplikate aller
Rezoom-Button-Blöcke einfügen,
angefangen mit dem Block „Kostüm
wechseln“ zu „Rezom-Button angefangen mit dem Block „Kostüm
wechseln Duplikate aller
Rezoom-Button-Blöcke einfügen,
angefangen mit dem Block „Kostüm
wechseln“ zu „Rezom-Button runter“. Anstatt
zu warten, bis die Maus nicht gedrückt ist,
sollten wir dieses Mal warten, bis die Maus nicht gedrückt ist, den Block mit der
Maus nach unten entfernen,
dann zur Erkennung übergehen und ihn
durch einen Block dann zur Erkennung übergehen und mit der
Leertaste ersetzen Außerdem wird der Mauszeiger
wahrscheinlich nicht über der Zoom-Taste
schweben ,
wenn der Spieler die Leertaste
drückt Wir können
also einfach
die Zoom-Spielnachricht übertragen und
den Block Wenn der
Mauszeiger berührt wird, entfernen Wenn wir das
Spiel jetzt starten und pausieren, können
wir die
Leertaste drücken, um das Spiel fortzusetzen Ordnung, wenn das erledigt ist, werden
wir weiter am Hud
arbeiten indem wir die Herzanzeige
und die Münzanzeige der nächsten Lektion beginnen wir mit In der nächsten Lektion beginnen wir mit
der
Herzanzeige
110. Das Herzdisplay erstellen: Anstatt die langweilige Variable „
Spielergesundheit“
zu verwenden , um die Gesundheit des Spielers anzuzeigen, werden
wir einige
Herzen im Hud anzeigen , und zwar hier mit
dem Herzsprite Wenn wir uns die
Kostüme für den HeartSprite ansehen, haben
wir ein leeres Herzkostüm, ein Halbherzkostüm und
ein Vollherzkostüm und Okay, um mit der
Programmierung des HeartSprite zu beginnen, können
wir einige Skripte
aus dem PA-Sprite-Code stehlen Lassen Sie uns von hier aus das Skript für
die Sortierebene kopieren. Und das Skript mit grüner Flagge. , Lassen Sie uns für das Setup-Skript zunächst alles entfernen nachdem der Name des I-Kostüms
gleich Blank Block ist, das Skript
kopieren und alles
wieder an seinen Platz bringen Gehen wir dann zum
Heartsprit-Code. Ordnung, also
im Setup-Skript werden
wir die Klone erstellen, und zwar in einem benutzerdefinierten Block, weil wir einen Wiederholungsblock verwenden, der die Ausführung
in einem einzigen Frame beenden
muss Ausführung
in einem einzigen Frame beenden
muss Gehen wir also zuerst zu MyBlocks
und erstellen einen neuen. Nennen wir es Create Clones. Stellen Sie sicher, dass die Option
Ohne Bildschirmaktualisierung ausführen aktiviert ist,
und klicken Sie auf Okay Lassen Sie uns weitermachen und dem Setup-Skript
einen Rake-Clones-Block
hinzufügen Setup-Skript
einen Rake-Clones-Block
hinzufügen Wir wollen auch
sicherstellen, dass wir danach
wieder zum leeren
Kostüm wechseln wieder zum leeren
Kostüm Gehen wir also zu Looks, bringen einen
Switch-Kostümblock rein und wechseln wir zu Blank. Lassen Sie uns nun den
definierten Rake-Clones-Block
in einen leeren Bereich verschieben in einen leeren Bereich Und hier werden wir
genug Klone erstellen, um die
maximale Anzahl an Lebenspunkten des Spielers Aber zuerst werden wir
eine gute Startposition
für den ersten Klon festlegen eine gute Startposition
für den ersten Klon Gehen wir dazu in Bewegung, fügen einen Go-to-X-Y-Block ein
und gehen wir mit minus
205 für X und 150 für Y weiter. Wir wollen auch, dass jeder Klon
einen Index hat , wobei der erste Klon einen Index von eins
erhält, der zweite einen Index von zwei bis zur
maximalen Spielergesundheit Gehen wir dazu zu
Variablen und erstellen eine neue. Nennen wir es Index und stellen sicher, dass wir uns nur
für dieses Sprite entscheiden Und lassen Sie uns die
Indexvariable verstecken. Jetzt fügen wir dem Create Clone-Skript einen Block mit zwei Blöcken hinzu
und setzen den Index auf eins. Als Nächstes werden durch die Verwendung eines
Wiederholungsblocks
genügend Klone für
die maximale Anzahl an Lebenspunkten
erzeugt genügend Klone für
die maximale Anzahl an Lebenspunkten die der Spieler haben kann Dies wird durch die Variable Max.
Spielergesundheit angegeben, die wir derzeit im
Spieler-Sprite-Code
auf drei setzen im
Spieler-Sprite-Code
auf drei Dadurch werden also
drei HeartSprte-Klone erstellt. Wenn wir jedoch etwas
Seltsames tun
wollten , wie die
maximale Gesundheit auf 3,5 zu setzen, müssten
wir tatsächlich
vier Klone erstellen, um die zusätzliche Halbwertszeit
zu berücksichtigen Deshalb sollten wir bei der
Erstellung
der Klone den gerundeten Wert verwenden bei der
Erstellung
der Klone den gerundeten Wert Okay, zuerst setze ich die maximale
Spielergesundheit auf drei zurück, und im Create Clone
Script von HeartSprite gehen
wir zur Steuerung und fügen einen
Wiederholungsblock ein Für die Anzahl der Wiederholungen gehen
wir zunächst zu den Operatoren
und fügen einen runden Block hinzu Gehen Sie dann zu Variablen und fügen Sie einen Block mit maximaler
Spielergesundheit hinzu Als Nächstes erstellen wir
einen Klon, indem wir auf
Steuerung gehen und den Block
Create Clone of Myself einfügen. Danach wollen wir
die Indexvariable
für den nächsten Klon erhöhen . Gehen wir also zu Variablen, bringen eine Änderung pro Block ein
und ändern den Index um eins. Schließlich müssen wir
den nächsten Klon etwas
weiter rechts positionieren . Gehen wir also zur Bewegung über und
bringen eine Änderung x für Block ein. Ich fand, dass das Ändern
von X um 45 ziemlich gut funktioniert. Ordnung, jetzt, wo
wir die Klone erstellen, müssen
wir
sie in den Ebenen sortieren Gehen wir also zu Control
und bringen einen Block, wenn ich als Klonen anfange,
in einen leeren Bereich Und hier gehen wir zu MI-Blöcken
und fügen einen Block hinzu, der
in Ebenen sortiert ist. Gehen Sie dann zu Variablen und verwenden Sie einen Hud-Z-Block als Eingabe für
die Z-Reihenfolge Und wie wir es
mit der Pause-Taste tun, sollten
wir auch
die Herzen teilweise
transparent machen , damit der Spieler sie durchschauen
kann Wir machen das, indem den
Geistereffekt der Pause-Tasten auf 30 setzen, und das
Gleiche tun wir für die Herzen. also bei den Herz-Sprites Wenn ich also bei den Herz-Sprites mit einem Klon-Skript
anfange, gehen wir zu Looks, fügen
einen eingestellten Effekt zwei Blöcken hinzu und setzen den
Ghost-Effekt auf 30. Schließlich müssen wir noch
ein Kostüm für den Klon entwerfen. Wir werden das gleich anhand des Klonindex und der aktuellen
Gesundheit des Spielers machen. Aber für den Moment bringen wir einfach
einen Switch-Kostümblock rein und
schalten ihn auf „Volles Herz“ um Bevor wir das Spiel starten, sollten wir die Münzen und die Anzeigen der Variablen für die Gesundheit der
Spieler aus dem Weg räumen. Wenn wir es jetzt versuchen, sollten
wir oben links auf
der Bühne drei Herzen sehen. Okay, jetzt wollen wir verschiedene Kostüme
für die Klone
auswählen , abhängig von
der aktuellen Gesundheit des Spielers Dazu müssen wir
während des Spiels
kontinuierlich
die Gesundheit des Spielers überprüfen Gesundheit des Spielers Lassen Sie uns also zunächst
den
Switch-Kostümblock vom „
Wann ich als Klon starte
“ -Skript trennen den
Switch-Kostümblock vom . Dann gehen wir zu Control und fügen dem Skript einen
Forever-Block hinzu Hier wollen wir überprüfen, ob die aktuelle Gesundheit des Spielers
unter dem Index
des aktuellen Klons liegt . Wenn ja, bedeutet das, dass
der Klon entweder das Kostüm mit dem halben Herzen
oder das Kostüm mit leerem Herzen
verwenden sollte . Wenn die aktuelle Gesundheit
des
Spielers beispielsweise zwei und der
Index des Klons drei ist, sollte der Klon das Kostüm mit leerem Herzen verwenden
. Liegt die Gesundheit
des Spielers dagegen nicht unter dem Index, sollte der Klon
das Kostüm mit vollem Herzen tragen. Um das zu überprüfen, fügen wir dem Forever-Block
einen IT-S-Block hinzu
. Gehen wir für den Zustand zu den Operatoren und fügen
einen Block weniger als ein. Gehen wir dann zu den Variablen
und überprüfen wir, ob die
Gesundheit des Spielers unter dem Index liegt. Und wir können
das Switch-Kostüm
auf den vollen Herzblock verschieben ,
hier in den S-Teil. Im Teil I wollen
wir nun überprüfen, ob
der gerundete Wert
der aktuellen Gesundheit des Spielers dem Klonindex
entspricht Wenn ja, sollte der Klon
das Halbherzkostüm verwenden. Andernfalls sollte er das Kostüm mit leerem Herzen verwenden
. Wenn die Gesundheit des
Spielers beispielsweise 1,5 und der Index der Klone zwei beträgt, erhalten wir beim
Runden der Gesundheit zwei, was dem Index entspricht Der Klon wird also das
Halbherzkostüm verwenden. Wenn die Gesundheit des Spielers dagegen
1,5 beträgt und
der Klonindex drei ist, sollte
er das Kostüm mit
leerem Herzen verwenden Gehen wir also zur Steuerung und fügen I-Teil dieses Blocks
einen Block I und dann S Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Dann lege einen runden Block
auf die linke Seite. Gehen wir nun zu Variablen
und überprüfen wir, ob
der gerundete Wert der Spielergesundheit dem Index entspricht Als Nächstes können wir zu Looks gehen und jedem Teil einen
Switch-Kostümblock
hinzufügen Für den If-Teil wechseln wir
zum Halbherzkostüm. Und für den Outs-Teil wechseln
wir zum Kostüm mit
leerem Herzen. Okay? Wenn wir das Spiel noch einmal ausführen, scheinen
die Herzen dieselben zu
sein wie zuvor. Wenn wir jedoch anfangen, Gesundheit zu verlieren, zeigen
die Kostüme jetzt korrekt die Gesundheit des Spielers an. Ordnung, großartig. Jetzt, wo wir wissen, dass die Herzanzeige funktioniert, können
wir zu den Variablen gehen und die
Gesundheitsvariable des Spielers ausblenden. Und in der nächsten Lektion werden
wir an der Münzanzeige arbeiten.
111. Münzanzeige erstellen: Um das Münzdisplay zu erstellen, verwenden
wir hier den
Münzzähler-Sprite. Die Art und Weise, wie wir das tun werden
, wird der Art und Weise, wie wir den Punktestand in
den beiden vorherigen Spielen
anzeigen, ziemlich ähnlich Punktestand in
den beiden vorherigen Spielen
anzeigen Und wenn wir uns die Kostüme ansehen
, zum
Beispiel für die
Punkte-Sprites in diesen Spielen, hat
dieses hier ein Kostüm für
jede der Ziffern 0-9 Es gibt auch ein Ikonenkostüm, das wir zuerst anzeigen werden, sowie ein X-Kostüm, das zwischen dem Symbol und
den Ziffern angezeigt wird Um mit
der Codierung des Münzzähler-Sprites zu beginnen, nehmen
wir einige Skripte
von Heart-Sprite Wir können das
grüne Flaggenskript
und das Sortier- und
Layer-Skript so kopieren , wie sie sind Wir benötigen auch ein
Create Clone-Skript, aber die Blöcke darin
werden etwas anders sein. Lassen Sie uns also zuerst alle
Blöcke entfernen und dann den definierten Block
Create Clones kopieren Setzen Sie dann die Blöcke wieder ein. Dann können wir das
Setup-Skript so kopieren, wie es ist. abschließend für das Skript Wenn ich als Klone
starte, Lassen Sie uns abschließend für das Skript Wenn ich als Klone
starte, den
Forever-Block herausziehen, den Rest
des Skripts
kopieren und alles wieder einfügen. Dann gehen wir zum
Münzzähler Sprite. Okay, also für das
Create Clone Script werden
wir zuerst ein
paar Klone mit
dem Icon-Kostüm
und dem X-Kostüm erstellen dem Icon-Kostüm
und dem X-Kostüm Dann erstellen wir ein
paar Klone mit Ziffern und legen zunächst eine Position für den ersten Lassen Sie uns also zur Bewegung übergehen und
einen Go-to-XY-Block einfügen. Für die Eingänge verwenden
wir minus 205 für X und 110 für Y. Als Nächstes wechseln wir das Kostüm Gehen wir also zu Looks, fügen einen Switch-Kostümblock hinzu und wechseln wir zum Symbol Schließlich erstellen wir den
ersten Klon, indem wir zu
Control gehen und den Block
Create Clone of Myself einfügen. Für den nächsten Klon wollen
wir uns
etwas nach rechts bewegen. Gehen wir also zur Bewegung über, bringen eine Änderung X für Block und ändern wir sie um 32. Jetzt können wir
die drei unteren Blöcke duplizieren und sie dem unteren
hinzufügen. Und lass uns
zum X-Kostüm wechseln. Der
X-Block mit der untersten Änderung bezieht sich den Klon mit der ersten Ziffer und
wir ändern X um 25. Bevor wir mit
der Erstellung der Ziffernklone beginnen, möchten
wir ihnen
einen Index geben , wie wir es für
die Sprite-Herzklone getan haben Gehen wir also zunächst zu Variablen
und erstellen eine neue. Nennen wir es Index, machen es
nur für dieses Sprite und verstecken wir die Variable Lassen Sie uns nun einen Satz zum
Blockieren hinzufügen und den Index auf eins setzen. Wir wollen auch zu
einem Standardkostüm mit Ziffern wechseln. Gehen wir also zu Looks und bringen
einen Switch-Kostümblock rein. Wir können aus allen Kostümen wählen ,
die
mit dem Wort Ziffer beginnen, also nehme ich das Kostüm mit der
einfachen Ziffer. Als Nächstes wollen wir
genügend Klone erstellen, um die maximale Anzahl von
Ziffern
zu berücksichtigen , die die
Coins-Variable haben kann Derzeit liegt der Wert von Münzen nie
über zwei Ziffern, daher werde ich zwei Klone erstellen Aber wenn du dich entscheidest
, etwas
Verrücktes zu tun , wie zum Beispiel 100
Münzen zu einem Level hinzuzufügen, musst
du drei Klone
erstellen Okay, um die Klone zu
erstellen, gehen
wir zuerst zur Steuerung
und fügen einen Wiederholungsblock ein Und ich verwende zwei als
Anzahl der Wiederholungen. Als Nächstes erstellen wir
einen Klon, indem Wiederholungsblock einen Block von mir selbst
hinzufügen Dann wollen wir noch ein bisschen
mehr
zu den Rechten wechseln und den
Index für den nächsten Klon erhöhen Gehen wir also zuerst zu Motion, fügen nach dem
Create Clone Block eine Änderung x für Block hinzu
und ändern sie um 25. Dann gehen wir zu Variablen, nehmen eine Änderung für Block vor
und ändern den Index um eins. Okay, im Skript Wenn ich als Klon
anfange, wollen
wir, wenn der Klon ein Ziffernklon ist, wenn der Klon ein Ziffernklon ist, sein Kostüm kontinuierlich auf
die richtige Ziffer
einstellen die richtige Ziffer basierend auf dem aktuellen Wert
der Variablen Coins. Also müssen wir zuerst überprüfen,
ob es sich bei dem aktuellen Klon um einen Ziffernklon
handelt. Gehen wir dazu zur Steuerung und fügen einen
dünnen Block ein. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zum Block Sieht sich
ein Kostüm an und wechseln
zum Block „Gleich“. Und überprüfe, ob der
Kostümname der Standardziffer
des Kostüms entspricht Standardziffer
des Kostüms , die wir bei der
Erstellung des Klons verwendet haben In meinem Fall werde
ich also überprüfen, ob es der
Wortziffer entspricht Um nun zum
richtigen Kostüm zu wechseln, verwenden
wir genau
dieselbe Methode, die wir
in den beiden vorherigen Spielen für die Punkteklone
verwendet haben in den beiden vorherigen Spielen für die Punkteklone
verwendet Und das stelle ich
dir als Herausforderung vor. Also pausiere das Video jetzt
und schau, ob du
den Code schreiben kannst , um das Klonkostüm auf
das Kostüm mit der
richtigen Ziffer umzustellen Klonkostüm auf
das Kostüm mit der
richtigen Ziffer Und denken Sie daran, dass wir
das kontinuierlich tun wollen. Okay,
wir werden also
den Clones-Index verwenden , um entsprechende Ziffer
in
der Coins-Variablen Und wenn wir das Wort
Ziffer davor setzen, erhalten wir den
richtigen Kostümnamen Okay, also zuerst, um
das kontinuierlich zu machen, gehen
wir zu Control und fügen
einen Block für immer ein. Dann gehen wir zu Looks und fügen für immer
einen Switch-Kostümblock
hinzu. Um den Namen des Kostüms zu ermitteln, gehen
wir zu Operatoren und fügen
dort einen Join-Block ein. Dann verwenden wir einen
Blockbuchstaben für die zweite Eingabe. Gehen wir nun zu Variablen und verbinden wir das Wort Ziffer
mit dem Buchstabenindex der Münzen. Wenn wir das Spiel jetzt ausführen, erhalten
wir eine schöne Münzanzeige, die auch herunterzählt,
während wir die Münzen einsammeln. Okay, jetzt schalten wir den Gottmodus ein und wechseln
zu Level vier Level vier hat
keine Münzen, also bekommen wir eine Null in
der Münzanzeige Wir wollen
aber eigentlich nicht, die
Münzanzeige in Stufe vier angezeigt wird. Stattdessen zeigen wir die
Gesundheitsleiste für den Boss. Im Setup-Skript können
wir also vorerst die
Münzanzeige für Stufe vier entfernen, indem die Klone
nur dann erstellen, wenn das aktuelle Level
unter dem letzten Level liegt Gehen wir dazu zu Control
und holen uns einen ITN-Block,
und wir können ihn
sowohl um den Block „Klone erstellen“ als auch um den Block
„Kostüm
zu leer wechseln“ wickeln „Klone erstellen“ als auch um den Block Kostüm
zu leer wechseln Für die Bedingung gehen wir zu den Operatoren und geben einen Block mit
weniger als ein Gehen wir dann zu den Variablen und prüfen, ob die Stufe kleiner
als die endgültige Stufe ist. Jetzt hat Level vier keine Münzanzeige,
aber die anderen Stufen
haben es immer noch. Okay, jetzt können wir
die Münzen als Variable verstecken, und wo wir gerade von Level vier sprechen, werden
wir als Nächstes daran arbeiten,
den Boss zum Spiel hinzuzufügen, was ziemlich viel Spaß machen wird
112. Den Boss einrichten: Nachdem der Spieler
alle Münzen in den Stufen
eins, zwei und drei gesammelt hat, um sein gestohlenes Raumschiff vom
Boss
zurückzukaufen, um sein gestohlenes Raumschiff vom
Boss
zurückzukaufen gestohlenes Raumschiff vom dessen Name NdNarb ist, geht er dann
zu Level vier über, wo er NadnRB von Angesicht
zu Angesicht begegnet NdNarb jedoch böse ist,
beschließt er, das Raumschiff des Spielers behalten zu beschließt er Wenn der Spieler es also
wirklich zurück haben will, muss
er Um den Boss zu erstellen, verwenden
wir den Boss Sprite Wenn wir uns seine Kostüme
ansehen, hat
er eine
Fly-Animation mit zwei Frames,
eine Hurt-Animation mit zwei Frames, eine
Tot-Animation mit einem Frame und eine Hip-Box Okay, und wie bei den
anderen
Feinden muss der Spieler dem Boss auf
den Kopf springen ,
um ihn zu verletzen Im Gegensatz zu den anderen
Feinden muss der Spieler jedoch mehrmals
auf den Boss springen mehrmals
auf den Boss um ihn zu besiegen, und zeigt seine
Gesundheit in der Außerdem wird der Boss während des gesamten Bosskampfes Raketen
abfeuern, die den Spieler
verfolgen und explodieren,
wenn sie den Spieler treffen Aber wir werden uns später mit all dem
Zeug befassen. Im Moment bringen wir
den Boss einfach dazu , sich im Spiel zu
bewegen. Und um das zu tun, können wir damit
beginnen,
zum B-Sprite-Code zu gehen und einige Skripte zu
kopieren Kopieren wir zunächst den
Scheck, der den Spieler berührt und animieren die Skripte
in den Boss Sprite Wir werden keine
Klone für den Boss erstellen,
also können wir das
Create Clone Script überspringen Aber wir wollen
Ebenen sortieren und eine gerechte Position haben. Als Nächstes wollen wir das
Handle-Action-Skript, aber nur den If-Status
als toter Teil Lassen Sie uns zuerst
alles andere herausziehen, das Skript
kopieren und alles wieder
einfügen brauchen wir nicht, wenn
ich als Klon anfange, aber wir benötigen alle drei, wenn
ich Aktualisierungsskripte erhalte. Für das Setup-Skript können
wir nur den
Setup-Block
, als ich ihn erhalten habe, von selbst kopieren . Lassen Sie uns abschließend das Skript mit
der grünen Flagge kopieren. Gehen Sie dann zum Boss
Brite-Code und bereinigen Sie ihn. Okay, im Animationsskript wollen
wir
den Anime-Frame ändern, wenn sich
der Boss entweder
im Flugzustand oder im verletzten Zustand befindet,
aber nicht im toten Zustand aber nicht Was die Bedingung angeht, ziehen
wir für den Moment den Status „Gleich
fliegendem Block“ heraus Gehen wir dann zu den Operatoren und verwenden einen Knot-Block
als Bedingung Nun setzen wir den Status
gleich Fly Block in den Knotenblock und prüfen
ob nicht State Lassen Sie uns die
Animation auch etwas
schneller machen , indem wir den Anime-Frame um
0,2 ändern. Kommen wir als Nächstes zum derzeit leeren
Setup-Skript Wir
wollen den Boss natürlich nur
erscheinen lassen , wenn wir uns
gerade auf Level vier befinden. Andernfalls setzen wir einfach das Sprites-Kostüm
auf das leere Kostüm Gehen wir also zuerst zur Steuerung und bringen
einen If Thin S-Block rein Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob Level
gleich Endlevel Für den TS-Teil gehen
wir zu Looks, bringen einen Switch-Kostümblock rein und wechseln zum leeren Kostüm Für den Teil I werden wir damit beginnen
, alle Variablen
des Chefs zu initialisieren, und wir müssen zu
Variablen gehen und
einige neue erstellen Wir erstellen zunächst ein
paar Variablen für
die aktuelle Gesundheit des Bosses
und die maximale Anzahl an Und weil der
Boss-Gesundheitsbalken-Sprite auch auf diese zugreifen muss, machen
wir sie Nennen
wir es also für den ersten Boss Health. Und mach es für alle Sprites. Dann lass uns einen anderen erstellen, ihn Max Boss Health
nennen und ihn auch
für alle Sprites erstellen MaxBos Health wird
sich während des Spiels nicht ändern, also setzen wir es in das
grüne Flaggen-Skript Um das zu tun, fügen wir dem Skript
einen Block mit zwei
Sätzen hinzu und setzen Max
Boss Health auf zehn Für die Boss-Health-Variable fügen
wir dem Teil I
des
ITN-Out-Blocks im Setup-Skript einen Satz zu blockieren hinzu
und setzen ihn auf
Max Boss Health Als Nächstes, wenn der Boss
stationär ist und Raketen abschießt, wir ihn auf und ab boben Dafür verwenden wir Trigonometrie und müssen den Winkel im Auge
behalten Lassen Sie uns also eine weitere Variable erstellen
. Nennen Sie es Winkel und machen Sie
es nur für dieses Sprite. Um es zu initialisieren, fügen wir einen weiteren Block mit zwei Sätzen hinzu Setup-Skript
einen weiteren Block mit zwei Sätzen hinzu und
setzen
den Winkel auf Null Als Nächstes benötigen wir eine Variable für die Geschwindigkeit, mit der der Boss
fliegt Wir können es Fluggeschwindigkeit nennen und es nur für
diesen Sprite machen Der Wert der
Fluggeschwindigkeit ändert sich später, je nachdem, ob der Boss verletzt ist
oder nicht Aber lassen Sie uns vorerst einen Block mit
zwei Sätzen hinzufügen. Und setzen Sie ihn auf einen Standardwert von vier. Als Nächstes fliegt der Boss während
des gesamten Kampfes abwechselnd zufällig durch das Level und schießt drei
Raketen auf den Spieler Für diese Aktionen
benötigen wir drei Variablen, eine für
einen Timer, eine, die angibt, ob der Boss
gerade schießt oder nicht,
und eine für die Anzahl der Raketen, die
er noch abschießen muss Also für die nächste Variable nennen
wir sie Timer und machen
sie nur für dieses Sprite Dann lassen Sie uns
eine weitere erstellen, sie „Schießen“ nennen. Auch nur für diesen Sprite. Lassen Sie uns jetzt noch einen erstellen. Nenn es Raketen zum Schießen und mach es auch nur
für diesen Sprite die drei Variablen zu setzen, fügen
wir dem Setup-Skript drei weitere
Set-Zwei-Blöcke hinzu Lassen Sie uns zunächst den Timer auf 30 setzen. Schießen ist der Wert
entweder Eins, wenn der Boss Raketen abfeuert oder Null, wenn er nicht schießt Vorerst setzen wir ihn auf Null. Lassen Sie uns zum Schluss Raketen so einstellen
, dass sie auf drei schießen. Okay, das war's für
die neuen Variablen. Also lass uns weitermachen und sie alle verstecken , bis auf die Gesundheit
des Chefs. Wir lassen die
Variable Boss-Gesundheit vorerst einblenden, verschieben sie
aber
etwas nach unten , damit sie das HUD nicht
beeinträchtigt Jetzt müssen wir auch die verbleibenden Variablen des Chefs
wie seine globale Position, seine Geschwindigkeit, seinen Status
und den Animationsrahmen und den Für all das fügen wir dem Setup-Skript also sechs weitere Blöcke vom Typ „Satz zwei“
hinzu Lassen Sie uns zunächst X
auf 150 und Y auf 50 setzen. Dadurch wird er
genau hier im Level platziert. Jetzt brauchen wir tatsächlich noch
eine Variable für die horizontale
Geschwindigkeit des Bosses Also lass uns eine neue erstellen. Nennen wir es SpeedX. Mach es nur
für dieses Sprite
und verstecke die Variable Lassen Sie uns nun sowohl
Geschwindigkeit x als auch Geschwindigkeit
Y auf Null setzen , da er am Anfang
stationär sein wird Lassen Sie uns abschließend State auf
Fly und Atom Frame auf Null setzen. Ordnung. Jetzt müssen
wir
nur noch ein paar Dinge für das Setup tun. Zuerst lassen wir
den Boss nach links
schauen, sodass er den Spieler ansieht. Gehen wir also zur Bewegung über, bringen einen Punkt
- und Richtungsblock hinein und zeigen wir in die
negative Richtung 90. Und wenn wir schon dabei sind,
lassen Sie uns weitermachen und
den
Rotationstyp Boss Brights auf links nach rechts ändern den
Rotationstyp Boss Brights auf links nach rechts Als Nächstes müssen wir das Standardkostüm des
Bosses festlegen. Gehen wir also zu Looks, bringen einen Switch-Kostümblock rein
und schalten ihn auf Fly Zero um Wir müssen
den Boss auch auf der Bühne positionieren. Gehen wir also zu Mbloxs
und fügen einen Block zur Einstellung der
Position ein Schließlich müssen wir ihn in den Schichten
sortieren. Lassen Sie uns also einen Block mit der
Sortierung nach Ebenen einführen. Gehen wir dann zu Variablen und verwenden einen
Komponenten-Z-Block als Eingabe. Okay? Wenn wir jetzt das Spiel starten, Gottmodus
einschalten
und auf Level vier wechseln, erscheint der Boss. Und wenn wir genau hinschauen, können
wir sehen, dass das Feuer am Boden dieses
Jetpacks animierend ist im Moment macht er nicht
viel anderes, Aber im Moment macht er nicht
viel anderes, also werden wir
das in der nächsten Lektion korrigieren
113. Lass den Boss fliegen: Um weiter am Boss zu arbeiten, kommen
wir zum
Handle-Action-Skript. Erstens: Wenn der Boss stirbt und
am Ende der Stufe fällt, weil er ziemlich groß ist, lassen
wir ihn etwas
weiter fallen als minus 180. Also im Block I ist Y kleiner
als minus 180.
Lassen Sie uns überprüfen, ob es
weniger als minus 300 ist. Da wir
keine Klone verwenden, können
wir auch die
beiden Löschblöcke entfernen Stattdessen wollen wir die Botschaft
verbreiten, die dann
vom Hintergrund empfangen wird Gehen wir zu Veranstaltungen,
fügen einen Broadcast-Block hinzu und senden wir
eine neue Nachricht namens Boss Dide. Wir werden uns etwas später mit der
Boss-Dide-Nachricht befassen Aber zuerst werden wir
den Boss dazu bringen,
bestimmte Aktionen auszuführen , wie zum Beispiel im
Spiel herumzufliegen Dazu ändern wir zunächst seine Position mithilfe der Variablen speed
X und speedY Gehen wir also zu Variablen und fügen am Ende des Skripts
zwei Change-B-Blöcke Und lassen Sie uns X durch
Geschwindigkeit X und Y durch Geschwindigkeit ändern. Aber weil wir
Geschwindigkeit X und Geschwindigkeit Y auf Null initialisieren , wird
der Boss noch nirgendwohin gehen Als Nächstes
wollen wir also überprüfen, ob der
Timer abgelaufen ist Wenn ja, lassen wir den Boss entweder herumfliegen
oder Raketen abschießen Andernfalls
reduzieren wir einfach den Timer. Okay, also lass uns zuerst zur
Steuerung gehen und
einen I, dann Outs Block einbauen. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob der Timer gleich Null ist. Lassen Sie uns für den TS-Teil
eine Änderung pro Block und die Änderung des Timers um eine negative Änderung Im Teil I
wollen wir überprüfen, ob der Boss
gerade schießt
oder nicht , indem wir prüfen ob die Schießvariable gleich eins
ist. Gehen wir also zur Steuerung und fügen if-Teil
einen Ithn-s-Block hinzu. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und überprüfen, ob das
Schießen gleich eins ist. Wir haben die Raketen noch nicht
erstellt, also lassen wir den
Teil I vorerst leer Wenn der Boss dagegen gerade
nicht schießt, prüfen
wir, ob seine
aktuelle horizontale Geschwindigkeit gleich Null
ist Wenn ja, bewegen wir ihn
in eine zufällige Richtung. Andernfalls
bereiten wir ihn darauf vor, mit dem Schießen zu beginnen. Gehen wir also zu Control, holen uns noch einen
Wenn-Dann-S-Block und legen ihn in den
äußeren Teil dieses Blocks. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob Geschwindigkeit x gleich Null ist. Und im ersten Teil bewegen wir den
Boss in eine zufällige Richtung. Und weil das
Handle-Action-Skript ziemlich lang werden
wird, werden
wir die Größe etwas reduzieren indem wir benutzerdefinierte Blöcke
für die verschiedenen Aktionen verwenden. Gehen wir also zu Mblock
und erstellen einen neuen. Wir können es Bewegung in zufälliger
Richtung nennen. Und klicken Sie auf Okay. Und lassen Sie uns weitermachen
und einen Block mit Bewegung in
zufälliger Richtung
zum Teil I hinzufügen Block mit Bewegung in
zufälliger Richtung
zum , wenn Geschwindigkeit
X gleich Null Ordnung, jetzt
verschieben wir den Block mit definierter Bewegung in zufälliger Richtung
in ein leeres Feld Und hier wollen wir den Boss nach dem Zufallsprinzip entweder nach links oder rechts bewegen
lassen. Dazu können wir zunächst eine Zufallszahl 1-2
generieren, und wenn es eins ist,
lassen wir ihn nach rechts gehen, und wenn es zwei sind,
lassen wir ihn nach links gehen. Gehen wir also zur Steuerung und
führen einen Block mit „Ich dann raus“ ein. Gehen wir für die Bedingung zu den Operatoren und fügen zuerst einen
Equals-Block ein Dann platzieren wir einen
Auswahl-Block auf der linken Seite
und prüfen, ob eine
Zufallszahl 1—2 gleich eins ist Gehen wir nun zu Variablen, fügen jedem
Teil des I-Then-S-Blocks zwei Blöcke hinzu
und verwenden sie, um
SpeedXF einzustellen . Der I-Teil setzt SpeedX auf die Für den Outs-Teil wollen
wir, dass Geschwindigkeit x negativ Gehen wir also zuerst zu den Operatoren und fügen
einen Subtraktionsblock hinzu Gehen wir dann zurück zu den Variablen und machen wir Null
minus Fluggeschwindigkeit Wir wollen auch, dass der Chef
in die richtige Richtung schaut. Gehen wir also zur Bewegung über und fügen jedem Teil einen Punkt- und
Richtungsblock hinzu. Für den If-Teil
zeigen wir in Richtung 90 und für den S-Teil machen
wir minus 90. Als Nächstes lassen wir
den Boss nach dem Zufallsprinzip entweder nach oben, unten oder nicht vertikal bewegen. Das zu tun ist ziemlich einfach. Gehen wir zunächst zu
Variablen und fügen am Ende des Skripts einen Satz zum Blockieren hinzu und legen
die Geschwindigkeit Y fest. Gehen wir
nun zu den Operatoren, und wir wollen die Variable
Fluggeschwindigkeit berücksichtigen Lassen Sie uns also zuerst
einen Multiplikationsblock dann einen Pick
Random-Block auf eine Seite legen Jetzt können wir eine Zufallszahl
zwischen minus eins und eins wählen zwischen minus eins und eins Dann können wir zu Variablen gehen und die
Zufallszahl
mit der Fluggeschwindigkeit multiplizieren. Der Grund, warum wir das für
Geschwindigkeit X nicht tun
konnten , ist, dass wir nicht
wollen, dass Geschwindigkeit X Null ist. Ordnung, jetzt kommen wir zurück zum Handle-Action-Skript. Nachdem wir eine zufällige
Bewegung für den Boss festgelegt
haben, stellen wir den Timer ein, sodass er sich ein wenig
bewegen kann. Fügen wir also
unter dem Block mit zufälliger
Bewegungsrichtung einen Block und setzen den Timer auf 120, was ungefähr 4 Sekunden entspricht. Als nächstes, im leeren TS-Teil, bereiten wir den Boss darauf vor, mit dem Schießen
zu beginnen. Vorerst wird das
darin bestehen, die Bewegung
des Bosses zu stoppen und die
Schießvariable auf eins zu
setzen, und das machen wir auch in einem
benutzerdefinierten Block Gehen wir also zu Mblock
und erstellen einen neuen. Wir können es „Vorbereitung
zum Schießen“ nennen und auf Okay klicken. Fügen wir zu den Ausgängen einen Block
zur Vorbereitung auf
das Schießen hinzu. Der Teil der Geschwindigkeit
X entspricht einem Block Null Dann verschieben wir den
definierten Block „Vorbereitung zum Schießen“ in
ein leeres Feld Und hier gehen wir zu Variablen
und fügen drei
Sets von zwei Blöcken hinzu. Um die Bewegung des Chefs zu stoppen, setzen
wir sowohl Geschwindigkeit
x als auch Geschwindigkeit D auf Null. Lassen Sie uns abschließend das
Schießen auf eins setzen. Nach
der anfänglichen Verzögerung von 30 Bildern überprüft
das Handle-Action-Skript, das Handle-Action-Skript ob
die
Aufnahme gleich eins ist Da wir die
Aufnahme auf Null initialisieren, wird
es dann prüfen, ob
SpeedX Das wird der Fall sein, also wird der Boss 120 Frames
lang in
eine zufällige Richtung bewegt lang in
eine zufällige Richtung Wenn der Timer wieder
abgelaufen ist, die
Aufnahme immer noch Null, aber SpeedX
ist jetzt nicht gleich Null Das bedeutet, dass der Block „Vorbereitung
zum Schießen“ läuft, wodurch die Bewegung
des Bosses gestoppt
und das Schießen auf eins gesetzt wird und das Schießen auf eins gesetzt Ab dem nächsten Bild wird also nur noch
geschossen und der Boss
bleibt stationär In Ordnung, versuchen wir es. Nach einer Verzögerung von 1 Sekunde bewegt sich
der Boss für etwa
4 Sekunden in eine zufällige Richtung und stoppt dann. Cool. Im Moment kann
der Boss das Level jedoch verlassen. Wir wollen seine Bewegung einschränken, sodass er in
die entgegengesetzte Richtung geht , wenn
er eine Levelgrenze erreicht. Wir werden das in
einem benutzerdefinierten Block machen. Gehen wir also zu Meine Blöcke
und erstellen einen neuen. Wir können es
Bewegungsbegrenzung nennen und auf Okay klicken. Wir wollen die
Bewegung unmittelbar nach der
Änderung der X- und Y-Variablen
im Handle-Action-Skript einschränken Änderung der X- und Y-Variablen . Fügen wir also
gleich nach dem Y-Block „Ändern“ einen Block zur Begrenzung der
Bewegung hinzu. Okay? Lassen Sie uns jetzt etwas Leerraum für das
Limit Movement Script finden. Und hier werden wir zuerst
überprüfen, ob sich der Boss Nähe der linken oder
rechten Seite des Levels befindet, und wenn ja, lassen wir ihn
in die entgegengesetzte Richtung gehen. Gehen wir also zur Steuerung und fügen einen
Wenn-der-S-Block ein. Für die Bedingung gehen wir zu den Operatoren und geben
einen Block kleiner als ein. Gehen wir dann zu
Variablen und prüfen ob X kleiner als minus 180 ist. Wenn dies der Fall ist, fügen wir zunächst einen Satz zum Blockieren hinzu und setzen X auf minus 180. Als Nächstes, weil der Boss
sich nach links bewegt, lassen wir
ihn,
wenn das passiert, nach rechts gehen. Lassen Sie uns
einen weiteren Satz zum Blockieren hinzufügen und SpeedX
auf Fluggeschwindigkeit setzen, sodass SpeedX einen positiven Wir wollen auch, dass er
nach rechts schaut. Lassen Sie uns also zur Bewegung
übergehen und einen Punkt in
Richtung 90 Block einfügen. Okay, jetzt im Outs-Teil werden
wir überprüfen, ob der Boss sich der
rechten Seite des Levels genähert hat . Lassen Sie uns also zuerst zur
Kontrolle gehen und einen
Wenn-Block einbauen. Für die Bedingung gehen wir zu den Operatoren und fügen
einen Größer-als-Block ein. Dann platzieren wir einen
Zusatzblock auf der rechten Seite. Gehen wir nun zu Variablen
und überprüfen wir, ob X
größer als Max Scroll, X
plus 180 ist . Und hier können
wir zunächst einige Duplikate
der drei Blöcke
aus dem Block „Wenn X kleiner
als minus 180 ist“ einbringen einige Duplikate
der drei Blöcke
aus dem Block „Wenn X kleiner
als minus 180 ist Aber dieses Mal
wollen wir X auf
ein Duplikat des Blocks Max
Scroll X plus 180 setzen ein Duplikat des Blocks Max
Scroll X plus 180 Für Geschwindigkeit X wollen wir den negierten
Wert der Fluggeschwindigkeit
verwenden Lassen Sie uns also zuerst
den Fluggeschwindigkeit-Block herausziehen. Gehen Sie dann zu den Operatoren
, fügen Sie einen Subtraktionsblock hinzu
und machen Sie Null minus Fluggeschwindigkeit Schließlich wollen wir
in Richtung minus 90 zeigen. Um alles zu testen,
kommen wir zum
Handle-Action-Skript. Und nach dem Block „Bewegung in
zufälliger Richtung“
lassen wir den Boss etwas
länger fliegen, lassen wir den Boss etwas
länger fliegen indem wir den Timer vorübergehend auf 500
setzen. Wenn wir das Spiel jetzt starten, prallt
der Boss von
der linken und rechten
Seite des Levels ab der linken und rechten
Seite des Levels Als Nächstes werden wir an den
oberen und unteren Grenzwerten arbeiten. Für die Obergrenze
wollen wir nicht, dass der Boss zu
weit nach oben geht , sonst kann der Spieler
nicht auf ihn springen. Und für den Boden verhindern
wir, dass er in die Lava
geht. Okay. Zurück im
Limit Movement Script können
wir damit beginnen,
den gesamten Block Ix ist kleiner
als minus 180 zu duplizieren Block Ix ist kleiner
als minus 180 und ihn am
Ende des Skripts zu platzieren für das untere Limit überprüfen, Lassen Sie uns für das untere Limit überprüfen, ob Y
kleiner als minus 50 ist Das wird direkt
über der Lava sein. Wenn ja, wollen wir Y auf minus
50
setzen und wir
wollen , dass der Boss
hochfliegt , indem wir Geschwindigkeit
Y auf Fluggeschwindigkeit setzen. für die Obergrenze überprüfen, Lassen Sie uns für die Obergrenze überprüfen, ob Y größer
als Max Scroll Y plus 80 ist. Wenn ja, setzen wir Y
auf MX, Scroll Y plus 80 und Geschwindigkeit Y auf
Null minus Fluggeschwindigkeit. Und wir können die beiden
Punkt- und Richtungsblöcke loswerden. Jetzt fliegt der Boss nicht mehr zu
hoch oder geht in die Lava. Jetzt müssen wir
den Boss dazu bringen, ein paar Raketen abzufeuern. Aber zuerst, solange
er stationär ist, würde
es besser aussehen, wenn wir
ihn auf und ab wackeln lassen würden, wie bei einer müßigen Animation Wir werden das in einem
weiteren benutzerdefinierten Block tun. Lass uns zu mybox gehen und eine neue
erstellen. Nennen wir es Bob auf und
ab und klicken auf Okay. Wir wollen nur, dass der Chef
auf und ab boppt, wenn er nicht herumfliegt, weil es
sonst ein bisschen komisch
aussehen würde. Kommen wir also zum
Handle-Action-Skript. Und bevor wir
die Position des Chefs ändern, werden
wir überprüfen, ob Geschwindigkeit
X derzeit Null ist Wenn ja, werden wir
ihn auf und ab boben. Okay? Gehen wir also zuerst zu Control und bringen einen
INN-Block in einen leeren Raum. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob SpeedX gleich Wenn ja, gehen wir zu M-Blöcken und bringen einen Bob
rauf und runter Dann platzieren wir das alles direkt über dem
Change-X-Block. In Ordnung. Jetzt, nach dem Block „Bewegung und
zufällige Richtung“, setzen
wir den Timer wieder auf 120 Gehen wir auch zum Setup-Skript und
initialisieren
den Timer auf etwa 200, sodass er etwas länger
wartet,
bevor er anfängt Lassen Sie uns nun den
definierten Block „Bob Up and
Down“ finden und ihn
in ein leeres Feld verschieben Und hier gehen wir zuerst zu Variablen und nehmen
blockweise eine Änderung vor. Und lassen Sie uns den Winkel um vier ändern. Damit können wir kontrollieren, wie schnell der
Boss auf und ab Als Nächstes legen wir die
Geschwindigkeitsvariable Y mithilfe von Trigonometrie fest. Um das zu tun, geben wir zunächst einen Block
ein und stellen die Geschwindigkeit Y ein. Gehen wir
dann zu Operatoren, Block aus Bauchmuskeln ein
und verwenden wir die Ursachenfunktion und verwenden wir die Ursachenfunktion Gehen wir dann zurück zu den Variablen und ermitteln den Kosinus
der Winkelvariablen Wenn wir das Spiel jetzt ausführen, wird
der Boss reibungslos auf und ab
boppeln Und sobald er anfängt,
sich nach links oder rechts zu bewegen, hört
er auch auf zu wippen Wenn wir das Gefühl haben, dass er etwas zu weit
oder nicht weit genug
auf und ab wippt, können
wir die Ursache für
das Winkelergebnis mit einem anderen Wert multiplizieren Winkelergebnis mit einem anderen Lassen Sie uns dazu zunächst
die Ursache für den
Winkelblock heraussuchen . Gehen wir dann zu den Operatoren, fügen dem Y-Block für
die eingestellte Geschwindigkeit einen Multiplikationsblock und legen die Ursache des
Winkelblocks auf eine Seite Wenn wir den Wert mit einem höheren
Wert als eins multiplizieren, wird
er oben höher
und unten niedriger Und wenn wir einen
Dezimalwert von 0-1 verwenden, verringert sich
dadurch, wie
hoch oder tief er gehen kann Ich denke, es mit
0,8 zu multiplizieren, sieht ziemlich gut aus. Wir können
die Wippgeschwindigkeit auch erhöhen , indem den Winkel
um einen höheren Wert
ändern Aber ich bleibe bei vier. Wir könnten
den Winkelwert auch einfach immer
höher werden lassen , aber das wäre
etwas ineffizient Und
wie wir bereits besprochen haben, beginnen
die Kosinuswerte auf jeden Fall von vorne, sobald der Winkel 360 erreicht Was wir also tun können, ist
, den Wert
des Winkels wieder auf Null zurückzusetzen ,
wenn er 360 erreicht Gehen wir dazu
zu Variablen und fügen direkt unter dem Block zum Ändern
des Winkels
einen eingestellten Winkelblock hinzu. Für die Eingabe gehen wir
zu Operatoren und fügen einen Mod-Block hinzu, gehen dann
zurück zu Variablen und setzen den Winkel
auf Winkel Mod 360. Jetzt wird der Winkelwert auf Null
zurückgesetzt, wenn er 360
erreicht, und der
Wippeffekt bleibt derselbe Ordnung. Gehen wir nun zurück zum Setup-Skript und initialisieren die
Timer-Variable wieder auf 30. Wir wollen auch das Schießen auf eins
initialisieren , damit der Boss mit dem Schießen
anfängt Und in der nächsten Lektion werden
wir dafür sorgen, dass er
tatsächlich ein paar Raketen abfeuern kann
114. Raketenschießen: Damit der Boss anfängt, Raketen zu
schießen, kommen
wir zum
Handle-Action-Skript Und das I-Schießen
entspricht hier einem Block.
Wir wollen überprüfen, ob
der Boss noch
einige Raketen zum Abfeuern übrig hat, indem wir prüfen, ob die Zahl
der zu schießenden Raketen variabel größer als Null
ist Wenn ja, lassen wir
ihn eine Rakete abfeuern und machen
dann eine kurze Pause, bevor wir die nächste
abfeuern Andernfalls setzen wir das Schießen auf Null, damit er
anfangen kann, herumzufliegen. Gehen wir also zuerst
zur Steuerung und fügen einen IT-S-Block zum
I-Teil hinzu, wenn das
Schießen einem Block entspricht Gehen wir für die Bedingung zu den Operatoren und fügen
einen Block größer als Gehen wir dann zu
Variablen und prüfen, ob abzuschießenden
Raketen
größer als Null ist Ich werde also eine Nachricht senden, die der Rocket Sprite
hier erhalten wird. Also lasst uns zu Veranstaltungen gehen, einen Broadcast-Block einbauen und eine neue
Botschaft namens Shoot Rockets Als Nächstes wollen wir den Wert der
Raketen auf den Abschuss reduzieren. Gehen wir also zu den Variablen über, bringen eine Änderung pro
Block ein und ändern wir die Raketen so, dass sie mit einem negativen
Wert abgefeuert werden Zum Schluss wollen wir noch ein
bisschen warten, bevor wir
die nächste Rakete abfeuern Lassen Sie uns also
ein Set zum Blockieren hinzufügen und den Timer auf 45 setzen. Wenn keine
Raketen mehr zum Abfeuern übrig sind, wollen
wir einen Satz zum Blockieren einsetzen und das Schießen auf Null setzen Lassen wir den Boss auch
etwas warten , bevor er anfängt
herumzufliegen , indem
wir ein weiteres Set zum Blockieren einsetzen und den
Timer auf 90 stellen Okay, jetzt kommen wir
zum Drehbuch zur Drehvorbereitung. Und hier müssen wir
die Raketen so einstellen, dass sie
variabel auf die Anzahl
der Raketen zurückschießen variabel auf die Anzahl
der Raketen zurückschießen können,
die der Boss abschießen soll Lassen Sie uns also ein Set zum
Blockieren und Raketen zum Abfeuern Jetzt möchten wir vielleicht
versuchen, beim Testen eine andere
Anzahl von Raketen zu verwenden . Um zu vermeiden,
dass
wir den Wert hier und im Setup-Skript ändern müssen, erstellen
wir eine neue Variable für die maximale
Anzahl von Nennen wir es Max Rockets. Machen Sie es nur so hell und wir müssen es nicht zeigen Der Wert von Max Rockets
wird sich während des Spiels nicht ändern, also setzen wir ihn in das Skript mit
grüner Flagge, indem wir
dem Skript
einen Satz zum Blockieren hinzufügen einen Satz zum Blockieren und
Max Raketen auf drei setzen. Im Setup-Skript können
wir nun Anzahl der Raketen
für das Abfeuern auf drei,
sondern nicht mehr die Anzahl der Raketen
für das Abfeuern auf drei,
sondern auf Max. Raketen setzen Und das Gleiche können wir mit dem Drehbuch „Prepared to Shoot“ tun. A, nur zum Spaß, wir können den Boss dazu bringen, zum Spieler
zu schauen , bevor
er anfängt zu schießen. Dazu können wir überprüfen, ob die Exposition des Chefs
geringer ist als die Exposition des
Spielers Wenn ja, schauen wir
ihm nach rechts zu. Andernfalls stehen wir
ihm nach links gegenüber. Ich gebe
dir das als Herausforderung. Halte das Video
jetzt an und schau, ob du es
schaffst , dass der Boss dem Spieler
zuschaut. Okay, also lassen Sie uns zuerst zur
Steuerung gehen und
einen IT-Out-Block einbauen. Lassen Sie uns für den Zustand zu den
Betreibern gehen und einen Block mit
weniger als einem Block eintragen. Gehen wir dann zu Variablen und platzieren einen X-Block
auf der linken Seite. Gehen
wir für die rechte Seite zur Sensorik über, eine Hintergrundnummer von Stufenblöcken hinzu und verwenden sie um die
Sprites des Players X variabel Wenn die Exposition des Bosses geringer
ist als die der Spieler, richten wir uns nach
rechts, indem wir in
Bewegung gehen und einen
Punkt in Richtung 90 Block einfügen Andernfalls zeigen wir in
Richtung minus 90. Ordnung, jetzt
müssen wir
die Raketen tatsächlich erstellen und das tun wir
mit der Rakete Sprite Wenn wir uns ihre Kostüme
ansehen, hat
sie eine einfache
Fliegenanimation mit zwei Frames und eine Okay, und um mit
der Codierung des Rocket-Sprites zu beginnen, gehen
wir zuerst
zum BSprite-Code und Wir können überschreiben, den Spieler
berühren animieren, in Ebenen sortieren und die Position
für Ziehaktionen anpassen, wir können nur
den definierten Block kopieren Lassen Sie uns nun den Zeitpunkt, an dem ich
als
Klon anfange, kopieren und die T-Skripte
aktualisieren für das Setup-Skript Lassen Sie uns für das Setup-Skript alles nach
dem Block Wenn nicht Kostüm
gleich Leerzeichen
entfernen , das Skript überschreiben und alles wieder einfügen Lassen Sie uns abschließend das Skript mit
der grünen Flagge kopieren. Gehen Sie dann zum
Rocket-Sprite-Code und bereinigen Sie ihn. Okay, also im Skript
des Rocket-Sprites müssen
wir nicht überprüfen, ob der Spieler fällt,
weil der Spieler eine Rakete nicht
zerstören kann ,
indem er darauf springt Wenn die Rakete
den Spieler in irgendeiner Weise berührt, wird
der Spieler verletzt Im Block „Ich berühre den
Spieler“ wollen
wir also nach der Übertragung von
Bounce Player nach der Übertragung von
Bounce Player nur
den Teil I X von Spieler ist
größer als X ausführen . Und wir können
den I-Status der Fallsperre „Spieler ist
gleich“ loswerden den I-Status der Fallsperre „Spieler ist
gleich Was das Animationsskript angeht, wird sich
eine Rakete immer
nur im Flugzustand befinden, sodass wir den Status nicht
überprüfen müssen Lassen Sie uns also
die Rahmenblöcke für Änderung und Set
Nom herausziehen und
sie direkt unter dem
Switch-Kostümblock platzieren sie direkt unter dem
Switch-Kostümblock Dann lassen Sie uns den Block „Ich dann“ loswerden
. Lassen Sie uns auch
den Statusblock aus
dem Switch-Kostümblock entfernen und stattdessen das Wort Fly
verwenden. Und was die Animationsgeschwindigkeit angeht, ändern
wir Nom Frame um 0,2. Als Nächstes, und wenn ich Update eins
erhalte ,
müssen
wir den Status wieder nicht überprüfen. Lassen Sie uns das
Häkchen, das den
Spielerblock berührt, direkt unter den
Block „Position anpassen“ setzen und den
Block „Position anpassen“ setzen und den Block I state is equal is fly
entfernen Okay, was das Erstellen von
Rocket-Sprite-Klonen angeht, machen
wir das immer dann, wenn
der Boss die Shootocket-Nachricht sendet Gehen wir also zuerst zu den Events,
bringen einen Block
W ein, den ich erhalte und eine Rakete Wir wollen nur dann einen Klon
erstellen, wenn das empfangende Sprite
das Original-Sprite ist Also müssen wir überprüfen, ob
es das leere Kostüm verwendet. Gehen wir dazu zunächst zu Control und fügen einen ITN-Block ein Und für die Bedingung können
wir ein Duplikat von einem der Kostümnamen verwenden ,
die leeren
Blöcken entsprechen Als Nächstes erstellen
wir einen Klon in einem benutzerdefinierten Block Gehen wir also zu Mblock
und erstellen einen neuen. Wir können es Create
Clone nennen und auf Okay klicken. Und lassen Sie uns einen
Crate-Clone-Block in den ITN-Block einfügen. Ordnung, jetzt suchen
wir leeren Platz für den
definierten Crate-Clone-Block Und hier
wollen wir zuerst zum Startkostüm
für
den Klon wechseln Startkostüm
für
den Gehen wir also nach Los, bringen einen Switch-Kostümblock und wechseln wir zu Fly Zero. Wir wollen auch, dass der Klon
zunächst nach oben zeigt. Gehen wir also zur Bewegung über und fügen einen Punkt- und
Richtungsblock hinzu. Wenn Sie eine Richtung von Null verwenden,
zeigt es nach oben. Als Nächstes legen wir eine globale
Position für den Klon fest. Wir möchten, dass es so aussieht, als
käme es von
der Spitze des Jetpacks des Chefs, also verwenden wir die
Position des Chefs als Ausgangspunkt Gehen wir dazu zunächst zu Variablen und fügen
zwei Blöcke hinzu Und lassen Sie uns die X-Variable
und die Y-Variable setzen. Für X müssen wir es ein wenig von der Darstellung der
Boss-Sprites Gehen wir zuerst zu Operatoren und fügen einen Zusatzblock hinzu Gehen wir nun zur Erkennung über und platzieren einer Seite
des
Additionsblocks eine Hintergrundnummer auf
einer Seite
des
Additionsblocks eine Hintergrundnummer eines Stufenblocks. Wir wollen zuerst
das Boss-Sprite wählen, dann seine X-Variable und dazu addieren wir 32 für Y, wir können einfach die Y-Variable des
Bosses verwenden Lassen Sie uns also ein Duplikat
des Blocks X of Boss einfügen
und es in Y ändern. Ordnung, und für den Moment erstellen
wir den Klon, indem wir zu
Control gehen und
den Block
Create Clone of Myself einfügen Dann wollen wir zurück zum
Blinkkostüm wechseln ,
indem wir zu Looks gehen, einen
Switch-Kostümblock einfügen und zu Blink wechseln Wenn wir das Spiel jetzt starten und der Boss sich nach unten bewegt, werden
wir anfangen, einige Raketen zu sehen Die Startpositionen
der Raketen sind korrekt, wenn der Boss nach
links schaut Aber wenn er
nach rechts schaut, erscheinen
sie
vor dem Boss Um dieses Problem zu beheben, wollen
wir bei
der Einstellung der X-Variablen für
einen Raketenklon, wenn der Boss
nach rechts schaut, wenn der Boss
nach rechts schaut, 32
von seiner Exposition abziehen Gehen wir dazu zu Operatoren und
ersetzen
die Zahl 32 durch einen
Multiplikationsblock Dann platzieren wir einen
Divisionsblock auf der rechten Seite. Geben
wir für die erste Eingabe 32 ein. Für die zweite duplizieren
wir
entweder das X oder das Y des Boss-Blocks und ermitteln
die Richtung. Dann teilen wir
das durch minus 90. Wenn der Boss nun nach links
schaut, erhalten
wir positive 32, und wenn er nach rechts schaut, bekommen
wir minus 32, und das sollte die
Positionierung der Klone fixieren Okay, als Nächstes
lassen wir die Raketen nach ihrer Erstellung nach oben fliegen Dazu müssen wir die Geschwindigkeitsvariable Y
initialisieren. Gehen wir also zu Variablen, fügen
vor dem Crack-Klon
meines Blocks einen Satz zum Blockieren vor dem Crack-Klon
meines Blocks einen Satz zum Blockieren und setzen wir Geschwindigkeit Y auf sechs Irgendwann werden wir auch eine Geschwindigkeits-X-Variable
benötigen, und wir werden keine Zustandsvariable benötigen Wenn wir sie also noch haben, können
wir ihren
Namen in SpeedX ändern Und lassen Sie uns Geschwindigkeit x im
Create Clone-Skript
auf Null initialisieren Create Clone-Skript
auf Null Okay, jetzt kommen wir zum leeren Handle-Action-Skript Vorerst müssen wir nur die Position
der Klone anhand
der Geschwindigkeitsvariablen ändern Position
der Klone anhand
der Geschwindigkeitsvariablen Lassen Sie uns also die
Änderung nach Blöcken vornehmen. Und ändern wir X durch
Geschwindigkeit X und Y durch Geschwindigkeit Y. Und jetzt
sollte die Rakete die Bühne hinauffliegen , während der
Boss sie abschießt Die Raketen sind allerdings nicht
sehr effektiv, sie
fliegen einfach direkt nach oben In der nächsten Lektion werden
wir sie also dazu bringen, den Spieler zu suchen
115. Den Spieler suchen: Damit ein Raketenklon den Spieler
sucht, müssen
wir ihn kontinuierlich
drehen, sodass er auf den Spieler
zeigt, und ihn in diese Richtung
bewegen. Wir machen das im
Handle-Action-Skript bevor wir die
X- und Y-Variablen ändern, und zwar innerhalb
eines benutzerdefinierten Blocks. Gehen wir zuerst zu Meine Blöcke
und erstellen einen neuen. Nennen wir es SEC-Player. Klicken Sie auf Okay und platzieren Sie einen SEC-Player-Block ganz oben im
Handle-Action-Skript. Im definierten Sk-Spieler wir
den Klon als Erstes richten wir
den Klon als Erstes auf
das Spieler-Sprite Dazu können wir
einfach in Bewegung gehen, einen Punkt
in Richtung Block
und dann auf den Spieler zeigen Als Nächstes stellen wir
Geschwindigkeit X und Geschwindigkeit Y Damit sich der Klon in die
richtige Richtung bewegt, müssen
wir Trigonometrie verwenden Gehen wir also zuerst zu Variablen und fügen zwei Blöcke hinzu Und stellen Sie Geschwindigkeit X und Geschwindigkeit Y ein. Für Geschwindigkeit X benötigen wir den Sinus der Richtung der
Klone und für SpeedY den
Cos-Sinus der Gehen wir also zu Operatoren, fügen jedem
der beiden Blöcke einen Block Bauchmuskel hinzu
und verwenden wir die SN-Funktion für
Geschwindigkeit X und die Ursachenfunktion für Geschwindigkeit Y. Dann gehen wir zu Bewegung und fügen jedem Block einen
Richtungsblock Wenn wir das Spiel jetzt ausführen, werden die Raketen
kontinuierlich auf den Spieler zeigen und
sich auf ihn zubewegen Das ist aber definitiv ein
bisschen zu langsam. Um es zu beschleunigen, können wir
die Sinus- und Kosinus-Ergebnisse
mit einem anderen Wert multiplizieren die Sinus- und Kosinus-Ergebnisse
mit einem anderen Wert Gehen
wir dazu zu Operatoren und bringen zwei
Multiplikationsblöcke in einen leeren Raum Nun können
wir für Geschwindigkeit X Richtungssünde mal vier machen, und für Geschwindigkeit Y machen
wir
Richtungsursache mal vier Die Raketen werden
sich jetzt viermal schneller bewegen. Allerdings sieht es ein bisschen
komisch aus, wenn die Raketen sofort nach dem Spieler suchen sobald sie erstellt wurden.
Es wäre besser, wenn wir sie zuerst ein bisschen
nach oben bewegen
lassen Dazu müssen wir
verfolgen, ob gerade ein Klon nach dem Spieler sucht
oder nicht , und wir benötigen
auch einen Timer Gehen wir also zu Variablen und
erstellen ein paar neue. Nennen wir den ersten suchend und machen ihn nur
für diesen Sprite Für den zweiten
nennen wir ihn
Timer und machen ihn auch nur
für diesen Bright Und lassen Sie uns beide Variablen verstecken. Um die beiden Variablen zu initialisieren, kommen
wir zum
Rake-Clone-Skript vor dem Rake-Block Clone
of Myself Lassen Sie uns vor dem Rake-Block Clone
of Myself zwei
weitere Set-Zwei-Blöcke Wir wollen, dass der Klon zunächst
nicht nach dem Spieler sucht, also setzen wir die Suche auf Null Als Nächstes setzen
wir den Timer auf 20. So lange lassen
wir den Klon warten, bis er anfängt, den Spieler zu
suchen, und es wird etwas
mehr als eine halbe Sekunde dauern. Kommen wir nun zum
Handle-Action-Skript. Hier wollen wir
den SEC-Playerblock nur ausführen , wenn die
Suchvariable gleich eins ist Andernfalls müssen wir uns
um den Timer kümmern. Gehen wir also zuerst zu Control, schnappen uns einen ITN-Outs-Block und wickeln den I-Teil um
den Sk-Spielerblock Wir wollen trotzdem die Position der
Klone ändern. Lassen Sie uns also die beiden
Change-By-Blöcke wieder an das
Ende der Skripte verschieben Change-By-Blöcke wieder an das
Ende der Skripte Für den Zustand
des ITN-Out-Blocks gehen
wir zu den Operatoren und
fügen einen Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob Suchen gleich Wenn ja, werden wir einfach
den SEC-Spielerblock ausführen. Andernfalls überprüfen wir, ob
der Timer abgelaufen ist,
ändern die Suchfunktion
auf einen Wert, falls dies der Fall ist, und reduzieren den
Timer, falls dies nicht der Fall ist. Gehen wir also zu Control, schnappen uns einen weiteren
Block und platzieren ihn innerhalb
des Outs-Teils dieses Blocks. Für die Bedingung
können wir ein Duplikat von
„Suchen entspricht einem Block“ verwenden Suchen entspricht einem Block und prüfen lassen, ob der
Timer gleich Null ist Falls ja, gehen wir zu Variablen, ein Set
zum Blockieren hinzu
und setzen Seeking auf eins Andernfalls lassen Sie uns eine
Änderung pro
Block vornehmen und den Timer
um einen negativen Wert ändern. Wenn wir das Spiel jetzt ausführen, fliegen
die Raketen
etwa eine halbe Sekunde lang direkt nach oben , bevor
sie sich umdrehen, um den Spieler zu suchen Die Art und Weise, wie sie sich drehen,
ist allerdings etwas abrupt und
sieht nicht sehr Um das zu verbessern, können wir die Klone in
kleineren Schritten rotieren lassen Dazu müssen wir eine Rotationsgeschwindigkeit
für die Klone
festlegen Außerdem wollen
wir im Sk-Player-Skript Richtung
des
Klons speichern,
bevor wir die Richtung des
Klons so ändern , dass er auf den Spieler die aktuelle Richtung
des
Klons speichern,
bevor wir die Richtung des
Klons so ändern, dass er auf den Spieler zeigt. Wir können dann überprüfen, ob
der Unterschied zwischen der neuen Richtung und der vorherigen Richtung
größer als die Rotationsgeschwindigkeit ist , und wenn ja, drehen wir nur um die Rotationsgeschwindigkeit, damit die Rakete keine so
große Richtungsänderung erfährt Okay, also um zu beginnen, müssen
wir ein
paar neue Variablen erstellen. Nennen wir die
erste Rotationsgeschwindigkeit und machen sie nur für
dieses Sprite Dann lassen Sie uns eine weitere erstellen, sie vorheriges DRE
nennen Machen Sie es auch
nur für dieses Sprite und verstecken Sie beide Variablen Der Wert für die Rotationsgeschwindigkeit
ändert sich während des Spiels nicht, also setzen wir ihn im Skript mit
grüner Flagge Dazu fügen wir dem Skript einen Satz von
zwei Blöcken hinzu
und setzen die Rotationsgeschwindigkeit für fünf Grad
auf fünf. Kommen wir nun zum
Sk-Player-Skript. Vor dem Punkt
in Richtung Spielerblock wollen
wir den vorherigen DR
auf die
aktuelle Richtung des Klons setzen . Fügen wir also am Anfang des Skripts
einen Block mit zwei Sätzen hinzu. Dann lassen Sie uns zur Bewegung übergehen und den vorherigen Teil in
die Richtung lenken. Und als Nächstes wollen
wir nach dem Punkt
in Richtung Spielerblock überprüfen, ob
der Unterschied zwischen der neuen Richtung des Klons und seiner vorherigen Richtung
größer ist als die Rotationsgeschwindigkeit. Gehen wir also zuerst zur Steuerung, ein I
und dann den Block und verschieben die Blöcke für die eingestellte Geschwindigkeit X und die eingestellte Geschwindigkeit Y wieder an
das Ende des Skripts. Gehen wir für die Bedingung zu Operatoren und fügen
einen Block größer als ein. Wir wollen den absoluten
Wert der Differenz ermitteln. Lassen Sie uns also zuerst einen
Abso-Block auf die linke Seite legen. Fügen Sie dann einen
Subtraktionsblock zu den Bauchmuskeln des Blocks hinzu. Gehen wir nun zur Bewegung über und platzieren einen Richtungsblock auf einer Seite
des Subtraktionsblocks Gehen wir dann zu Variablen
und überprüfen wir, ob der
absolute Wert der Richtung minus dem vorherigen Dr
größer als die Drehgeschwindigkeit ist Wenn ja, legen wir die Richtung des
Klons fest, indem Drehgeschwindigkeit
von der vorherigen Richtung
subtrahieren Dadurch dreht sich der Klon ein wenig gegen den Uhrzeigersinn Gehen wir zunächst zur Bewegung über
und fügen einen Punkt-
und Richtungsblock Gehen wir für die Eingabe zu Operatoren und fügen
einen Subtraktionsblock hinzu Gehen wir dann zu den
Variablen und machen die
vorherige Dr-Minus-Rotationsgeschwindigkeit vorherige Dr-Minus-Rotationsgeschwindigkeit Wenn wir das Spiel jetzt ausführen, drehen sich
die Raketen gleichmäßiger in
Richtung des Spielers In einigen Fällen funktioniert das gut, aber wenn wir nach rechts gehen, weil wir
die derzeit nur gegen
den
Uhrzeigersinn drehen lassen Raketen
derzeit nur gegen
den
Uhrzeigersinn drehen lassen, müssen
sie sich
fast in einem vollen Kreis drehen , bevor
sie uns verfolgen können Um das zu verbessern, sollten wir den Raketen die
Wahl
lassen, welche Drehrichtung effizienter
wäre Zu diesem Zweck können wir, nachdem
wir überprüft haben,
ob der Unterschied zwischen den Richtungen
größer als die Drehzahl ist , prüfen, ob der Unterschied größer als 180
ist In diesem Fall sollte sich die Rakete gegen den Uhrzeigersinn
drehen. Andernfalls sollte es sich im Uhrzeigersinn
drehen. Gehen wir also zuerst zu Control, nehmen einen
Wenn-Dann-Out-Block und wickeln den I-Teil um den großen Punkt
und den Richtungsblock. Für den Outs-Teil können
wir ein Duplikat des Punkt
- und Richtungsblocks einfügen. Aber um den
Klon im Uhrzeigersinn zu drehen, anstatt die vorherige
DR minus Drehgeschwindigkeit zu machen, wollen
wir zu den Operatoren gehen
, einen zusätzlichen Block hinzufügen und die vorherige DR
plus Drehgeschwindigkeit durchführen Nun zur Bedingung Lassen Sie uns zunächst
einen Block mit mehr als eingeben Auf der linken Seite wollen wir
die Differenz zwischen
Richtung und vorherigem DRR ermitteln, aber nicht deren absoluten
Wert Verwenden wir also ein Duplikat von
nur der Richtung minus dem
vorherigen dR-Block Und lassen Sie uns überprüfen, ob
es größer als 180 ist. Wenn wir das
jetzt ausprobieren, wird es nicht wirklich funktionieren. Dies liegt daran, dass die
Richtungswerte zwischen 0 und 359 liegen müssen. Aber wie wir bereits wissen, verwendet
Scratch negative Werte wenn ein Sprite nach links zeigt Damit es funktioniert, müssen
wir sicherstellen, dass
der Unterschied zwischen
den Richtungen uns immer einen Wert von 0-359
gibt Dazu müssen wir nur den Unterschied mit 360 modifizieren Das funktioniert, weil das
Ergebnis der Verwendung
eines Moduls mit einer negativen Zahl auf der linken Seite die
Summe der beiden Zahlen ist. Okay, also lass uns einen Mod-Block einfügen und
die Richtung minus den
vorherigen dritten Block
auf der linken Seite setzen die Richtung minus den . Lass uns 360 für
die rechte Seite verwenden. Dann füge das alles in
den Größer-als-Block ein. Und jetzt
werden sich die Raketen korrekt drehen. Alles klar, jetzt
müssen wir nur noch
dafür sorgen, dass die Raketen
den Spieler treffen und explodieren Daran werden wir in der nächsten
Lektion arbeiten
116. Schlagen auf den Spieler: Wenn eine Rakete den Spieler trifft, wollen
wir, dass die Rakete
explodiert und verschwindet Um das zu tun, kommen wir
zum Skript „Scheck berührt
Spieler“ Im Block Ich berühre Spieler, nachdem wir Bounce DR gesetzt
haben, lassen wir die Rakete
explodieren und löschen den Klon, und zwar
innerhalb eines benutzerdefinierten Gehen wir also zu Mblock
und erstellen einen neuen. Nennen wir es Explode. Klicken Sie auf Okay und platzieren Sie einen Explode-Block am unteren Rand
des Blocks, der den Spieler
berührt Im Explode-Skript definieren wir irgendwann
eine Explosionsanimation Aber vorerst löschen wir
einfach den Klon. Das bedeutet, dass wir den Artikel auch von
der Z-Bestellliste
entfernen müssen . Gehen wir also zunächst zu den Variablen, fügen ein Löschen eines Blocks hinzu und verwenden eine Block-Artikelnummer
als Eingabe. Lassen Sie uns nun die Artikelnummer der
Komponente Z in
Z-Bestellungen von Z-Bestellungen löschen . Dann gehen wir zu Control und fügen den Block
Diesen Klon löschen ein. Wenn wir das Spiel jetzt starten, verschwinden
die Raketen sobald sie den Spieler
berühren Im Moment ist
es
für den Spieler jedoch so gut wie unmöglich,
den Raketen zu entkommen , da sie einfach lange kommen, bis
sie den Spieler treffen Was wir
stattdessen tun können, ist, wenn sich eine Rakete in eine bestimmte
Entfernung vom Spieler bewegt, wir können einen
Selbstdetonations-Timer einstellen Sobald der Timer abgelaufen ist, explodiert
die Rakete automatisch Dazu benötigen wir eine
Variable, mit der wir verfolgen können, ob ein Raketenklon kurz vor der Explosion
steht oder nicht Explosion
steht oder Gehen wir also zu Variablen
und erstellen eine. Wir können es explosionsbereit nennen. Machen Sie es
nur für dieses Sprite und verstecken Sie die Variable. Ein Klon sollte nicht bereit sein , zu explodieren, wenn er zum
ersten Mal erstellt wird Um die Variable zu initialisieren, kommen
wir also zum
Create Clone Script Fügen wir dem Skript ein weiteres
Set zum Blockieren hinzu und setzen wir es bereit
, auf Null zu explodieren Kommen wir nun zum
Handle-Action-Skript. Wenn der Klon den Spieler
sucht, wollen
wir überprüfen, ob sich der Klon
in einer bestimmten Entfernung
vom Spieler befindet . Und wenn ja, stellen wir die
Explosionsbereitschaft auf eins ein und stellen auch einen Timer
für die Selbstdetonation Gehen wir also zuerst zur
Steuerung und fügen direkt nach dem
Sk-Plattenblock einen Wenn-und-Block Nun zur Bedingung:
Wir wollen den Selbstdetonations-Timer nur einstellen , wenn
der Klon noch nicht
bereit Gehen wir also zu den Operatoren und bringen
zuerst einen UND-Block rein. Lassen Sie uns nun auf der einen Seite einen Gleichheitsblock und auf
der anderen Seite einen
Block mit dem Wert „Weniger als“ platzieren und auf
der anderen Seite einen
Block mit dem Wert „Weniger als Als Nächstes gehen wir zu Variablen
und prüfen zunächst, ob
explosionsbereit gleich Null ist Für die linke Seite des Blocks,
der kleiner als ist, wollen
wir die Entfernung
zwischen dem Klon und
dem Spieler-Sprite Dazu können wir zur
Erkennung übergehen und eine
Entfernung zum Blockieren verwenden Und lassen Sie uns überprüfen, ob
die Entfernung zum Spieler weniger als 120 beträgt. Wenn das alles der Fall ist, gehen
wir zu Variablen bringen es in Blöcke. Und stellen wir die Explosionsbereitschaft
auf eins und den Timer auf 30 ein, wodurch die Rakete nach etwa einer
Sekunde explodiert Okay, jetzt wollen
wir am Anfang
des Handle-Action-Skripts überprüfen, ob der
Klon bereit ist, zu Gehen wir also zuerst zu Control und bringen einen INN-Block
in einen leeren Bereich Für die Bedingung können wir hier
ein Duplikat von „Suchen ist
gleich einem Block“ verwenden hier
ein Duplikat von „Suchen ist
gleich einem Block und prüfen, ob „Bereit zur
Explosion“ gleich Falls ja, müssen wir uns um den Timer
kümmern,
also fügen wir
einen Wenn-Dann-S-Block hinzu Für die Bedingung können wir ein weiteres Duplikat
eines Equals-Blocks
verwenden und prüfen,
ob der Timer gleich Null ist Wenn ja, wollen wir, dass die
Rakete explodiert, also gehen wir zu MyBlocks und
bringen einen Explosionsblock rein Wenn der Timer noch nicht abgelaufen ist, wollen
wir ihn reduzieren Gehen wir also zu Variablen, bringen eine Änderung pro
Block ein und ändern wir den Timer
um einen negativen Wert. Wenn wir
das alles jetzt an den Anfang des
Handle-Action-Skripts setzen und das Spiel starten, explodiert eine Rakete, sobald
sie sich 120 Schritte von uns
entfernt hat, automatisch
nach etwa einer Sekunde Im Moment kann der
Spieler jedoch nicht
wissen, dass eine Rakete im Begriff ist, sich selbst
zu detonieren wissen, dass eine Rakete im Begriff ist, sich selbst
zu detonieren Um den Spieler darüber zu informieren, können
wir die
Rakete blinken lassen,
sobald ihr
Selbstdetonations-Timer startet sobald ihr
Selbstdetonations-Timer Wir haben dasselbe getan, um
anzuzeigen, wenn
der Spieler nach einer Verletzung
unbesiegbar ist unbesiegbar Und wenn wir zum Code
für das Spieler-Sprite gehen, machen
wir das mit dem
Flash-IF-Skript Für den Zustand des
Flash-IF-Blocks und des Update-Skripts verwenden
wir einen Mod-Block
zwischen einer Timer-Variablen,
in diesem Fall Hurt, und
einer Zahl, die angibt,
wie oft geflasht werden soll Okay, also zuerst können wir
das Flash-IF-Skript
in das Rocket-Sprite kopieren das Flash-IF-Skript
in das Rocket-Sprite dann zurück zum
Rocket-Sprite gehen Damit der Klon blinkt,
wenn er bereit ist, zu explodieren, kehren
wir zum
Handle-Action-Skript zurück, gehen zu M-Blöcken und
fügen einen Flash hinzu, falls Block oben im Feld Ich bin bereit zur Explosion Gehen wir für die Bedingung zu Operatoren und fügen zuerst einen Gleichheitsblock
ein Dann lege einen Mod-Block
auf die linke Seite. Gehen wir nun zu Variablen
und prüfen wir, ob
Timer-Mod zwei gleich Null ist Und jetzt, wenn sich eine Rakete uns
nähert, fängt
sie an
weiß zu blinken, bevor sie Fantastisch. Alles klar, alles was wir jetzt tun müssen, ist
die Explosionen zu erzeugen Wir machen das, indem wir zuerst eine Nachricht
im Explode-Skript senden, die dann vom
Explosions-SP hier empfangen wird Okay, gehen wir also zu Events, fügen
oben im Explode-Skript einen Broadcast-Block und lassen Sie uns
eine neue Nachricht mit dem Namen
Create Explosion senden eine neue Nachricht mit dem Namen
Create Jetzt müssen wir
dem Explosions-Sprite auch sagen , wo es eine Explosion
auslösen soll Wenn der Klon
selbst detoniert ist, verwenden
wir die
Weltposition des Klons
als Explosionsposition ,
und wenn der Klon den Spieler getroffen
hat, verwenden
wir die Weltposition des Spielers und speichern die Position in
einer Variablenliste, auf
die
das Explosions-Sprite Gehen wir zu Variablen
und erstellen eine neue Liste. Wir können es Explosionen nennen und wir wollen
es für alle Sprites machen Als Nächstes wollen
wir im Explode-Skript die X- und Y-Positionen für
die Explosion als Eingaben übergeben die X- und Y-Positionen für
die Explosion Klicken wir also mit der rechten Maustaste auf den
definierten Block und wählen Bearbeiten. Lassen Sie uns zunächst
die Explosionsbezeichnung so ändern, dass sie bei einem X-Dolon explodiert Dann fügen wir eine Eingabe von X hinzu. Fügen wir
nun einen weiteren
Doppelpunkt vom Typ Y hinzu und fügen eine Eingabe von
Y hinzu. Klicken Sie dann auf Okay. Als Nächstes müssen wir die X
- und Y-Eingaben zur
Explosionsliste hinzufügen - und Y-Eingaben zur
Explosionsliste Gehen wir also zu Variablen. Setze ein paar und füge zwei Blöcke
an den Anfang des Skripts. Und lassen Sie uns sowohl die X
- als auch die Y-Eingabe zur
Explosionsliste hinzufügen - als auch die Y-Eingabe zur
Explosionsliste Kommen wir nun zum
Handle-Action-Skript. Wir führen
hier den Explode-Block aus, wenn der Klon
selbst detoniert, also wollen wir die X
- und Y-Variablen des Klons übergeben Als Nächstes, wenn wir den Spieler berühren, lassen
wir den Explode-Block laufen ,
wenn der Klon den Spieler trifft Deshalb wollen wir
die X- und Y-Variablen des
Spieler-Sprites als Eingaben verwenden die X- und Y-Variablen des
Spieler-Sprites Gehen wir dazu zur Sensorik und fügen zwei Hintergrundblöcke
mit einer
Anzahl von Stufenblöcken Dann nehmen wir X von
Spieler für den
ersten und Y von Spieler
für den zweiten. Okay, wenn wir das Spiel jetzt starten, wenn uns eine Rakete trifft, wird unsere Position
zur Liste hinzugefügt. Und wenn eine Rakete
selbst detoniert, wird die
Position der Rakete zur Liste hinzugefügt Ordnung, jetzt müssen wir zum Explosions-Sprite gehen
, die Meldung „
Explosion erstellen“
erhalten
und die Explosionsanimation erstellen Und das werden wir
in der nächsten Lektion tun.
117. Raketenexplosionen hinzufügen: Wenn wir uns
die Kostüme für die
Explosions-Sprites ansehen , gibt
es eine einzige Animation mit acht
Frames Und um mit der Programmierung des Sprites zu beginnen, können
wir zuerst zum Rocket-Sprite-Code zurückkehren und einige Skripte
kopieren. für das
Create Clone-Skript zunächst Lassen Sie uns für das
Create Clone-Skript zunächst nur
den definierten Block kopieren Und wenn Sie wie ich Probleme beim Kopieren des
Skripts haben, können
wir zuerst auf
das Explosions-Sprite klicken und es so ziehen das Explosions-Sprite klicken und es so , dass es sich weiter oben
im Sprite-Bereich befindet.
Dann sollten wir in der Lage sein, das Skript
zu kopieren wir sicher, dass wir
alle Blöcke wieder zum Create
Clone-Skript hinzufügen alle Blöcke wieder zum Create
Clone-Skript Dann können wir auch die Sortierebenen kopieren ,
animieren und
die Position anpassen Wenn ich als Klon anfange und Update drei erhalte,
wenn ich Update zwei erhalte, wollen
wir, dass alles außer
den Handle-Aktionen blockiert Lassen Sie uns ihn also zuerst herausziehen, das Skript
kopieren und den Block mit den
Handle-Aktionen wieder
direkt über dem
Animationsblock
einfügen direkt über dem
Animationsblock Ebenso
wollen wir nicht, dass der Scheck im Update One-Skript
den Spielerblock
berührt Lassen Sie uns es also entfernen, bevor wir das Skript
kopieren. Wir können auch kopieren, wenn
ich Shoot Rocket erhalte, obwohl wir es
irgendwann ändern , wenn ich
Create Explosion erhalte. Lassen Sie uns nun
das Setup-Skript kopieren. Und für das Skript mit grüner Flagge kopieren
wir alles außer dem eingestellten Drehzahlblock. Okay, jetzt gehen wir
zur Explosion Sprite. Im Animationsskript für
das Explosions-Sprite wollen
wir, wenn wir das Kostüm wechseln, wenn wir das Kostüm wechseln,
das Wort Explosion
mit einem Anime-Frame verbinden mit einem Und lassen Sie uns das Anime-Bild eins nach dem
anderen ändern. Jetzt wollen
wir die
Explosionsanimation nur einmal ausführen, und wenn sie fertig ist, löschen
wir den Klon Also zuerst können wir
den eingestellten Anime-Frame-Block loswerden. Dann gehen wir zur Steuerung
und bringen einen ITN-Block ein. Die Frames für die
Explosionsanimation sind 0-7. Wir wissen also, dass die Animation
beendet ist , wenn der Wert von
Nom Frame acht beträgt also für die Bedingung Gehen
wir also für die Bedingung zu Operatoren und fügen
einen Gleichheitsblock ein Gehen wir dann zu Variablen und prüfen, ob Nom Frame gleich Acht ist. Also, wir wollen den Artikel aus der
Z-Bestellliste löschen und den Klon löschen Lassen Sie uns also den
Block löschen und die Artikelnummer
des Blocks als Eingabe verwenden. Nun, für die Z-Reihenfolge wollen
wir eigentlich Fronteffekt
Z
verwenden , sodass die Explosion direkt
vor dem Spieler
erscheint. Und stellen wir sicher, dass Sie für beide Listeneingaben die
Z-Reihenfolge wählen . Gehen wir dann zu Control und
löschen diesen Klonblock. Nächstes wollen
wir, wenn ich als Klon anfange, nicht Komponente Z
im Block „In Ebenen sortieren“ verwenden, sondern nicht Komponente Z
im Block „In Ebenen sortieren“ verwenden, sondern Fronteffekt Z verwenden. Als Nächstes, für das Skript „
Rakete schießen“, ändern
wir es in „Wenn ich Create Explosion“
erhalte. Im Setup-Skript möchten
wir sicherstellen, dass
zuerst die Explosionsliste geleert Gehen wir dazu
zu Variablen und
fügen
am Ende des Skripts den Block Alle
Explosionen löschen hinzu den Block Alle
Explosionen Okay, um nun tatsächlich eine Explosion zu
erzeugen, kommen
wir zum
Create Clone Script Zuerst wollen wir zum Startkostüm wechseln
. Gehen wir also zu Looks, bringen einen Switch-Kostümblock rein und wechseln wir zu Explosion Zero. Als Nächstes legen wir die X- und
Y-Position der Klone anhand
der ersten beiden Elemente in der Explosionsliste Gehen wir dazu zunächst zu Variablen und fügen
zwei Blöcke hinzu Dann fügen wir jedem Block einen
Explosionsblock hinzu. Setzen wir nun X auf Punkt
eins und Y auf Punkt zwei. Wir können dann
die beiden Elemente löschen,
indem wir einen
der Explosionsblöcke hinzufügen, um ihn zu löschen Okay, lassen Sie uns jetzt
den Klon erstellen, indem wir zu
Control gehen und einen
Crake-Klon des Myself-Blocks Und zum Schluss gehen wir zu Looks, bringen einen Switch-Kostümblock hinein und wechseln zum leeren Kostüm Wenn wir das Spiel jetzt starten, jeder Explosion einer Rakete erzeugt
es bei
jeder Explosion einer Rakete eine
Explosionsanimation Fantastisch. Gut, ich denke wir können jetzt zu Variablen gehen und die Explosionsliste
verstecken Und in der nächsten Lektion beenden
wir den
Bosskampf, indem wir ihn so gestalten, dass das Springen auf den Boss
seine Gesundheit reduziert , anstatt ihn
automatisch zu töten
118. Den Chef verletzen: im Code für das Boss-Sprite Suchen
wir im Code für das Boss-Sprite nach dem Skript „Scheck
berührt Spieler Es gibt ein paar Anpassungen, die
wir hier vornehmen müssen. Erstens, wenn der Boss stirbt, springt
er nicht sehr hoch Um dies im Y-Block mit der
eingestellten Geschwindigkeit zu korrigieren, können
wir einen höheren
Wert wie 20 verwenden Außerdem müssen wir nicht sehr
hoch auf den Boss springen ,
um ihn zu treffen. Das liegt daran, dass
die Y-Position des Spielers derzeit nur 15 Schritte
über der Y-Position des Chefs liegen muss Das hat beim
Be Sprite gut funktioniert, aber der Boss ist um
einiges größer Also statt 15 versuchen wir es mit 60. Jetzt müssen wir in die
Nähe seines Kopfes springen ,
um ihn zu treffen. nicht hoch genug springt Spieler nicht hoch genug springt,
wird er stattdessen
verletzt. Ordnung, wenn diese beiden
Dinge erledigt sind, In Ordnung, wenn diese beiden
Dinge erledigt sind, wollen
wir es so machen, dass
wir, um den Boss zu besiegen, weiter auf
ihn springen müssen , bis ihm die Gesundheit ausgeht. Um das zu tun, wollen
wir, bevor wir
den Zustand des Chefs auf tot setzen, seine Gesundheit reduzieren. Wir werden dann überprüfen, ob
seine Gesundheit auf Null oder darunter gefallen ist, und wenn ja, werden wir
ihn in den Zustand tot versetzen. Andernfalls versetzen wir ihn für einen
kurzen Zeitraum in den verletzten Zustand. Okay,
lassen Sie uns zunächst bei Variablen eine blockweise Änderung über dem eingestellten Zustand
auf „Totblock und dann die
Boss-Gesundheitsvariable ändern. Normalerweise wollen wir es nur um minus eins
ändern, aber zu Testzwecken nehmen wir mal minus fünf. Als Nächstes gehen wir zu Control, nehmen einen
Wenn-Dann-Else-Block und wickeln den I-Teil um die
anderen vier Blöcke des Satzes zwei. Tatsächlich
wollen wir jedoch Bouncer auf
Null setzen, unabhängig davon, ob
der Boss stirbt oder verletzt wird Lassen Sie uns den eingestellten Türsteherblock
bis in die Nähe des eingestellten
Boss-Gesundheitsblocks bewegen bis in die Nähe des eingestellten
Boss-Gesundheitsblocks Im Teil I wollen
wir verhindern, dass sich der Boss
horizontal bewegt Gehen wir zu Variablen, fügen
hier einen weiteren Block mit zwei Sätzen hinzu und setzen die Geschwindigkeit x auf Null. Okay, jetzt zum Zustand.
Wir wollen überprüfen, ob der
Chef keine Gesundheit mehr hat. Das bedeutet, dass die Gesundheitsvariable des
Chefs entweder Null oder unter Null
ist. Gehen wir also zu den Operatoren und
fügen zuerst einen OR-Block ein. Dann fügen wir auf der einen Seite einen
Gleichheitsblock und auf der anderen Seite einen
Block mit weniger als Gehen wir nun zu Variablen
und überprüfen wir, ob die Gesundheit des
Chefs gleich
Null ist oder die Gesundheit des Chefs kleiner als Null
ist Und das ist alles, was wir für den Teil I tun müssen
. Wenn dem Chef nicht die Gesundheit
ausgeht, wollen
wir ihn
in den verletzten Zustand versetzen. Fügen wir also dem Teil s einen Satz zum Blockieren hinzu und setzen
den
Status auf Verletzt. Wir wollen auch den Timer einstellen. Lassen Sie uns also ein weiteres Set zum Blockieren einsetzen und den Timer auf 30 setzen. Eine andere Sache, die wir tun
wollen, ist
sicherzustellen , dass der Boss aufhört zu schießen,
wenn er gerade schießt. Lassen Sie uns also einen weiteren Satz zum Blockieren hinzufügen und das
Schießen auf Null setzen. Schließlich wollen wir, dass sich der Boss in eine
zufällige Richtung bewegt, und wir wollen, dass er
sich schneller als normal bewegt. Dazu können wir
zunächst einen Satz zum Blockieren
hinzufügen und die
Fluggeschwindigkeit variabel einstellen. Anstatt hier jedoch eine Zahl
einzugeben, erstellen
wir ein
paar neue Variablen für die Standardgeschwindigkeit
und die Hurt-Geschwindigkeit. Für die Standardgeschwindigkeit können
wir sie Reisegeschwindigkeit nennen und sie nur für
dieses Sprite Lassen Sie uns nun eine weitere erstellen, nennen wir sie RT Speed Auch nur für dieses Sprite
und verstecke beide Variablen. Die Werte dieser Variablen werden sich während des Spiels nicht ändern, also setzen wir sie in
das grüne Flaggen-Skript Lassen Sie uns zunächst zwei
Blöcke zum Skript hinzufügen. Im Setup-Skript initialisieren
wir die
Fluggeschwindigkeit auf vier also im Green Flag-Skript Lassen Sie uns also im Green Flag-Skript die Besatzungsgeschwindigkeit auf vier Dann setzen wir die
Hertz-Geschwindigkeit auf zehn. Jetzt können
wir im Setup-Skript die Fluggeschwindigkeit
auf Reisegeschwindigkeit setzen Dann kommen wir zurück zum Skript „ Scheck berühren Spieler“
und stellen
die Fluggeschwindigkeit auf Verletzungsgeschwindigkeit ein. Dann können wir zu Mbloxs gehen und einen Block
mit Bewegung in
zufälliger Richtung einfügen, der den
neuen Wert für die Fluggeschwindigkeit verwendet Ordnung, jetzt
müssen wir zum
Handle-Action-Skript übergehen Handle-Action-Skript übergehen Innerhalb des I-Timers
entspricht der Null-Block. Wir wollen zuerst überprüfen, ob sich der
Chef im Herzzustand befindet. Wenn ja, bedeutet das, dass der
T-Timer abgelaufen ist, also wollen wir den Boss
wieder in den Flugzustand versetzen. Gehen wir also zuerst zur Steuerung und bringen einen ITN-Block
in einen leeren Raum Gehen wir für die Bedingung zu den Operatoren und fügen einen
Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob der Status gleich RT ist. Wenn ja, lassen Sie uns ein Set zum
Blockieren hinzufügen und State auf Fly setzen Wir wollen auch die
Fluggeschwindigkeit wieder auf die Standardwerte setzen. Lassen Sie uns also ein weiteres Set zum
Blockieren einsetzen und die
Fluggeschwindigkeit auf Reisegeschwindigkeit einstellen. Jetzt nehmen wir das alles
und setzen es ganz oben auf
den I-Timer gleich Null Block direkt darüber,
wenn Schießen gleich Okay, was
als Nächstes passieren wird, ist, dass Schießen nicht gleich eins und Geschwindigkeit x
nicht gleich Null ist, sodass
der Boss sofort zum Schießen bereit ist , wenn er
verletzt wurde Wir können das sehen, wenn wir das
Spiel starten und uns auf den Boss stürzen. Er verliert etwas Gesundheit, wird ein bisschen verrückt,
dann hört er auf und fängt an, Raketen zu
schießen Er fängt jedoch etwas
zu plötzlich an zu schießen , nachdem
er aufgehört Kommen wir also zur
Vorbereitung der Drehbücher. Und hier können
wir ein Set zum
Blockieren hinzufügen und den Timer auf 30 setzen. Jetzt wird er
nach dem Anhalten etwa eine Sekunde warten , bevor
er anfängt zu schießen. Ordnung, und um dem Spieler
deutlicher zu machen ,
dass der Boss verletzt ist, können
wir ihn
blinken lassen, während er verletzt ist , so wie wir
es mit den Spieler-Sprites tun Gehen
wir dazu zunächst zum Sprite-Code des Players und wir wollen das Flash-IF-Skript
in
die Boss-Sprites kopieren Flash-IF-Skript
in
die Gehen wir jetzt zurück zu
den Boss-Sprites. den Boss zum
Flashen zu bringen, während er verletzt ist, kommen
wir zurück
zum Handle-Action-Skript Am Ende des Skripts, bevor wir den Timer
auf minus eins ändern, überprüfen
wir, ob der Boss verletzt
ist, und wenn ja, lassen wir ihn blinken. Gehen wir also zuerst zur Steuerung und bringen einen IN-Block
in ein leeres Feld. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob state gleich hurt ist. Wenn ja, gehen wir zu den MI-Blöcken und fügen einen
Flash-IF-Block hinzu Gehen wir für die Eingabe zu Operatoren und fügen zuerst einen
Equals-Block und
dann einen Mod-Block ein Gehen wir nun zu Variablen
und überprüfen wir, ob
Timer-Mod Four gleich Null ist Wenn wir jetzt den Block I
dann um einen
Block direkt über
dem Change-Timer platzieren und das Spiel starten, blinkt
der Boss,
wenn er verletzt wird Hey Leute, nur eine kurze
Bearbeitung von Future Me. sollten wir dem Setup-Skript
auch
einen klaren Block
mit grafischen Effekten hinzufügen einen klaren Block
mit grafischen Effekten Fälle sollten wir dem Setup-Skript
auch
einen klaren Block
mit grafischen Effekten hinzufügen. Okay, wenn wir
den Boss besiegen , nachdem er ein oder zwei Raketen
abgeschossen hat, kann
der Spieler immer noch von den Raketen getroffen
werden und könnte möglicherweise sterben, bevor der Boss unter
das Level fällt Es wäre wahrscheinlich
besser, wenn wir alle verbleibenden Raketen explodieren lassen würden,
sobald der Gehen wir dazu zum
Rocket-Sprite-Code. Und lassen Sie uns das Skript „Wenn ich Update One
erhalte“ suchen. Und bevor wir überprüfen, ob der Klon den Spieler
berührt, überprüfen
wir, ob der Boss tot
ist,
und wenn ja, lassen wir
den Klon explodieren Gehen wir also zuerst zur Steuerung und bringen einen IN-Block in einen
leeren Bereich Für die Bedingung gehen
wir zunächst zu Operatoren und fügen einen Equals-Block ein Lassen Sie uns dann zur Erkennung übergehen und mit der
Hintergrundnummer eines Stufenblocks hinzufügen Wir wollen das Boss-Sprite holen und eine State-Variable wählen Und lassen Sie uns überprüfen, ob
es tot ist. Wenn ja, gehen wir zu den MI-Blöcken und bringen einen Explosionsblock
rein Für die Position
der Explosion verwenden
wir die Position der
Raketenklone. Gehen wir also zu Variablen und verwenden einen X-Block und einen
Y-Block als Eingaben Wenn wir das nun über den
Scheck legen, der den Spielerblock berührt, das Spiel
starten und
den Boss besiegen , nachdem er einige Raketen
abgeschossen hat, die Raketen sofort explodieren
die Raketen sofort, ohne den Spieler zu
verletzen Ordnung, und im Moment passiert
nichts weiter,
nachdem wir den passiert
nichts weiter,
nachdem In der nächsten Lektion werden
wir also einen
schönen, fröhlichen Bildschirm anzeigen
119. Das Spiel gewinnen: Am Anfang des
Handle-Action-Skripts im B-Sprite überprüfen
wir, ob der Boss tot
ist. Dann überprüfen wir, ob seine Y-Position unter minus 300
gefallen ist Ist dies der Fall, senden wir die Nachricht an
die Seite des Chefs. Wir haben uns eigentlich noch nicht mit dieser Nachricht
befasst. Gehen wir also in den
Hintergrund und tun das. Lassen Sie uns zunächst einen
leeren Raum finden. Dann geh zu den Events, bring einen Block mit, den ich erhalte,
und erhalte Boss-Seite Und hier werden wir irgendwann einen Victory-Sound
spielen. Aber vorerst
beenden wir die Spielschleife, machen eine kurze Pause und blenden
dann den Endbildschirm wieder aus. also die Spielschleife zu beenden, gehen
wir zunächst zu Control,
fügen einen Stopp-Block ein und beenden andere
Skripte und Sprites Als Nächstes fügen wir einen Block mit einer
Wartezeit von 1 Sekunde ein. Um den Bildschirm aufzurufen, senden
wir abschließend eine neue Nachricht, die vom Iscreen Sprite hier empfangen wird Gehen wir also zu den Ereignissen,
fügen einen Broadcast-Block hinzu und senden wir eine neue
Nachricht mit dem Namen Shown Screen. Okay, jetzt gehen wir zum
N-Screen-Sprite. Der Iscreen Sprite
hat nur ein einziges Kostüm, das die gesamte Bühne einnimmt Und das Sprite zu codieren
wird sehr einfach sein. Da das Spiel fertig ist, dem Öffnen des Bildschirms nicht
einmal wir uns nach dem Öffnen des Bildschirms nicht
einmal mit dem Sortieren von Ebenen
befassen Wir müssen nur
das Bildschirm-Sprite auf die
vordere Ebene bringen und es einblenden Aber zuerst, wenn das Spiel
startet, wollen wir den Bildschirm natürlich
nicht zeigen, also verstecken wir das Sprite, wenn auf
die grüne Flagge geklickt wird Um das zu tun, bringen wir einen Block ein, auf den die
grüne Flagge geklickt wurde. Gehen Sie dann zu Looks und fügen
Sie einen Block zum Ausblenden hinzu. Wir werden auch den
Ghost-Effekt des Sprites ändern. Um sicherzustellen, dass es zurückgesetzt wird, können
wir einen übersichtlichen Block mit
grafischen Effekten einfügen Und um sicherzustellen, dass das Sprite auf der Bühne zentriert
wird, können
wir zur Bewegung übergehen
und einen Block „Gehe zu XY“ einfügen, wobei sowohl
für X als auch für Y eine Null verwendet wird. Als Nächstes blenden wir das Sprite ein,
wenn es die Meldung „
Show auf dem Bildschirm“ empfängt Gehen wir also zu den Ereignissen, ein Block „Wenn ich erhalte“ hinzu und geben die
Anzeige auf dem Bildschirm Zuerst wollen wir das Sprite
zeigen. Also lass uns zu Looks gehen und einen Show-Block
reinbringen. Wir wollen
es auch auf die vordere Ebene bringen, also lassen Sie uns einen Block mit dem Titel „Gehe
zur vorderen Ebene“ einfügen. Als Nächstes machen wir das
Sprite zunächst vollständig transparent und blenden es
dann Lassen Sie uns also zunächst einen
eingestellten Effekt zum Blockieren hinzufügen und den
Ghost-Effekt auf 100 setzen Gehen wir nun zur Steuerung, fügen einen Wiederholungsblock hinzu
und wiederholen wir den Vorgang 20 Mal. Lassen Sie uns abschließend zu Looks zurückkehren, dem
Wiederholungsblock einen blockweisen Änderungseffekt
hinzufügen und den
Ghost-Effekt um minus fünf ändern. Und das ist alles. Wenn wir jetzt das Spiel starten und den Boss
besiegen, nach einer kurzen Pause der Bildschirm eingeblendet Hervorragend. In Ordnung. Und in der nächsten Lektion werden
wir
die langweilige Anzeige
der
Boss-Gesundheitsvariablen durch eine Gesundheitsleiste ersetzen die langweilige Anzeige
der
Boss-Gesundheitsvariablen ,
die die aktuelle Gesundheit des Chefs anzeigt
120. Die Boss Health Bar erstellen: Um die Gesundheitsleiste des Chefs zu erstellen, verwenden
wir hier natürlich die
Boss Health Bar Sprite Wenn wir uns die
Kostüme für die Sprites ansehen, haben
wir zunächst ein Symbol, das wir
links neben der Gesundheitsleiste anzeigen werden Dann haben wir ein Stück für die
linke Seite der Gesundheitsleiste, und wir haben sowohl eine
Vollversion als auch eine leere Version In ähnlicher Weise haben wir sowohl eine vollständige als auch eine leere Version
des mittleren Teils. Wir werden mehrere Klone
des Mittelteils erstellen , um
die Mitte der Gesundheitsleiste auszufüllen Schließlich haben wir volle
und leere Versionen der rechten Seite
der Gesundheitsleiste Okay? Und für die Kodierung der
Bass-Gesundheitsleiste Sprite wird
sie dem Code
für den Heartsprite ziemlich
ähnlich sein Code
für den Heartsprite ziemlich
ähnlich Wir können also damit beginnen, zum HeartSprite-Code zu
gehen und Beginnen wir mit dem
Sortierschicht-Skript. Dann, wenn ich als Klon anfange, dann Klone erstelle, dann
einrichte und schließlich das Skript mit grüner Flagge Gehen wir jetzt zum
Boss Health Bar Sprite. Im Setup-Skript für den
Boss Health Bar Sprite wollen
wir die Klone nur
erstellen, wenn das aktuelle Level das letzte Level
ist Gehen wir also zunächst zu Control
und lassen uns einen
ITN-Block um den Block „Klone erstellen“ und
den Block „Kostüm wechseln“ wickeln Klone erstellen“ und
den Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Gehen Sie dann zu Variablen und prüfen Sie, ob Level
gleich Endlevel Als Nächstes wollen
wir im Create
Clone Script zuerst einen
Klon mit dem Icon-Kostüm erstellen also zunächst für den Block „
Gehe zu XY wir also zunächst für den Block „
Gehe zu XY“ zu den negativen Werten
205 und 110. Dann gehen wir gleich
nach dem Block Gehe zu XY-Block zu Looks at a
Switch-Kostüm und
wechseln zum Symbolkostüm. Gehen wir gleich danach zu Control und fügen einen Block mit
meiner eigenen Anzeige hinzu Wir wollen uns dann ein bisschen nach rechts bewegen, um mit der Erstellung der Teile des
Gesundheitsbalkens zu beginnen Gehen wir also zur Bewegung über, bringen eine Änderung X für Block und ändern wir sie um 28. Nachdem wir den
Index auf eins gesetzt
haben, erstellen wir als Nächstes einen Klon für die
linke Seite der Gesundheitsleiste. Gehen wir also zu Looks, bringen einen Switch-Kostümblock hinein und verwenden wir das komplette Kostüm auf der linken
Seite. Gehen wir dann zu Control und holen uns einen Kistenklon
des Blocks Myself Okay. Jetzt verwenden wir den Wiederholungsblock, um
Klone für die mittleren Teile zu erstellen Lasst uns also zuerst zum
richtigen Kostüm wechseln, indem wir zu Looks gehen, einen Switch-Kostümblock
direkt über dem Wiederholungsblock
platzieren direkt über dem Wiederholungsblock und zu
Health Middle Full wechseln Was die Anzahl der Wiederholungen angeht, wollen
wir
genügend Mittelfiguren erstellen , um der maximalen Gesundheit des Bosses
Rechnung zu tragen Wir
erstellen jedoch bereits einen Klon für die linke Seite und wir werden auch einen
für die rechte Seite erstellen Das macht also zwei
Einheiten der Gesundheit des Bosses aus. Daher sollte die Anzahl der Klone der mittleren Figuren nicht unter der maximalen
Gesundheit des
Bosses Ordnung, also lasst uns zuerst den Block mit der maximalen
Gesundheit der Spieler
hier loswerden maximalen
Gesundheit der Spieler
hier Dann gehen wir zu Operatoren und ersetzen ihn durch
einen Subtraktionsblock Gehen wir nun zu Variablen und machen wir Max Boss
Health minus zwei Diesmal wollen
wir
den Klon erstellen, nachdem wir den Index und
die Position geändert haben. Lassen Sie uns also den Block
Create Clone of
myself an das Ende
des Wiederholungsblocks verschieben . Und um das X zu ändern, müssen die Teile der
Gesundheitsleiste perfekt aufeinander abgestimmt sein, sodass
keine Lücken zwischen ihnen entstehen. Die Kostüme für die Teile der
Gesundheitsleiste sind alle genau zehn
Pixel breit. Das bedeutet, dass wir X
um zehn ändern müssen. Schließlich müssen
wir unter dem Wiederholungsblock einen Klon
für die rechte Seite
der Gesundheitsleiste erstellen . Wir können damit beginnen,
die Blöcke innerhalb
des Wiederholungsblocks zu duplizieren und sie
am Ende des Skripts
hinzuzufügen Aber vor dem Block Create
Clone of Myself wollen
wir zu Looks gehen, einen Switch-Kostümblock einfügen und dann auf Gesundheit auf der
rechten Seite voll wechseln Okay, jetzt müssen wir
auch
einige Änderungen am Skript „Wann ich als Klon
starte Zuerst wollen wir
die Forever-Schleife nur für
Klone laufen lassen die Forever-Schleife nur für , die Teile
der Gesundheitsleiste sind,
nicht für den Icon-Klon Also müssen wir das Kostüm
überprüfen. Gehen wir dazu zu Control und bringen einen INN-Block
in einen leeren Raum. Für die Bedingung
können wir ein Duplikat
des Kostümnamens entspricht einem
leeren Block aus
dem Setup-Skript verwenden des Kostümnamens entspricht leeren Block aus
dem Setup-Skript Und lassen Sie uns überprüfen, ob
es dem Symbol entspricht. Wenn ja, können wir einen
Stopp-Block einfügen und dieses Skript beenden. Wenn wir das alles direkt
über dem Forever-Block platzieren, der Forever-Block nur läuft
der Forever-Block nur für die Teile der Gesundheitsleiste. Als Nächstes speichern wir, dass
die Gesundheit des Spielers kleiner als der Indexblock
ist, entfernen
dann alles
andere innerhalb des Forever-Blocks. Fügen wir nun einen
Wenn-Dann-Block zum Forever-Block und verwenden als Bedingung den Zustand des Spielers
kleiner als den Indexblock. Aber natürlich wollen wir die Gesundheit der Spieler auf die Gesundheit von
Bossen
umstellen. Wenn die Gesundheit des Bosses
unter dem Index der Klone liegt, bedeutet das, dass wir das Kostüm
des
Klones gegen
die leere Version
seines aktuellen Kostüms austauschen müssen Kostüm
des
Klones gegen die leere Version
seines aktuellen Kostüms Dazu müssen
wir zunächst das aktuelle Kostüm des Klons überprüfen Fügen wir also dem ITN-Block einen
ITN-S-Block hinzu. Lassen Sie uns für die Bedingung ein Kostüm mit
dem Namen Equals Block
duplizieren Und lassen Sie uns überprüfen, ob es dem
Health-Unterstrich links, dem Unterstrich der Seite, dem
Unterstrich ganz entspricht , und
achten Sie
darauf, dass achten Sie
darauf Wenn ja, gehen wir zu Aussehen, bringen einen Wechselkostümblock hinein
und wechseln dann zu Gesundheit
auf Für den TS-Teil können
wir zuerst ein Duplikat
des I- und dann TS-Blocks einfügen. Lassen Sie uns für diesen Fall überprüfen, ob Name des
Kostüms gleich
Gesundheit, Unterstrich rechts, Unterstrich Seite,
Unterstrich voll ist,
und wenn ja, wechseln wir zu
Gesundheit auf der rechten Wenn es den ersten
Teil dieses Punktes erreicht, bedeutet das,
dass der Klon ein Mittelstück
ist Lasst uns also einen weiteren
Switch-Kostümblock einbauen und ihn auf
Health Middle Leer umstellen. Alles klar, sobald Kostüm
eines Klones auf die leere Version
umgestellt wurde, wollen
wir verhindern, dass der
Forever-Block wieder läuft. Gehen wir dazu zu Control und fügen einen Stopp-Block direkt nach dem ersten
I Thin-Out-Block hinzu. Wir wollen sicherstellen, dass
er sich immer noch innerhalb
des IbS-Integritätsblocks befindet, der Wert ist kleiner
als der Indexblock, und wir möchten dieses Skript beenden Okay, der Code für den Boss Health Bar Sprite
sollte vollständig sein Wenn wir also das Spiel starten, sollten
wir
oben links auf der Bühne eine vollständige Gesundheitsleiste
für den Boss sehen oben links auf der Bühne eine vollständige Gesundheitsleiste
für den Boss Und wenn wir den Boss treffen, sinkt
die Gesundheitsleiste. Großartig. Aber momentan nehmen
wir immer noch
jedes Mal, wenn wir auf ihn springen, dem Boss die
Hälfte seiner Lebenspunkte Um das zu beheben, gehen wir zum Boss Sprite-Code und
suchen
nach dem Skript, das den Scheck berührt Und hier ändern wir die
Boss-Gesundheit durch
einen negativen Wert . Da haben wir's. Der Boss ist jetzt viel
schwieriger zu besiegen. Ordnung, jetzt können wir zu
Variablen gehen und die Gesundheitsvariable des
Chefs ausblenden Und in der nächsten Lektion werden
wir endlich damit beginnen, dem Spiel
einige Soundeffekte und
Musik hinzuzufügen Spiel
einige Soundeffekte und
Musik hinzuzufügen
121. Einige Sounds hinzufügen: Wenn wir später den
Titelbildschirm erstellen, hat
der Player Optionen zum Ein- und Ausschalten der Musik und der
Soundeffekte Bevor wir also Musik
oder Soundeffekte abspielen, müssen
wir zunächst sicherstellen,
dass sie aktiviert sind Dazu müssen wir
ein paar globale Variablen erstellen. Für die Musik-Variable nennen
wir sie Music On und
machen sie für alle Sprites. Lassen Sie uns nun eine weitere erstellen, sie Sounds On
nennen und sie auch für alle Sprites
erstellen Lassen Sie uns die
Variablenanzeigen
etwas nach unten verschieben , damit sie die HUD-Elemente nicht
blockieren Wenn der Player die Musik oder
die
Soundeffekte ein- oder ausschaltet , sendet
er eine Nachricht die der Hintergrund empfängt Gehen wir also zum Hintergrundcode
über. Und hier werden wir
weitermachen und
den Code zum Umschalten von
Musik und Soundeffekten schreiben den Code zum Umschalten von
Musik und Soundeffekten Lassen Sie uns also zuerst einen leeren
Raum finden. Dann lass uns zu den Veranstaltungen gehen und einen Block hinzufügen, wenn
ich erhalte. Lass uns eine neue Nachricht
namens Toggle Music erhalten. Und hier
wollen wir überprüfen, ob die Musik
derzeit aktiviert ist
oder nicht Gehen wir also zu Control und fügen
einen I und dann einen S-Block ein. Gehen wir für die Bedingung zu Operatoren und fügen einen Equals-Block ein Gehen Sie dann zu Variablen und
überprüfen Sie, ob Musik an gleich eins ist. Wenn ja, wollen wir die Musik
ausschalten, indem ein Set zum Blockieren hinzufügen und die Musik auf Null
setzen Andernfalls wollen wir es
einschalten, indem wir dem Outs-Teil
einen Satz von zwei Blöcken hinzufügen und die Musik auf einen setzen. Wir können jetzt
das gesamte Skript duplizieren, und für dieses erhalten wir eine neue Nachricht namens
Toggle Sounds Anstatt Musik einzuschalten, wollen
wir prüfen, ob
Töne an gleich eins sind, und wir wollen die Töne in beiden
Blöcken variabel
einschalten Ordnung. Da wir noch
keinen Titelbildschirm haben, können
wir ihn auch so einrichten, dass durch Drücken bestimmter Tasten die
Musik und die Soundeffekte umgeschaltet werden Gehen wir dazu zu den Events und holen uns einen Block mit gedrückter
Win-Taste Und für Musik
verwenden wir die M-Taste. Jetzt müssen wir nur noch einen Broadcast-Block einfügen und
Musik einschalten In ähnlicher Weise duplizieren
wir für die
Soundeffekte das Skript und verwenden die X-Taste Und hier müssen wir
Toggle Sounds übertragen und jetzt
können wir mit den Tasten M und X die Musik und
die Töne
auf den Variablen 0-1 einschalten Musik und
die Töne
auf den Variablen 0-1 Okay, jetzt fügen wir dem Spiel einige
Soundeffekte hinzu
und beginnen mit den Soundeffekten
für
die Spieler-Sprites Wenn wir uns
den Sound-Tab für die Sprites
der Spieler ansehen , haben
wir ein Autschgeräusch,
wenn der Spieler verletzt wird, ein Sprunggeräusch, wenn er springt, ein Boing-Geräusch, wenn er auf
einen Feind oder ein
Sprungpad springt,
und ein Slide-Sound, wenn auf
einen Feind oder ein
Sprungpad springt,
und ein Slide-Sound, er einen Hang
hinunterrutscht Okay, also im Code
für das Spieler-Sprite, bevor wir einen
der Sounds abspielen, müssen
wir zuerst
sicherstellen, dass die Um dabei zu helfen,
erstellen wir einen benutzerdefinierten Block. Gehen wir also zu Meine
Blöcke und erstellen einen. Geben wir zuerst
Play Sound Colon ein. Wir wollen angeben,
welcher Sound abgespielt werden soll. Fügen wir also eine Eingabe hinzu, nennen wir sie Sound und klicken Sie auf Okay. Dann verschieben wir den Soundblock „
Defined Place in einen leeren Bereich. Und hier müssen wir zuerst
sicherstellen, dass die
Sounds aktiviert sind. Gehen wir also zur Steuerung und
fügen ein I hinzu, dann blockieren wir es. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock Gehen wir dann zu Variablen und prüfen, ob On gleich eins ist. Wenn ja, können wir den angegebenen
Sound abspielen, indem wir zum Sound gehen, einen
Stärke-Soundblock einfügen und den
Soundeingang zum Block hinzufügen Ordnung, jetzt müssen wir
herausfinden, wo die einzelnen Sounds
abgespielt werden sollen zuerst für den Out-Sound Lassen Sie uns zuerst für den Out-Sound das Get Hurt-Drehbuch finden Und hier, nach dem
Check-Block, spielen
wir den Sound ab,
wenn der Spieler nicht tot ist. Um also zu überprüfen, ob der
Spieler nicht tot ist, gehen
wir zuerst zu Control und fügen einen wenngleich dünnen Block am Ende
des Skripts hinzu. Für die Bedingung gehen wir zu Operatoren und fügen einen Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob tot gleich Null ist. Wenn ja, können wir zu M-Blöcken gehen
, einen Soundblock einfügen und das Wort
Autsch als Eingabe verwenden Und jetzt, solange
Sounds on auf eins gesetzt ist, wird
jedes Mal, wenn wir verletzt werden, der Autsch-Sound abgespielt. Autsch. Wenn wir die Sounds ausschalten, wird der Sound nicht abgespielt Wenn wir die
Sounds wieder einschalten und wir sterben,
wird der Ton auch nicht abgespielt Das ist gut, weil
wir irgendwann einen anderen Sound
abspielen werden
, wenn der Spieler stirbt. Okay, als Nächstes suchen wir
das Bounce-Player-Skript. Und hier, wenn
Bouncer gleich Null ist, spielen
wir den Das passiert
immer dann, wenn wir entweder auf einen Feind
springen oder auf einem
Sprungbrett abprallen Ordnung, also fügen wir am unteren Rand
des
I-Boouncer einen
Play-Soundblock hinzu , wenn ein Teil des I-Bouncer-Blocks gleich Null ist Und lass uns den Boeing-Sound spielen. Wenn wir jetzt auf einen
Feind oder ein Sprungpad springen, wird der Boeing-Sound abgespielt. Earl. Ich bin Barilla. Wenn wir von einem gegnerischen Teig getroffen werden, spielen
wir trotzdem den Autsch-Sound Raus. Als Nächstes suchen wir die
Folie auf Slope Script. Am Ende des Skripts, wo wir
die Meldung „
Slide-Effekt erstellen“ übertragen , können
wir einen Soundblock
einfügen und den Slide-Sound abspielen. Und wenn wir jetzt einen Hang
hinunterrutschen, wird der Slidesound abgespielt. abschließend Lassen Sie uns abschließend das Skript für die
vertikale Bewegung des Griffs finden. Im Beispiel I dauert das Springen
weniger als sieben Blöcke Fügen
wir einen
Soundblock hinzu und lassen Sie uns das Sprunggeräusch abspielen. Im Moment wird
das Geräusch jedoch bei
jedem Sprung
mehrmals abgespielt . Das liegt daran, dass es so lange abgespielt wird,
bis der Sprung
nicht mehr weniger als sieben ist. Um das Problem zu beheben, wollen wir das Sprunggeräusch nur abspielen
, wenn ein Sprung erfolgt. Gehen wir also zu Control und wickeln einen ITN-Block um
den Orts-Soundblock Gehen wir für die Bedingung zu den Operatoren und fügen einen
Equals-Block ein Gehen Sie dann zu Variablen und
prüfen Sie, ob Springen gleich eins ist. Jetzt wird das Sprunggeräusch bei jedem Sprung nur einmal
abgespielt. Tschüss. Okay. Fantastisch.
Als Nächstes spielen wir ein Geräusch, wenn der
Spieler eine Münze sammelt. Suchen wir dazu zunächst
das Play-Sound-Skript. Und lass es uns
in den Coin Sprite kopieren. Wenn es sich in der unteren
Reihe des Sprite-Fensters befindet, müssen
wir es möglicherweise
eine Zeile nach oben ziehen , bevor wir die Skripts
kopieren können Okay, jetzt gehen wir
zu den Coin-Sprites. Der Coin Sprite hat
ein Sammelgeräusch. Und um es zu spielen,
suchen wir das Script Check Touching
Player Bevor wir
den Klon hier löschen, gehen
wir zu Mbloxs, bringen
einen Play-Soundblock ein
und spielen den Clet-Sound und spielen den Clet-Sound Jetzt wird der Sound jedes Mal
abgespielt, wenn wir eine Münze sammeln. Bär. Lassen Sie uns weitermachen und
das Orts-Soundskript
in das Key-Sprite kopieren das Orts-Soundskript
in das Key-Sprite Gehen Sie dann zum Schlüssel Sprite. Der Schlüssel Sprite
hat auch einen Sammelsound. Und wie bei den Münzen wollen
wir den Sound abspielen, bevor wir den Klon im
Check-Touching-Player-Skript
löschen Als Nächstes kopieren wir das
Orts-Sound-Skript in
das Pause-Sprite Das Pause-Sprite
hat einen Klicksound, der immer dann abgespielt wird
, wenn der Spieler im
Pause-Overlay entweder auf die Schaltfläche Zoom oder auf
die Schaltfläche zum Beenden klickt Pause-Overlay entweder auf die Schaltfläche Zoom oder auf
die Schaltfläche zum Okay,
lassen Sie uns im Code herausfinden, welcher
Sprite gewinnt, klicken Sie auf das Und hier, bevor wir
die Zoom-Spielnachricht übertragen, fügen wir einen
Play-Soundblock ein und spielen den Klicksound ab Und lassen Sie uns dasselbe vor dem Spielblock mit
dem CA Quick machen. Wir können dies auch im Block mit
der Win-Leertaste tun Block mit
der Win-Leertaste bevor wir das Spiel fortsetzen übertragen Stellen wir nun sicher, dass
alles richtig funktioniert. Großartig. Als Nächstes kopieren wir das Orts-Sound-Skript in
die Explosions-Sprites. Das Explosions-Sprite
hat ein Explosionsgeräusch, das immer dann abgespielt wird, wenn
eine Explosion erzeugt Suchen wir also das W, das ich erhalten habe, das
Create Explosion-Skript. Und nach dem Block
Create Clone fügen wir einen Soundblock
hinzu und spielen den Explode-Sound ab Um das zu testen, müssen wir
zu Level vier gehen. Und wann immer eine Rakete explodiert, spielt
sie das Explosionsgeräusch ab Ja. Ja. Ja. Okay, jetzt kopieren wir das Play-Soundskript
in das Boss-Sprite Der Boss-Sprite
hat ein Grunzgeräusch. Wir spielen das, wann immer
er vom Spieler getroffen wird. Suchen wir also nach dem Skript, das den Spieler
berührt. Wir spielen den Sound, wenn der Boss verletzt wird
und wenn er stirbt. Fügen wir also über dem
ITN-Block einen
Play-Soundblock hinzu, in dem wir überprüfen, ob der Boss keine Gesundheit mehr hat
, und lassen Sie uns den Grunzsound abspielen Wenn wir jetzt auf den Boss springen,
wird der Grunzsound abgespielt Von. Von. Wir haben auch einige Sounds
zum Abspielen im Hintergrund. Lassen Sie uns also zuerst das Soundskript für
den Ort kopieren. Dann geh zum Hintergrund. Für die Hintergrundgeräusche haben
wir einen Sound zum Starten des Spiels
, den wir beim
ersten Start des Spiels abspielen, aber wir warten, bis wir ihn verwenden nachdem wir
den Titelbildschirm erstellt haben. Als Nächstes haben wir das Windgeräusch. Denn wenn der Spieler das Spiel
gewinnt, gibt den Lose-Sound,
wenn er stirbt, und der Finish-Level-Sound, wenn durch einen Ausgang
geht
und ein Level beendet. Wir haben auch zwei Musiksounds, aber mit denen werden wir uns
in der nächsten Lektion befassen. Okay, also lass uns zum Code gehen. , wenn ich vor dem Warten
und Senden das Startlevel erhalte , wenn ich vor dem Warten
und Senden das Startlevel Lassen Sie uns zuerst einen
Player-Soundblock einschalten
und den Lose-Sound
abspielen , wenn ich vor dem Warten
und Senden das Wenn wir jetzt sterben, wird der Lose-Sound
abgespielt. Raus. Raus. Als Nächstes, und wenn ich den Finish-Level erhalte, bevor ich den Startlevel der Übertragung erhalte, bringen
wir einen Soundblock
an und spielen den
Finish-Underscore-Level ab Wenn wir jetzt durch
einen Level-Ausgang gehen, wird der Sound für die
Endstufe wiedergegeben Lassen Sie uns abschließend herausfinden, wann
ich es erhalten habe. Boss ist gestorben. hier, bevor wir warten
und den Endbildschirm zeigen, Lassen Sie uns hier, bevor wir warten
und den Endbildschirm zeigen, einen Soundblock
einfügen und den Win-Sound abspielen. Wenn wir jetzt den Boss besiegen, spielt
er den Siegesound ab. Okay, bis wir den
Titelbildschirm erstellt haben, sind
wir vorerst mit dem Hinzufügen von
Soundeffekten fertig. In der nächsten Lektion werden
wir also etwas Musik hinzufügen.
122. Musik hinzufügen: Wenn wir zur
Registerkarte Sounds für den Hintergrund gehen, wir bereits gesehen, dass wir
zwei Sounds für die
Musik haben . Fröhliche Musik. Und Boss-Musik. Wir spielen fröhliche
Musik in den Stufen eins, zwei und drei und wir spielen Bossmusik während der
Bosskämpfe und Level vier. Okay, jetzt gehen wir
zurück zum Code. Wir spielen die Musik
mit einem benutzerdefinierten Block ab. also in meinen Blöcken Klicken
wir also in meinen Blöcken auf Einen Block erstellen. Nennen wir es Musik abspielen. Und wir möchten sicherstellen, Option Ohne
Bildschirmaktualisierung ausführen
nicht aktiviert ist. Okay, lass uns auf Okay klicken und einen leeren Platz für
das Play-Musik-Skript suchen Und hier wollen wir die Musik kontinuierlich abspielen, bis
sie fertig ist Lassen Sie uns also zuerst zur
Steuerung gehen und einen
Block für immer einfügen. Als Nächstes überprüfen wir
den aktuellen Stand. Wenn es das letzte Level ist, spielen
wir die Boss-Musik. Andernfalls spielen wir
die fröhliche Musik. Fügen wir also dem
Forever-Block einen IN-Outs-Block hinzu. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Equals-Block ein Gehen Sie dann zu Variablen und prüfen Sie, ob Level
gleich Endlevel Gehen wir nun zu Sound und fügen wir jedem Teil einen Play-Sound
bis Don Block Für den If-Teil
wollen wir Boss-Musik spielen, und für den Outs-Teil wollen
wir fröhliche Musik spielen. Ordnung, und wir
möchten, dass die Musik abgespielt
wird, wenn der Spieler
auf die grüne Flagge klickt Suchen wir also das Skript mit der
grünen Flagge. Unten
spielen wir die Musik. Aber zuerst warten wir
ein bisschen, indem wir zu
Control gehen und einen Block mit
einer Wartezeit von 1 Sekunde einrichten. Dann gehen wir zu mBlock und fügen einen Block
zum Abspielen von Musik ein. Wenn wir das Spiel jetzt starten, beginnt
nach 1 Sekunde die
Musik zu spielen Wenn wir
jedoch ein Level beenden , stoppt die Musik und sie beginnt nicht wieder,
wenn das nächste Level beginnt. Das liegt daran, dass
wir im
Finish-Level-Skript die
anderen Skripte anhalten
und das Abspielen so lange klingt, bis Don Block tatsächlich sein eigenes Skript
ausführt, sodass es auch gestoppt wird. Wir müssen
allerdings
die anderen Skripte beenden, weil wir die Spielschleife beenden
müssen. Am Ende des Skripts können
wir
die Musik also einfach wieder starten. Aber lassen Sie uns zuerst ein
bisschen warten, indem wir zur Steuerung gehen, einen Warteblock einfügen, und lassen Sie uns 2 Sekunden warten Gehen wir dann zurück zu meinen Blöcken und fügen
einen Block zum Abspielen von Musik hinzu Wenn wir jetzt ein Level beendet haben, beginnt
die Musik wieder,
wenn das nächste Level beginnt. Die Musik hört auch auf, wenn der
Spieler stirbt. Das liegt daran, dass wir auch
die anderen Skripte
im Skript „Wenn der
Spieler gestorben ist“ beenden müssen . Wir können also die Wartezeit von
2 Sekunden
duplizieren und
Musikblöcke im
Finish-Level-Skript abspielen Musikblöcke im
Finish-Level-Skript und sie dann am Ende
des Skripts für den Spieler gestorben hinzufügen. Wenn wir jetzt sterben, O. O. Die Musik fängt wieder an,
wenn das Level neu gestartet wird Okay, wenn wir zu Level
vier wechseln, spielt
es
jetzt die Boss-Musik, was ziemlich cool ist Wenn wir jedoch den
Boss besiegen und der Bildschirm erscheint, derzeit
keine Musik abgespielt. Ich denke, es wäre schön, wieder
die fröhliche Musik zu spielen. Lassen Sie uns dazu das Drehbuch zum Tod
des Bosses finden. am Ende des Skripts Gehen
wir am Ende des Skripts zunächst zu Control,
fügen einen Warteblock hinzu
und warten 3 Sekunden. Gehen wir dann zu MyBlock und fügen einen Block
zum Abspielen von Musik hinzu. Wenn wir
das jetzt versuchen,
wenn der Bildschirm erscheint, wird die Boss-Musik wieder
abgespielt Das liegt daran, dass
die Level-Variable immer noch auf Stufe vier gesetzt
ist. Wenn wir
die fröhliche Musik spielen wollen, müssen
wir den Pegel
auf etwas anderes einstellen. Gehen wir dazu
zu Variablen und fügen vor dem
Block zum Abspielen von Musik
im Bos d-Skript
einen Block mit zwei Sätzen und setzen dann Level auf eins. Jetzt wird die fröhliche Musik abgespielt , wenn der Endbildschirm erscheint. Okay, im Moment
wirkt sich das
Ein- und Ausschalten der Musik
auf variable Weise nicht wirklich auf die Um das zu beheben, suchen wir nach dem Skript , wenn ich Musik
erhalte. Erstens, wenn wir hier die
Musik auf Null setzen, wollen
wir auch die Musik stoppen Leider können wir ein bestimmtes
Geräusch und einen Kratzer nicht wirklich stoppen. Also müssen wir stattdessen
alle aktuellen Sounds stoppen indem wir zum Sound wechseln und Block „
Alle Sounds stoppen“ einfügen. Als Nächstes wurde im Outs-Teil
die Musik eingeschaltet, wurde im Outs-Teil
die Musik eingeschaltet, also wollen wir die
Musik erneut abspielen, indem wir
zu Mbloxs gehen und einen Block zum Abspielen von Musik hinzufügen Wenn wir das Spiel jetzt starten und
versuchen, die Musik auszuschalten, funktioniert
es nicht wirklich Die Musik wird einfach neu gestartet. Das liegt daran, dass im
Play-Musik-Skript, das ewig läuft, sobald es feststellt,
dass die Musik abgespielt wird,
sobald es feststellt,
dass die Musik
gerade nicht sofort
die Musik abgespielt wird,
sobald es feststellt,
dass die Musik
gerade nicht
abgespielt wird Um dieses Problem zu beheben, möchten wir
das Skript beenden , wenn die
Musik ausgeschaltet wird. Gehen wir dazu zunächst zu Control und bringen einen
ITN-Block in einen leeren Bereich Gehen wir für die Bedingung zu Operatoren und fügen einen
Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob Musik an gleich Null ist. Wenn ja, gehen wir zur Steuerung,
fügen einen Stopp-Block hinzu
und beenden dieses Skript Wenn wir ihn jetzt an den
Anfang des Forever-Blocks setzen, funktioniert
das Umschalten der Musik korrekt Okay,
wir können auch beim Pausieren des Spiels die Sounds stummschalten und sie
dann wieder aufheben, wenn der Spieler das Spiel wieder aufnimmt Lassen Sie uns dazu
herausfinden, wann ich eine
Spielpause erhalte und wann ich ReZoomGame das Spiel pausieren zu können, gehen
wir zum Sound, geben eine
eingestellte Lautstärke von zwei
Blöcken ein und stellen sie auf 0% Und für ReZoomGame setzen
wir ihn auf 100%. Jetzt hören wir keine Musik mehr,
wenn wir das Spiel pausieren. Und wir werden es wieder hören
, wenn das Spiel fortgesetzt wird. Okay, jetzt, wo wir wissen, dass die Audioumschaltung korrekt
funktioniert, können
wir zu Variablen gehen und Musik ein- und
Sounds ausblenden Und als Nächstes erstellen wir
den Titelbildschirm.
123. Titelbildschirm erstellen: Im Skript mit grüner Flagge
für den Hintergrund starten wir
nicht sofort
das erste Level, indem wir das Startlevel senden, stattdessen
den Titelbildschirm auf, indem
wir den Titelbildschirm auf, indem eine Nachricht auf dem
Titelbildschirm der
Sendung senden. Wenn der Spieler dann auf
dem Titelbildschirm
auf die Schaltfläche „Spiel spielen“ klickt , senden
wir eine
Startnachricht, die der Hintergrund empfängt und
das erste Level startet. Wenn wir jedoch den
Gottmodus aktiviert haben, möchten
wir wahrscheinlich nicht jedes Mal, wenn
wir auf
die grüne Flagge klicken, den Titelbildschirm sehen . Wenn also der Gottmodus aktiviert ist, starten
wir das Spiel sofort. Andernfalls zeigen wir
den Titelbildschirm an. Okay, lassen Sie uns also zuerst
die drei unteren Blöcke,
beginnend mit der
Startstufe der Sendung, abtrennen und sie beiseite legen, da wir sie gleich
woanders verwenden werden Als Nächstes benötigen
wir statt eines
I-Think-Blocks zur Überprüfung des Good-Modus einen Ich-denken-Block. Speichern wir den Gott-Modus gleich Null-Block und die eingestellte
Stufe auf einen Block, entfernen den Block I thin, gehen
dann zu Control, einen Block I thin s und verwenden den Gott-Modus ist gleich
Nullblock als Bedingung Fügen wir den
Block mit der eingestellten Ebene zu den I-Teilen hinzu. Außerdem zeigen wir den Titelbildschirm im F-Teil an, indem wir zu Events
gehen, einen Broadcast-Block einfügen und eine neue Nachricht mit dem
Namen Titelbildschirm anzeigen senden. Wir können dann mit der Musik
beginnen, indem die Wartezeit von 1 Sekunde einschalten und Musikblöcke abspielen
, die wir hier gespeichert haben. Jetzt, im Es-Teil, ist der
Gottmodus aktiviert, sodass wir das
Spiel sofort auf dem aktuellen Level starten. Lassen Sie uns dazu einen Broadcast-Block einfügen und eine neue
Nachricht mit dem Namen Spiel starten senden. Okay, jetzt müssen wir uns um die Nachricht
zum Start des Spiels kümmern. Lassen Sie uns also zuerst einen Block, den ich
erhalten habe, in ein
leeres Feld bringen . Und lass uns das Startspiel empfangen und hier spielen wir
den Sound von Start Game, dann starten wir das Level. Aber zuerst gehen wir zu Control,
fügen einen Stop-Block ein
und stoppen andere
Skripte und Sprites Dies dient hauptsächlich dazu, jegliche
Musik zu stoppen, die möglicherweise abgespielt wird. Okay, jetzt gehen wir zu „Meine Blöcke“, fügen einen Soundblock hinzu
und lassen Sie uns den Sound des Spiels „Start
Underscore“ abspielen Dann können wir den Broadcast-Start-Level-Block einfügen, den wir hier gespeichert haben Danach
wollen wir ein bisschen warten und dann die Musik starten. So können wir die Wartezeit von
1 Sekunde duplizieren und
Musikblöcke von hier oben abspielen. Und lassen Sie uns diesmal 2
Sekunden warten. Okay, im Moment,
wenn wir bei ausgeschaltetem Gottmodus auf die grüne Flagge klicken, passiert nicht viel
,
außer dass die Musik
abgespielt wird , weil wir
noch keinen Titelbildschirm haben Und wenn wir den Gottmodus einschalten
und auf die grüne Flagge klicken, wird das
Startskript des Spiels ausgeführt, der Startsound des Spiels
abgespielt
und das Level Okay, lassen Sie uns den
Gottmodus wieder ausschalten und als Nächstes
den Titelbildschirm mit dem
Titelbildschirm-Sprite hier erstellen den Titelbildschirm mit dem
Titelbildschirm-Sprite hier Wenn wir uns die Kostüme
ansehen, haben
wir jedes Kostüm , das wir für
die Erstellung des Titelbildschirms
benötigen, einschließlich BG für den Hintergrund, den Titel und eine Animation mit sieben
Frames für Wenn die Play-Taste gedrückt ist Ein Kostüm für den Fall, dass der
Spieler die
Play-Taste ein- und ausschaltet Kostüme sowohl für die Musik- Soundschaltflächen und
ein
Audiopanel, das als Container für die Tasten Musik und
Sounds dient. In Ordnung, jetzt
gehen wir zum Code-Tab. Da der Titelbildschirm während
des eigentlichen Spiels
nicht angezeigt wird
und wir für
alle Teile des Titelbildschirms ein einziges Sprite
verwenden, müssen
wir uns keine Gedanken
über das Sortieren der Okay, und wir werden
die Klone immer dann erstellen, wenn das Sprite die Meldung „Titelbildschirm
anzeigen“ erhält Gehen wir also zunächst zu den Ereignissen, einen
Block
„Wenn ich erhalte “ hinzu und
zeigen den Titelbildschirm Das Erste, was wir tun
wollen, ist das Sprite zu zeigen. Gehen wir also zu Looks und
bringen einen Showblock rein. Wir wollen auch, dass es über allem anderen steht, was auf der Bühne sein
könnte. Lassen Sie uns also einen Block mit dem Titel „Go
to Front Layer“ einbauen. Als Nächstes beginnen wir mit der
Erstellung der Klone, und wir möchten
mit dem
Hintergrundklon beginnen , sodass er
hinter den anderen Klonen erscheint Bringen wir also einen
Switch-Kostümblock rein
und wechseln wir zum BG-Kostüm Dieser Klon muss auf der Bühne
zentriert sein. Gehen wir also zur Bewegung über,
setzen einen Go-to-XY-Block und fahren wir mit 00 fort. Lassen Sie uns nun den
Klon erstellen, indem wir zu
Control gehen und einen
Crit-Clone von mir selbst einfügen. Der nächste Klon, den wir
erstellen werden, ist der Titelklon. Dazu können wir zunächst die drei Blöcke
duplizieren, beginnend mit dem
Wechsel von Kostüm zu BG-Block, und sie am Ende
des Skripts hinzufügen. Gehen
wir für das Kostüm mit dem Titel und für die Position mit Null
für X und 110 für Y aus. Als Nächstes machen wir die Play-Taste Lassen Sie uns also die
unteren drei Blöcke duplizieren. Wechseln Sie zur Play-Taste auf Null und gehen Sie auf
Null minus zehn. Jetzt erstellen wir
das Audiopanel und die Audio-Umschaltflächen unten rechts
auf dem Bildschirm. Wir müssen mit
dem Bedienfeld beginnen, Wir müssen mit
dem Bedienfeld beginnen sodass es hinter den Tasten
angezeigt wird Lassen Sie uns also zuerst
die unteren drei Blöcke duplizieren, zum
Audiopanel-Kostüm
wechseln und zu 140 negativ 135 übergehen Lassen Sie uns erneut duplizieren,
schalten Sie die Musiktaste und gehen Sie zu 220 negativ 120. Lass uns noch einmal duplizieren. Schalten Sie die Soundtaste und gehen Sie zu 220, minus 150. Schließlich möchten wir das ursprüngliche Sprites-Kostüm
wieder auf das leere Kostüm zurücksetzen Gehen wir also zu Looks, bringen einen Switch-Kostümblock hinein und wechseln wir zu Blank Wenn wir das Spiel jetzt starten, alle Klone
des Titelbildschirms angezeigt und die Musik beginnt Okay, lassen Sie uns jetzt
die Schaltflächen zum Laufen bringen , wenn
der Spieler sie anklickt. Lasst uns zunächst zu den
Events gehen und
diesen Block, auf den Sprite geklickt hat, gewinnen Und hier werden wir natürlich verschiedene Dinge
tun, je nachdem auf welchen Klon geklickt wird Gehen wir also zuerst zu Control
und fügen einen ITN-Block ein. Prüfen Sie zunächst, ob der Klon ein
Play-Button-Up-Kostüm verwendet Da es sich bei Play Button
Up aber um eine Animation handelt, müssen
wir prüfen, ob der Kostümname des Clone die Saite
Play-Button up
enthält. Um das für den Zustand
des ITN-Blocks zu tun, gehen
wir zu Operatoren und fügen einen
Contains-Block hinzu Dann gehen wir zu Looks. Verwenden Sie einen Kostümblock
als erste Eingabe. Und lassen Sie uns überprüfen, ob
der Kostümname die Schaltfläche „Unterstrich abspielen“ und „Unterstrich nach oben“
enthält Falls ja, wollen wir zum Play-Button-Down-Kostüm wechseln, also bringen wir einen Block „Kostüm
wechseln und wechseln zur Schaltfläche „Abspielen“ Wenn wir ganz schnell zum
Sound-Tab wechseln,
hat das Sprite auf
dem Titelbildschirm ein Klickgeräusch, das jedes Mal abgespielt wird, wenn
der Spieler auf eine Schaltfläche klickt Wir müssen jedoch zuerst
den Code für ein anderes
Sprite aufrufen , das Sounds
wie das Boss-Sprite abspielt, und dessen
Play-Soundskript kopieren Aber zuerst müssen wir das Sprite auf
dem Titelbildschirm im
Sprite-Fenster eine Reihe nach oben ziehen dem Titelbildschirm im
Sprite-Fenster eine Reihe nach oben . In Ordnung Gehen wir jetzt zurück zum
Titelbildschirm Sprites. Und wenn wir auf
die Play-Schaltfläche klicken, wollen
wir zu Mbloxs gehen, einen Play-Sound-Block einfügen
und den Klicksound abspielen Schließlich wollen wir
das Spiel starten, indem wir zu Events gehen, einen Broadcast-Block einbauen und „Spiel starten“ senden Wenn das passiert, wollen
wir aber auch alle Klone
des Titelbildschirms löschen Wir werden das tun, wenn die Klone die Nachricht „Spiel starten“
erhalten Lassen Sie uns also zuerst einen Block W, den
ich erhalten habe, in ein
leeres Feld bringen , und lassen Sie uns das Spiel starten empfangen Wir werden später ein paar
Animationen und so haben. Also stoppen wir diese zuerst,
indem wir zu Control gehen, einen Stopp-Block einfügen und andere
Skripte und Sprites stoppen Danach
machen wir eine kurze Pause. Also lass uns einen
Warteblock reinbringen und 2 Sekunden warten. Lassen Sie uns abschließend einen Block zum
Löschen dieses Klones hinzufügen. Wenn wir das Spiel jetzt starten und
auf die Play-Schaltfläche klicken, wechselt
es zum Down-Kostüm, und nach ein paar Sekunden verschwindet
der Titelbildschirm und das Spiel beginnt. Okay, lassen Sie uns jetzt
die Musik- und
Soundtasten zum Laufen bringen die Musik- und
Soundtasten zum Laufen Jeder dieser Knöpfe kann zwei mögliche Kostüme
haben, eines für An und eines für Aus Und wir wollen trotzdem
dasselbe tun. Für die Musik-Schaltfläche können
wir also zuerst
den Uplock „Ich, der Kostümname enthält
Abspielen“ duplizieren , ihn am Ende
des Skripts
hinzufügen
und prüfen, ob er
das Wort Musik enthält Wir werden das Kostüm
hier nicht wechseln, weil es möglich ist, dass der Spieler die Musik durch
Drücken der Taste
umschaltet Wir müssen also kontinuierlich den Wert der Musik
auf der Variablen
überprüfen und das
Kostüm
der Musiktasten entsprechend ändern Kostüm
der Musiktasten entsprechend Lassen Sie uns also den
Switch-Kostümblock loswerden. Und was die Musik angeht, wollen
wir die Nachricht mit der
Umschaltmusik übertragen Ähnlich verhält es sich mit der Schaltfläche „
Sounds“ Wir duplizieren zunächst
den Block „Ich habe den Namen des Kostüms
enthält“,
prüfen, ob er Sounds enthält,
und „Ton übertragen“. Okay, als Nächstes wollen
wir, nachdem die
Klone für die Schaltflächen „Musik “
und „Sounds“ erstellt wurden, ihre Kostüme kontinuierlich
entsprechend den Werten
der Variablen Music On und
Sounds On
einstellen entsprechend den Werten
der Variablen Music On und
Sounds On Dazu müssen wir zunächst When I
start
as a Clone-Skript starten Und da wir die Werte kontinuierlich
überprüfen
wollen , fügen wir hier einen Forever-Block ein. Wir werden zunächst prüfen, ob
es sich um den Klon der Musiktaste handelt. Lassen Sie uns also zuerst einen
Wenn-Dann-Block einbauen. Und für die Bedingung verwenden
wir ein Duplikat des Kostümnamens enthält
Musikblock aus
dem Moment, als
dieser Sprite geklickt Jetzt wechseln wir das Kostüm je nach dem Wert
der Musik auf Variable Lassen Sie uns einen
I und dann einen S-Block einfügen. Gehen wir für die Bedingung zu den Operatoren und fügen einen
Gleichheitsblock hinzu Gehen Sie dann zu Variablen und
überprüfen Sie, ob Musik an gleich eins ist. Wenn ja, ist die Musik eingeschaltet, also gehen wir zu Looks, bringen einen Switch-Kostümblock hinein und wechseln zur
Musiktaste am Kostüm Falls nicht, schalten wir auf die
Musiktaste aus dem Kostüm um. Für die Sound-Schaltfläche duplizieren
wir zunächst den
gesamten Musikblock Ich, der Name des Kostüms enthält, und fügen ihn am Ende
des Forever-Blocks hinzu. Lass uns überprüfen, ob es
Sounds enthält und ob
Sounds On gleich eins ist Wenn ja, schalten wir auf
die Schaltfläche Sounds ein. Andernfalls wechseln wir
zur Sounds-Taste aus. Okay, wenn wir das Spiel jetzt starten, können
wir die Musik- und
Sound-Tasten verwenden , um den Ton
umzuschalten Wir können auch
die Tasten M und X verwenden, und die Kostüme
ändern sich entsprechend Okay, um den
Titelbildschirm ein wenig zu verbessern, können
wir ihn so gestalten, dass beim Bewegen des
Mauszeigers über eine
der Schaltflächen eine Animation für
flüssiges Wachstum entsteht, zusammen mit einer Verkleinerungsanimation wenn wir uns
von der Schaltfläche entfernen. Das können wir auch im Fever-Block
des Skripts Wenn
ich starte als Allerdings wollen wir das nur für die Button-Klone
tun, nicht für den Hintergrund oder den Titel Wir können also zuerst zu
Control gehen und einen ITN-Block
um den Forever-Block wickeln diesem Fall können wir In diesem Fall können wir ein Duplikat
eines Kostüms mit
dem Namen enthält Block
mitbringen und prüfen, ob es
das Wort Button enthält Dies wird bei der Play-Taste und
den beiden Audiotasten
der Fall sein. Als Nächstes prüfen wir, ob sich
der Player gerade
über der Schaltfläche befindet oder nicht der Player gerade
über der Schaltfläche befindet Nehmen wir dazu einen Block, den ich
ausdünnen kann, und platzieren ihn am unteren Rand des Forever-Blocks
unter
den beiden ITN-Blöcken Gehen wir für die Bedingung zur Erkennung über und fügen einen sich
berührenden Mauszeigerblock ein Wir lassen die Schaltfläche in den WF-Teilen auf 120%
wachsen und in den Außenteilen wieder
auf 100% verkleinern . Wir haben das tatsächlich schon in unseren beiden
vorherigen Spielen Als Herausforderung möchte
ich Sie bitten, das Video jetzt anzuhalten und zu sehen,
ob Sie die Animationen zum
Vergrößern und Verkleinern zum Laufen bringen können Als Hinweis brauchen wir nur ein paar
Byblocks zur Größenänderung und ein bisschen Mathematik Ordnung, also gehen
wir zuerst zu Looks und fügen jedem Teil des Ithn-Out-Blocks
eine Änderung der
Größe Ithn-Out-Blocks
eine Änderung der
Größe für Block hinzu Gehen wir nun zu Operatoren und fügen
jedem Block zur Größenänderung einen Divisionsblock hinzu. Verwenden Sie dann einen Subtraktionsblock als erste Eingabe für
jeden Divisionsblock Gehen wir jetzt zurück zu Looks. Und für den Teil I machen
wir 120 minus
Größe geteilt durch zwei. Und denken Sie daran, dass
die Zahl,
durch die wir dividieren , die Geschwindigkeit
der Animation bestimmt. Damit der TS-Teil
die Größe wieder auf 100% reduziert, machen
wir 100 minus
Größe geteilt durch zwei Ordnung, wenn wir das Spiel jetzt
starten, die Play-Schaltfläche und die
Audio-Schaltflächen größer und kleiner, wenn wir den Mauszeiger darüber bewegen und uns von
ihnen entfernen. Ich denke allerdings, 120% sind ein bisschen viel für
die Audiotasten. Es könnte besser sein, sie nur auf
110% wachsen zu lassen. Zu diesem Zweck verwenden wir nur
120% für die Play-Schaltfläche. Andernfalls verwenden wir 110%. Gehen wir also zuerst zur Steuerung und nehmen einen Block,
wenn er dünn wird, und lassen Sie uns den I-Teil um
den Block
zur Größenänderung für die wachsenden Teile wickeln den Block
zur Größenänderung für die wachsenden Teile Für die Bedingung bringen
wir ein Duplikat eines Blocks mit dem
Namen des Kostüms ein
und prüfen, ob es das Wort Spiel
enthält. Wenn nicht, muss es sich um
eine Audiotaste handeln. Lassen Sie uns also
den Block zum Ändern der Größe duplizieren und ihn zu den Outs-Teilen hinzufügen. Aber dieses Mal
machen wir 110 statt 120. Und jetzt werden die Musik- und
Soundtasten nicht so
stark wachsen wie die Play-Taste. Okay, eine weitere
Möglichkeit,
den Titelbildschirm zu verbessern , besteht darin, ihn so
zu gestalten, dass alle Klone, mit
Ausnahme des Hintergrunds, eingeblendet werden, wenn der
Bildschirm zum ersten Mal erscheint Da unser derzeitiges Skript
, wenn ich
als Klonskript
anfange ,
schon ziemlich lang ist, fangen wir dafür ein neues Und hier wollen wir zuerst
sicherstellen, dass der Klon nicht
der Hintergrundklon ist. Bringen wir also
einen Wenn-Dann-Block rein. Gehen wir für die Bedingung zu Operatoren und fügen einen
Not-Block ein,
dann fügen wir einen Gleichheits-Block ein Gehen wir nun zu Looks fügen dem Block „Gleich“ einen Kostümblock
hinzu. Und lassen Sie uns überprüfen, ob nicht der
Kostümname gleich BG ist. Wenn das der Fall ist, machen
wir den Klon zunächst transparent und blenden ihn dann Dazu fügen wir zunächst einen Set-Effekt
mit zwei
Blöcken ein und setzen den
Ghost-Effekt auf 100. Warten wir nun ein bisschen,
indem wir zur Steuerung gehen, einen Warteblock einfügen
und 0,5 Sekunden warten. Um den Klon einzublenden, fügen wir einen
Wiederholungsblock ein und wiederholen den Vorgang 25 Mal. Gehen wir dann zu Looks, fügen
dem Wiederholungsblock
einen Effekt für Block hinzu und ändern den Ghost-Effekt
um minus vier. Wenn wir das Spiel jetzt starten, sehen
wir zuerst nur den Hintergrund des
Titelbildschirms, dann werden die anderen
Teile ausgeblendet. Fantastisch. Okay, jetzt müssen wir auch die
Animation der Play-Buttons zum Laufen
bringen. Bei der Animation verläuft eine
weiße Linie entlang der Schaltfläche, wodurch ein schöner glänzender Effekt entsteht. Das machen wir genauso, wenn
ich als Klonskript starte. Zunächst möchten wir
sicherstellen, dass es sich um den
Play-Button-Clone handelt und dass er
ein Play-Button-Up-Kostüm verwendet. Gehen wir also zu Control
und fügen einen In-Block hinzu. Und für die Bedingung verwenden
wir ein Duplikat des Kostümnamens, der den
Play-Button U im Bildschirmskript des
Show-Titels enthält . Wir möchten, dass
die Animation kontinuierlich läuft. Lassen Sie uns also
einen Block für immer einfügen. Der Klon beginnt mit der Play-Taste bis zum Ende des Kostüms Um das Kostüm zu animieren, können
wir uns durch
die nächsten sechs Kostüme bewegen dann wieder
mit dem ersten beginnen Fügen wir dazu für immer
einen Wiederholungsblock hinzu
und wiederholen wir
den Vorgang sechsmal Gehen wir dann zu Looks und fügen Wiederholungsblock
einen nächsten Kostümblock
hinzu. Nachdem der
Wiederholungsblock beendet ist, fügen wir einen
Switch-Kostümblock hinzu und wechseln zurück zur
Play-Taste nach oben. Und jetzt wird der
Play-Button animiert. Ich denke allerdings, dass die Animation
etwas zu früh neu gestartet wird. Um eine Verzögerung zu erzeugen, können
wir in
einem Warteblock direkt
über dem Wiederholungsblock zur Steuerung gehen einem Warteblock direkt
über dem Wiederholungsblock und 2 Sekunden warten Das ist besser. Okay, eine weitere Möglichkeit, den
Titelbildschirm zu verbessern, besteht darin den Titel hin und
her kippen zu
lassen genauso wie wir es mit dem
Titel in Cosmic Havoc getan haben Dazu müssen wir
Trigonometrie verwenden und einen Winkel angeben Gehen wir also zunächst zu Variablen und erstellen
eine Nennen wir es Winkel und machen
es nur für dieses Sprite, und wir müssen es nicht zeigen Okay, am Ende von Wenn ich als Klon-Skript starte, werden
wir überprüfen, ob es sich um
den Titelklon Gehen wir also zu Control und geben einen
Wenn-Dann-Block ein. Für die Bedingung können wir
ein Duplikat des Blocks
Kostümname entspricht BG verwenden ein Duplikat des Blocks
Kostümname entspricht BG Und überprüfe, ob es dem Titel entspricht. Als Nächstes initialisieren wir den
Winkel, indem wir zu Variablen gehen, einen Satz als Block einfügen
und den Winkel auf Null setzen In Ordnung, jetzt wollen wir, dass das
Kippen kontinuierlich erfolgt. Also lasst uns die Kontrolle übernehmen und
einen Block für immer einbauen. Um den Klon zu drehen, gehen
wir zunächst zur Bewegung und fügen einen Punkt
- und Richtungsblock hinzu. Und hier werden wir das Gleiche tun, was wir für den Titel
Cosmic Havoc getan haben Wir nehmen den Sinus des Winkels, multiplizieren ihn mit einem höheren Wert,
sodass er sich stärker dreht, und addieren dann 90 für die Okay, gehen wir also zu den
Operatoren und
platzieren zuerst einen Additionsblock innerhalb des Punkt- und
Richtungsblocks dann einen
Multiplikationsblock auf der linken Seite Lassen Sie uns nun einen
Block mit Bauchmuskeln auf die linke Seite
des Multiplikationsblocks legen und die SN-Funktion verwenden Dann gehen wir zu Variablen und machen die
Winkelsünde mal zwei plus 90. Als Nächstes müssen wir den Winkel
vergrößern. Lassen Sie uns also eine Änderung pro
Block vornehmen und den
Winkel beispielsweise um zwei ändern. Und weil sich die Sinuswerte wiederholen, wenn der
Winkel 360 erreicht, können
wir den
Winkelwert 0-359 beibehalten Und weil wir
das schon mehrmals gemacht haben,
stelle ich es
dir auch als Herausforderung vor stelle ich es
dir auch als Herausforderung Okay, um das zu tun, bringen
wir einen Block mit
festgelegtem Winkel ein. Und für die Eingabe gehen
wir zu den Operatoren und fügen
einen Mod-Block hinzu. Lassen Sie uns abschließend zu
Variablen zurückkehren und Angle Mod 360 ausführen. Wenn wir jetzt das Spiel starten, kippt
der Titel
hin und her. Der Bequemlichkeit
des Spielers halber können
wir es auch so einrichten, können
wir es auch so einrichten das Spiel
durch Drücken der Leertaste gestartet
wird. Um das zu tun, gehen wir zu den Events und bringen einen Block mit gedrückter
Leertaste rein. Und hier können wir genau
das tun, was wir im Win
This Bright-Klickskript tun:
überprüfen, ob der Kostümname die Schaltfläche „Abspielen“
enthält, dann zum Kostüm „
Abspielen“ wechseln, den Klicksound und das Startspiel übertragen. Lassen Sie uns also zuerst
alles im Drehbuch duplizieren. Entferne die anderen
beiden If Then-Blöcke und füge diesen Block in das
Win-Space-Tastendruck-Skript ein. Wenn wir nun die Leertaste auf dem Titelbildschirm drücken, starten
wir das Spiel. Okay, und noch eine letzte Sache. Wenn wir das
Pause-Overlay aufrufen, durch Klicken auf die Schaltfläche „Spiel beenden“ derzeit immer noch
das gesamte Spiel gestoppt Stattdessen können wir
den Titelbildschirm wieder aufrufen. Gehen wir dazu zunächst
zum Code für das Pause Sprite
und suchen wir
das W this
Sprite-Click-Skript Ganz unten, wenn auf die Schaltfläche zum
Beenden geklickt wird, senden
wir die Nachricht zum
Beenden des Spiels. Wir erhalten diese
Nachricht im Hintergrund, und wenn wir zum
Hintergrundcode gehen und feststellen, dass ich „Spiel beenden“
erhalte, beenden
wir derzeit
alle Skripte hier. also zunächst, anstatt alle Skripte zu
stoppen, Lassen Sie uns also zunächst, anstatt alle Skripte zu
stoppen, andere Skripte in
Sprite beenden, um die Spielschleife zu beenden Da das POS-Overlay
die Lautstärke auf 0% setzt, möchten
wir sie außerdem POS-Overlay
die Lautstärke auf 0% setzt, wieder auf 100% setzen Gehen wir also zum Sound und fügen Skript zum Beenden des Spiels
eine eingestellte Lautstärke
auf 100 Block Als Nächstes wollen wir das
Spiel von Level eins aus neu starten. Gehen wir also zu Variablen und fügen ein Set zum Blockieren hinzu. Und setze Level auf eins. Warten wir dann ein
bisschen, indem wir zu
Control gehen und
einen Warteblock von 1 Sekunde einschalten. Danach wollen wir den Titelbildschirm
aufrufen, eine weitere Sekunde
warten und die Musik erneut
starten. Gehen wir also zuerst zu den Veranstaltungen, bringen einen Broadcast-Block und den Titelbildschirm der Sendung ein. Gehen wir dann zurück zur Steuerung und fügen einen weiteren Block mit einer
Wartezeit von 1 Sekunde ein. Gehen wir abschließend zu Meine Blöcke und fügen
einen Block zum Abspielen von Musik hinzu. Okay, wenn wir das Spiel jetzt starten, sich die Musik eigentlich nicht abspielen. Das passiert, weil die
Lautstärke seit dem Zeitpunkt, als wir das POS-Overlay aufgerufen haben
, immer noch auf
0% eingestellt ist als wir das POS-Overlay aufgerufen haben
, immer noch auf
0% Um sicherzustellen, dass dies
nicht noch einmal passiert, kommen
wir zum Skript mit
grüner Flagge Dann gehen wir zum Sound und fügen eine festgelegte Lautstärke auf 100 Block
oben in den Skripten hinzu. Wenn wir das Spiel erneut ausführen, wird
die Musik gestartet. A: Wenn Sie im Pause-Overlay auf
die Schaltfläche „Spiel
beenden “ klicken wird der Titelbildschirm
zusammen mit der Musik wieder angezeigt Hervorragend. Wir haben allerdings ein
Problem. Wenn wir das Spiel spielen
und etwas Lebenspunkte verlieren, beenden
Sie das Spiel
und spielen Sie es erneut. Wir beginnen mit
weniger als der maximalen Lebenspunkte. Um das zu beheben, suchen wir
das Startskript für das Spiel. Und hier, bevor wir
das Startlevel übertragen, können
wir zu Variablen gehen, einen Satz zum Blockieren hinzufügen und die Spielergesundheit
auf maximale Spielergesundheit setzen. Dadurch wird sichergestellt, dass der Spieler zu
Beginn des Spiels immer die
maximale Gesundheit hat . Oh. Okay, wir sind jetzt
kurz davor, mit dem Spiel
fertig zu sein Im Moment,
wenn der Spieler das
Spiel zum ersten Mal spielt, jedoch nicht wissen,
dass er
alle Münzen
des aktuellen Levels sammeln muss ,
um zum nächsten Level um zum nächsten Und sie werden definitiv nicht wissen, warum sie die Münzen
einsammeln müssen. In der nächsten Lektion werden
wir also zu Beginn
des
ersten Levels eine Texteinblendung mit einigen Informationen darüber aufrufen, was
gerade passiert und was der
Spieler tun muss Und wir werden dasselbe tun, bevor der Bosskampf
im letzten Level stattfindet
124. Behebung des Green-Flag-Glitches: Bevor wir mit der
Erstellung des Text-Overlays fortfahren, gibt es eine etwas
nervige Sache , die Ihnen
beim Spielen des Spiels vielleicht aufgefallen Wenn wir auf die grüne Flagge klicken, während der
Titelbildschirm angezeigt wird, sehen
wir kurz das
Hintergrundkostüm und die
Spieler-Sprites, bevor der Hintergrund des
Titelbildschirms angezeigt wird Das verursacht keine
Probleme mit dem Spiel, ist
aber ein bisschen nervig
und es ist sehr einfach zu beheben Ich bin mir nicht ganz sicher warum, aber der Fehler wird dadurch
verursacht, dass die Lautstärke
im grünen
Flaggenskript des Hintergrunds auf 100 Block eingestellt im grünen
Flaggenskript des Hintergrunds auf 100 Block Ich denke, der Grund dafür ist, dass der Block einen
ganzen Frame benötigt, um ausgeführt zu werden Die verbleibenden Blöcke
im Skript müssen also warten,
bis der nächste Frame ausgeführt wird. Aber wie dem auch sei, um das Problem zu beheben, müssen wir nur
zu den Events gehen und ein anderes einbinden, wenn die
grüne Flagge auf Blockieren geklickt hat Verschieben Sie dann den eingestellten Lautstärkeblock in das neue Skript mit grüner Flagge Wenn Sie es in einem
eigenen Skript mit grüner Flagge platzieren wird verhindert
, dass es ,
wird verhindert
, dass es die
Blöcke im anderen beeinflusst Und jetzt wird jedes Mal, wenn wir
auf die grüne Flagge klicken
, sofort der Hintergrund des
Titelbildschirms angezeigt
125. Textüberlagerung erstellen: Um das Text-Overlay zu erstellen, verwenden
wir hier das
Text-Overlay-Sprite Aber zuerst müssen wir
dem Sprite mitteilen, wann das Display angezeigt werden soll, und das
tun wir im Jetzt möchten wir
die Textüberlagerung nicht anzeigen , wenn der
Gottmodus aktiviert ist Außerdem wollen wir es nur
zeigen, wenn der Spieler entweder das erste Level
oder das letzte Level
zum ersten Mal
startet oder das letzte Level
zum ersten Mal Wenn sie sterben und das
Level neu startet, wäre
es einfach nervig, das Text-Overlay wieder
anzuzeigen Wir werden also eine globale Variable
verwenden,
um zu speichern, ob das
Text-Overlay angezeigt werden soll oder nicht Gehen wir dazu zunächst
zu Variablen und
erstellen eine neue Nennen wir es Text anzeigen, und wir können weitermachen
und die Variable ausblenden. Wir möchten das Text-Overlay anzeigen wenn
der
Spieler Level eins zum ersten Mal startet Dies wird der Fall sein, wenn das Startskript des Spiels ausgeführt wird
und der Gottmodus ausgeschaltet ist Hier wollen wir zuerst
überprüfen, ob der Gottmodus ausgeschaltet ist, und wenn ja, setzen wir „Text
anzeigen“ auf eins. Gehen wir also zuerst zu Control und bringen einen ITN-Block
in ein leeres Feld Für die Bedingung
können wir ein Duplikat
des Blocks Good Mode entspricht
Null aus dem Skript mit
grüner Flagge verwenden des Blocks Good Mode entspricht Null aus dem Skript mit
grüner Flagge Gehen wir nun zu Variablen, fügen dem Block I thin einen Satz zwei Blöcke
hinzu und setzen showtext auf Und lassen Sie uns das alles direkt
über dem Block der
Broadcast-Startebene platzieren über dem Block der
Broadcast-Startebene Als Nächstes überprüfen wir im Start-Level-Skript, nachdem
wir eingeblendet und eine halbe Sekunde
gewartet haben, ob
showtext gleich Wenn ja, weisen wir das Text-Overlay-Sprite an, den Text anzuzeigen, indem es Nachricht Wir warten dann, bis „Text
anzeigen“ gleich Null ist,
was passiert, wenn der Spieler den Text zu Ende
gelesen hat, und beginnen
dann, die Spielschleife
laufen zu lassen Okay, also
gehen wir zuerst zu Steuerung und fügen direkt nach dem
0,5-Sekunden-Block
einen Block I dünn Und wir wollen all
diese Blöcke herausziehen und
sie an der Unterseite
des I-Thin-Blocks anbringen . Für die Bedingung gehen wir zu den Operatoren und fügen einen
Equals-Block ein Gehen wir dann zu Variablen und prüfen, ob
Text anzeigen gleich eins ist. Wenn ja, warten wir zunächst
etwas länger, indem wir zur Steuerung gehen, einen Warteblock einfügen und 0,5 Sekunden warten Gehen wir nun zu den Ereignissen, fügen einen Broadcast-Block hinzu und senden wir eine neue
Nachricht namens „Text anzeigen“. Wir wollen dann warten, bis die Show-Text-Variable Null
wird. Gehen wir also zu Control und schalten
das Warten bis zum Block ein. Und für die Bedingung verwenden
wir ein Duplikat
von Show Text entspricht einem Block und ändern es so
, dass Text gleich Null anzeigen Lassen Sie uns zum Schluss noch
einen Warteblock hinzufügen und weitere 0,5
Sekunden warten Ordnung, also wenn Sie im Startskript des Spiels Text anzeigen
auf eins setzen im Startskript des Spiels Text anzeigen
auf eins gesorgt
, dass
das Text-Overlay angezeigt wird,
wenn Level eins zum ersten Mal erscheint Aber wir wollen
dasselbe auch für das letzte Level tun. Suchen wir dazu das
Finish-Level-Skript. Und hier, nachdem wir das Level
geändert
haben, können wir überprüfen, ob es
das letzte Level ist. Dies wird der Fall sein ,
wenn der Spieler Level drei
beendet das letzte Level
zum ersten Mal
startet. Also müssen wir dann das Text-Overlay
anzeigen. Okay, lassen Sie uns zuerst einen
Wenn-und-Block in einen
leeren Bereich bringen Wenn-und-Block in einen
leeren Bereich Was die Bedingung angeht,
wollen wir überprüfen, ob es
das letzte Level ist, und wir wollen auch sichergehen, dass der
Gottmodus nicht aktiviert ist. Gehen wir also zu den Operatoren und
fügen zuerst einen AND-Block ein. Verwenden Sie dann für jede Seite einen
Gleichheitsblock. Gehen wir nun zu Variablen
und prüfen wir, ob Level
gleich Endlevel
und Good Mode gleich Null ist und Good Mode gleich Wenn ja, fügen wir einen Satz zum
Blockieren hinzu und setzen den Wert für „Text anzeigen“ auf Okay, jetzt fügen wir das alles in
das Finish-Level-Skript ein, bevor
das I-Level größer ist
als der Final-Level-Block Und um zu vermeiden, dass
all diese Skripte neu organisiert werden müssen, werde
ich diesen kleinen
Block in zwei verschachtelte,
wenn dünne Blöcke umwandeln Um das zu tun, gehe ich
zu Control und lege
einen neuen Block vom Typ Ich dünn um
den eingestellten Show-Textblock Dann verwende ich hier den Gott-Modus , der
gleich Nullblock ist,
für die Bedingung Jetzt werde ich hier
den Block Level gleich Final
Level herausziehen , loswerden
und nur den Block Level
gleich Final Level
als Bedingung verwenden gleich Final Level
als Und jetzt muss ich nur noch
diese Skripte hierher verschieben. Okay, jetzt können wir in
das Text-Overlay-Sprite gehen das Text-Overlay-Sprite und
das Text-Overlay tatsächlich erstellen Schauen wir uns zunächst die Kostüme
an. Das Text-Overlay wird
dem Pis-Overlay sehr ähnlich sein , mit einem schwarzen BG-Kostüm, das teilweise
durchsichtig wird, sowie einem Panel-Kostüm,
das wir als Container verwenden werden Wir haben auch eine Schaltfläche „
Weiter“, die der Spieler klicken kann, um
den nächsten Text anzuzeigen. Wir haben dann drei
Starttext-Kostüme, die wir für
den Text in Level eins verwenden werden, und wir haben zwei endgültige
Textkostüme für das letzte Level. Okay, und um mit
der Codierung der Text-Overlay-Sprites zu beginnen, ziehen
wir sie zunächst im Sprite-Bereich eine
Zeile nach oben Gehen wir dann zum
Pase-Sprite-Code und kopieren einige Skripte. Lassen Sie uns zunächst das
Sort- und Layer-Skript kopieren. Wenn ich dann als Klon anfange, für das Setup-Skript nur, wollen
wir
für das Setup-Skript nur, dass der
Name des Kostüms, wenn nicht, Leerzeichen enthält. Lassen Sie uns abschließend das Skript mit
der grünen Flagge kopieren. Kehren Sie dann zu den
Text-Overlay-Sprites zurück. Wenn ich
als Klon-Skript anfange, wollen
wir hier nur die Blöcke
im TS-Teil Lassen Sie uns sie herausziehen, den I Thins-Block
loswerden und die Blöcke
an das Skript anhängen. Also verwenden wir Overlay Z
beim Sortieren der Klone. Wir lassen sie
zunächst versteckt beginnen und wir machen den BG-Klon
teilweise transparent Okay, jetzt im Setup-Skript machen
wir weiter und
erstellen alle Klone. Dann werden wir sie nach Bedarf ein- und
ausblenden. Wir beginnen mit der Erstellung
des Textklons. Gehen wir also zu Looks, einen Wechselkostümblock und verwenden als Standardkostüm den Starttext
Null, um den Klon zu positionieren, gehen
wir zur Bewegung über, bringen einen Go-to-XY-Block hinein und verwenden wir Null
für X und Zehn für Y. Dann erstellen wir den
Klon, indem wir zu
Steuerung gehen und einen Block zum
Erstellen eines Klons von mir selbst Als Nächstes erstellen wir
die Schaltfläche „Weiter“. Zunächst können wir
die drei Blöcke hier duplizieren. Dann wechseln wir zum
Continue-Button-Kostüm. Für die Position
nehmen wir 135 minus 45. Als nächstes kommt das Panel. Lassen Sie uns die
unteren drei Blöcke duplizieren. Wechsle zum
Panel-Kostüm und gehe zu 00. Lassen Sie uns zum Schluss für den Hintergrund noch einmal duplizieren, zu BG
wechseln, und wir
wollen diesen auch bei 00 haben. Stellen wir außerdem sicher
, dass wir zurück
zum leeren Kostüm wechseln ,
indem wir zu Looks gehen, einen weiteren
Switch-Kostümblock einfügen und zu Blink wechseln Ordnung. Jetzt
zeigen wir die Klone wann immer sie
die Show-Textnachricht erhalten Gehen wir also zu den Ereignissen,
bringen einen Block W, den ich erhalten habe, in leeres Feld und
erhalten den Anzeigetext Lassen Sie uns
zunächst sicherstellen, dass wir uns entweder auf der ersten
oder der letzten Ebene befinden. Andernfalls setzen wir einfach
die Variable show text auf Null und beenden das Skript ,
sodass das Level wie gewohnt beginnen
kann. Um all das zu tun, gehen
wir zuerst zu Control und fügen dann ein I hinzu, dann Block. Gehen
wir für die Bedingung zu Operatoren,
fügen einen Nicht-Block ein, dann einen Oder-Block und fügen dann auf jeder Seite einen
Gleichheits-Block Gehen wir nun zu Variablen
und prüfen wir, ob Level
nicht gleich
eins oder Level gleich Endstufe ist eins oder Level gleich Endstufe Wenn dies der Fall ist, fügen wir einen Satz zum Blockieren hinzu
und setzen den Anzeigetext auf Null Dann gehen wir zu Control, fügen einen Stopblock hinzu
und beenden dieses Skript Und wenn wir uns entweder im
ersten oder letzten Level befinden, wollen
wir als Erstes
den Klon zeigen Gehen wir also zu Looks und fügen am Ende des Skripts
einen Show-Block hinzu. Wenn wir das Spiel jetzt starten und
auf die Play-Schaltfläche klicken, nach etwa einer Sekunde erscheint
nach etwa einer Sekunde
das Text-Overlay Wenn wir zu
Level zwei oder drei wechseln, erhalten
wir keine Texteinblendung Und wenn wir zu Stufe vier wechseln, bekommen
wir es, aber es wird der falsche Text
verwendet Um das zu korrigieren und wenn
ich
nach dem Zeigen des Klons einen Show-Text erhalte , wollen
wir überprüfen, ob es sich um
den Textklon handelt, und wenn ja, werden
wir das Kostüm vom aktuellen Level
abhängig machen. Gehen wir dazu zunächst zu Control und fügen einen ITN-Block ein Um zu überprüfen, ob es sich um den Textklon handelt, können
wir zu Operatoren gehen und einen
Contains-Block als Bedingung verwenden Gehen Sie dann zu Looks, verwenden Sie einen Kostümblock
als erste Eingabe
und überprüfen Sie, ob der Kostümname das Wort Text
enthält. Wenn ja, wollen wir überprüfen, ob wir uns auf der ersten
oder der letzten Ebene befinden. Gehen wir also zu Control und fügen
einen I und dann S Block ein. Für die Bedingung verwenden wir ein Duplikat des Levels, das einem Block von hier oben
entspricht Gehen wir jetzt zu Looks und fügen jedem Teil einen
Switch-Kostümblock hinzu Für den I-Teil
wechseln wir zum
Starttext-Nullkostüm. Und für die TS-Teile gehen
wir zum Endtext Null über. Und jetzt
zeigt das erste Level
immer noch den Text „Du bist
auf einem unbekannten Planeten gefangen“. Aber das letzte Level
beginnt jetzt mit NadnartKs
für die Münzen Ordnung, jetzt
müssen wir nur noch
die Schaltfläche „Weiter“ zum Laufen bringen , damit der Spieler
den nächsten Text lesen kann Um das zu tun, suchen wir uns
ein leeres Feld. Gehen Sie dann zu den Events und gewinnen
Sie diesen Block, auf den
Sprite geklickt hat Und hier wollen wir zuerst
überprüfen, ob es sich um den Clone der Schaltfläche
Weiter Gehen wir also zur Steuerung und
fügen einen ITN-Block ein. Für die Bedingung können wir
ein Duplikat eines Blocks mit dem Namen des
Kostüms verwenden . Und überprüfe, ob es der Unterstrichtaste
„Weiter“ entspricht. Wenn ja, warten wir zunächst, bis der Spieler die Maus nicht mehr
drückt Lassen Sie uns also eine
Wartezeit bis zum Block einbauen. Für die Bedingung gehen wir zu den Operatoren und bringen einen Kblock rein Gehen Sie dann zu Sensing und fügen Sie
einen Mousedown-Block hinzu. Danach
senden wir eine Nachricht. Gehen wir also zu den Ereignissen, fügen einen Broadcast-Block hinzu und senden wir eine neue
Nachricht namens Continue-Text. Der Einfachheit halber können
wir den Text jetzt auch
fortsetzen, wenn der
Spieler die Leertaste drückt. Lassen Sie uns dazu eine
WindSpaceKey einbauen und auf Block drücken. Dann fügen wir ein Duplikat des ITN-Blocks aus dem Moment hinzu, als Anstatt zu warten, bis die
Knot-Maus gedrückt ist, wollen
wir zur Erkennung übergehen und
warten, bis die Knot-Taste Ein Problem dabei
ist jedoch, dass das Skript auch nach dem
Ausblenden der Texteinblendung durch Drücken der Leertaste ausgeführt wird Bevor wir das tun, können
wir also zunächst überprüfen, ob die
Textüberlagerung sichtbar ist Dies ist der Fall, wenn die Variable
show text eins ist. Gehen wir zu Steuerung und
setzen einen
Wenn-Dann-Block um den Block I, Kostümname entspricht Weiter Gehen wir für die Bedingung zu Operatoren und fügen dort einen
Gleichheitsblock ein Gehen wir dann zu Variablen und prüfen, ob
Text anzeigen gleich eins ist. Dadurch wird sichergestellt, dass
diese Blöcke
nur ausgeführt werden , wenn die
Textüberlagerung sichtbar ist Okay? Jetzt müssen wir uns um
die weitere Textnachricht kümmern. Gehen wir also zu den Ereignissen, starten wir ein anderes, wenn ich
Skripte erhalte und
weiterführenden Text erhalte. Und hier stellen wir zunächst
sicher, dass es sich um den Textklon handelt. Dann blenden wir den Klon aus, wechseln zum nächsten Kostüm
und blenden den Klon wieder ein. Gehen wir also zuerst zu Control
und fügen einen ITN-Block ein. Für die Bedingung
können wir ein Duplikat des
Textblocks „Name
des Kostüms enthält“ aus dem Moment verwenden Name
des Kostüms enthält , an dem
ich Text anzeigen erhalte Als Nächstes fügen
wir, um den Klon auszublenden, einen Block mit zehn
Wiederholungen ein. Gehen wir dann zu Los
, um den Effekt von Block zu Block zu ändern
und den Ghost-Effekt um zehn zu ändern. Nachdem der
Wiederholungsblock beendet ist, wechseln
wir
zum nächsten Kostüm. Lasst uns also einen
nächsten Kostümblock reinbringen. Schließlich blenden wir
den Klon wieder ein. Dazu können wir
den Wiederholungsblock duplizieren. Werde den zusätzlichen
nächsten Kostümblock los, lege den Wiederholungsblock nach
dem nächsten Kostümblock
hier rein und ändere den
Geistereffekt um minus zehn. Und wenn wir das Spiel jetzt starten, können
wir auf die Schaltfläche
Weiter klicken oder
die Leertaste drücken , um mit dem nächsten Text fortzufahren
. Im Moment
ändert sich
der Text jedoch ständig, der Text jedoch ständig bis wir
zum leeren Kostüm zurückkehren. Dann passiert nichts. Wir wollen also, dass,
wenn der Spieler beim letzten Textstück
des aktuellen Levels auf
Weiter klickt letzten Textstück
des aktuellen Levels auf
Weiter , die Texteinblendung ausblenden Dazu
müssen wir verfolgen, welchen Text der
Spieler gerade liest wie viele
Textteile das aktuelle Level hat Also müssen wir zuerst zu
Variablen gehen und
ein paar neue erstellen. für die gesamten Textteile Lassen Sie uns für die gesamten Textteile eine Variable namens
Textstücke erstellen und sie nur
für dieses Sprite Und für das aktuelle Textstück erstellen
wir ein weiteres, nennen es Textindex und machen es auch nur für
dieses Sprite Und lassen Sie uns beide Variablen verstecken. Um die Variablen festzulegen, lassen Sie uns herausfinden, wann ich
einen Show-Text erhalte. Zuerst fügen wir oben im Textblock „Ich
kostümname enthält“ einen Block vom Typ „
Satz zwei “ hinzu. Und lassen Sie uns den Textindex auf eins setzen. Als Nächstes
wird der Wert der Textteile je nach Ebene unterschiedlich sein. Fügen wir also zwei Blöcke zu jedem Teil der
I-Ebene hinzu, was einem Block entspricht Für die erste Ebene setzen wir die
Textteile auf drei und
für die letzte Ebene auf zwei Als Nächstes, und wenn ich
weiteren Text erhalte , bevor
ich zum nächsten Kostüm wechsle, erhöhen
wir den
Textindexwert. Wir prüfen dann, ob der Wert für die Textteile
überschritten wurde . Ist dies der Fall, werden wir
die Texteinblendung ausblenden. Andernfalls wechseln wir
weiter zum nächsten Kostüm und
blenden den Sprite Okay,
lassen Sie uns zunächst eine Änderung
für Block über dem
nächsten Kostümblock hinzufügen Block über dem
nächsten Kostümblock und den
Textindex um eins ändern Gehen wir jetzt zu Control und fügen einen
Wenn-Dann-S-Block ein. Wir wollen den
nächsten Kostümblock und alles, was sich darunter befindet
, in die TS-Teile verschieben. Für den Zustand gehen wir zu Operatoren und fügen
einen Block mit dem Namen „Mehr als“ hinzu. Gehen wir dann zu
Variablen und prüfen, ob Textindex größer ist
als die von Textteilen. Wenn ja, wollen wir alle
Text-Overlay-Klone ausblenden. Dazu
senden wir eine Nachricht. Gehen wir also zu den Ereignissen und
fügen einen Broadcast-Block hinzu und senden wir eine neue
Nachricht namens Hide Text. Ordnung, jetzt müssen wir uns nur noch um die hohe Textnachricht
kümmern. Also fangen wir
neu an, wenn ich
Skripte erhalte und versteckte Texte erhalte. Und hier gehen wir zu Looks
und fügen einen Versteckblock hinzu. Wenn wir nun das Spiel starten und den Text
in der Textüberlagerung
durchgehen, sobald der letzte
Text für das Level erreicht ist,
klicken wir erneut auf Weiter, um die Texteinblendung zu
schließen, aber das Level startet nicht
wirklich Das liegt daran, dass wir
die Variable „Text anzeigen“ nicht auf Null gesetzt haben die Variable „Text anzeigen“ nicht auf Das tun wir, wenn ich
vor der Übertragung von High-Text
Continue-Text
erhalte ,
indem wir zu Variablen wechseln, einen Satz auf Blockieren einfügen und Text anzeigen auf Null setzen. Das Level sollte jetzt beginnen nachdem die
Texteinblendung verschwunden ist. wir sicher, dass es auch auf Stufe
vier
richtig funktioniert auch auf Stufe
vier
richtig Hervorragend. Und damit sind
wir offiziell fertig mit Glims Abenteuer und diesem Kurs Also herzlichen Glückwunsch und wir sehen uns beim Abschluss
des Kurses
126. Wir gratulieren!: Herzlichen Glückwunsch zum Abschluss
des Scratch Saga-Kurses. Du hast einen langen
Weg zurückgelegt, vom Erlernen der Grundlagen von
Scratch bis hin zur Entwicklung drei vollständigen Spielen und dem Erlernen grundlegender Fähigkeiten in den Bereichen
Programmieren und Spieledesign Ich hoffe, du bist zuversichtlich
,
deine eigenen Ideen zum Leben erwecken zu können, und stolz auf die
Projekte, die du geschaffen hast Mit den Fähigkeiten und Techniken , die Sie in diesem Kurs erworben haben, sind
Sie bereit, weiter kreativ zu sein. Mit Scratch kannst du
weiter Spiele entwickeln, mit
neuen Mechaniken
experimentieren
oder sogar
deine Projekte mit
der Scratch-Community teilen, oder sogar
deine Projekte mit
der Scratch-Community teilen um
Feedback zu erhalten und andere zu inspirieren Jedes Projekt, das du von hier aus in Angriff
nimmst wird dein Verständnis vertiefen
und neue Ideen hervorbringen Denken Sie daran, dass jeder großartige
Spieleentwickler irgendwo anfängt und dass Sie hier einige
der wichtigsten
Schritte unternommen haben hier einige
der wichtigsten
Schritte Danke, dass du
mich auf dieser Reise begleitet hast. Programmieren Sie weiter, bleiben Sie kreativ
und, was noch wichtiger ist, haben
Sie weiterhin Spaß damit. Ich kann es kaum erwarten, die
Spiele zu sehen, die du als Nächstes kreierst. Viel Spaß beim Programmieren.