Scratch-Saga: Eine Reise in die Spieleentwicklung | Brandon Grant | Skillshare
Suchen

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Scratch-Saga: Eine Reise in die Spieleentwicklung

teacher avatar Brandon Grant, Game Developer and Graphic Designer

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Willkommen!

      1:54

    • 2.

      Erste Schritte mit dem Neuen

      3:45

    • 3.

      Der Scratch-Editor

      10:06

    • 4.

      Die Bausteine von Neuem

      27:58

    • 5.

      Klone und Variablen

      20:05

    • 6.

      Einführung in ein paar Moles

      0:50

    • 7.

      Den Hammer-Sprite zeichnen

      11:26

    • 8.

      Code für den Hammer-Sprite

      14:42

    • 9.

      Hintergrund zeichnen

      5:27

    • 10.

      Maulwurfkostüme zeichnen

      13:28

    • 11.

      Mole-Sprite animieren

      6:31

    • 12.

      Ebenen bearbeiten

      3:11

    • 13.

      Schlage die Maulwürfe

      11:30

    • 14.

      Smacking verbessern

      8:12

    • 15.

      Hit-Effekte hinzufügen

      3:57

    • 16.

      Das Pow-Sprite erstellen

      15:23

    • 17.

      Variablen Listen verwenden

      9:40

    • 18.

      Die Pow-Klone reparieren

      4:49

    • 19.

      Punktewerte

      3:14

    • 20.

      Einen Countdown-Timer hinzufügen

      7:42

    • 21.

      Ein Spiel über den Bildschirm hinzufügen

      17:38

    • 22.

      Neustart des Spiels

      7:40

    • 23.

      Die Maulwürfe beenden

      4:52

    • 24.

      Schwierigkeitsgrad erhöhen

      6:35

    • 25.

      Aufpeppen der Punktzahl

      20:41

    • 26.

      Score-Fehler beheben

      4:17

    • 27.

      Timer aufpeppen

      7:42

    • 28.

      Fliegende Sterne hinzufügen

      7:56

    • 29.

      Soundeffekte hinzufügen

      6:35

    • 30.

      Einführung in das kosmische Chaos

      1:16

    • 31.

      Erstes Setup

      1:43

    • 32.

      Spielerkostüme zeichnen

      7:07

    • 33.

      Spieler bewegen

      19:18

    • 34.

      Spielerbewegungen glätten

      6:08

    • 35.

      Umfassende Umgebung implementieren

      5:23

    • 36.

      Laser erstellen

      11:22

    • 37.

      Asteroiden-Kostüme zeichnen

      2:43

    • 38.

      Die Asteroiden entstehen

      13:05

    • 39.

      Die Asteroidenbewegung verbessern

      15:00

    • 40.

      Asteroiden abschießen

      7:22

    • 41.

      Asteroiden gesund werden

      5:36

    • 42.

      Asteroiden aufteilen

      8:18

    • 43.

      Explosionsblitze hinzufügen

      10:24

    • 44.

      Partikeleffekte hinzufügen

      18:42

    • 45.

      Den Player zerstören

      13:21

    • 46.

      Eine Player-Hitbox erstellen

      4:49

    • 47.

      Die Schubflamme erstellen

      15:51

    • 48.

      Die Pickup-Kostüme zeichnen

      8:09

    • 49.

      Auslösen der Pickups

      11:36

    • 50.

      Das Laser-Powerup erstellen

      8:33

    • 51.

      Das Schild erstellen

      14:26

    • 52.

      Die Bombe erstellen

      9:58

    • 53.

      Die Stift-Erweiterung verwenden

      11:15

    • 54.

      Die Sterne erstellen

      8:51

    • 55.

      Die Sterne animieren

      14:29

    • 56.

      Punktzahl halten

      14:54

    • 57.

      Start-Button erstellen

      20:46

    • 58.

      Das Logo erstellen

      20:05

    • 59.

      Spielerkostüme wechseln

      25:15

    • 60.

      Höchstpunktzahl verfolgen

      24:46

    • 61.

      Sounds und Musik hinzufügen

      12:21

    • 62.

      Audio-Toggles erstellen

      14:36

    • 63.

      Audio-Toggling implementieren

      19:43

    • 64.

      Glim's Abenteuer Einführung

      1:09

    • 65.

      Starterprojekt laden

      14:09

    • 66.

      Spielschleife und Steuerung

      7:43

    • 67.

      Spielerbewegungen hinzufügen

      6:30

    • 68.

      Schwerkraft hinzufügen

      3:57

    • 69.

      Lass den Spieler springen

      10:04

    • 70.

      Laufen auf dem Niveau

      9:19

    • 71.

      Mehr Ebenenkollisionen

      12:25

    • 72.

      Die Player-Hitbox verwenden

      5:28

    • 73.

      Fehlerbehebung und Coyote-Zeit

      3:50

    • 74.

      Idle- und Walk-Animationen

      17:09

    • 75.

      Sprung-, Fall- und Landanimationen

      7:41

    • 76.

      Lass den Spieler hocken

      6:16

    • 77.

      Gleiten auf Hanglagen

      26:13

    • 78.

      Gleiten an Wänden

      15:53

    • 79.

      Auf Wänden springen

      12:33

    • 80.

      Levels generieren

      26:34

    • 81.

      Scrollen einer Ebene

      14:28

    • 82.

      Das Scrollen verbessern

      15:48

    • 83.

      Einige Fehler beheben

      4:51

    • 84.

      Ein Level neu starten

      10:54

    • 85.

      Stufen wechseln

      11:41

    • 86.

      Umgebungsobjekte hinzufügen

      5:00

    • 87.

      Ebenen sortieren

      20:25

    • 88.

      Einen scrollenden Hintergrund erstellen

      25:31

    • 89.

      Etwas Flüssigkeit hinzufügen

      7:25

    • 90.

      Gottmodus aktivieren

      18:32

    • 91.

      Münzen hinzufügen

      11:58

    • 92.

      Münzen sammeln

      8:28

    • 93.

      Ein Level verlassen

      21:46

    • 94.

      Automatisches Scrolling implementieren

      10:36

    • 95.

      Einen Bildschirmübergang erstellen

      8:14

    • 96.

      Schlösser und Schlüssel hinzufügen

      19:54

    • 97.

      Die Schnecke als Feind hinzufügen

      21:04

    • 98.

      Bounce den Player

      14:28

    • 99.

      Verletzt werden

      13:27

    • 100.

      Töten des Spielers

      8:05

    • 101.

      Den Player neu beleben

      21:51

    • 102.

      Die Biene als Feind hinzufügen

      17:18

    • 103.

      Fliegenfeind hinzufügen

      4:37

    • 104.

      Den Fischfeind hinzufügen

      20:51

    • 105.

      Jump-Pads hinzufügen

      16:16

    • 106.

      Den Steigungsrutsche-Effekt erstellen

      15:00

    • 107.

      Staubpartikel erstellen

      11:09

    • 108.

      Spiel pausieren

      10:30

    • 109.

      Das Pause-Overlay erstellen

      12:48

    • 110.

      Herzdisplay erstellen

      9:52

    • 111.

      Münzdisplay erstellen

      8:58

    • 112.

      Einrichten des Chefs

      11:15

    • 113.

      Lass den Chef fliegen

      21:46

    • 114.

      Raketen abschießen

      14:58

    • 115.

      Suche nach dem Player

      14:08

    • 116.

      Schlage den Spieler

      11:44

    • 117.

      Raketenexplosionen hinzufügen

      6:28

    • 118.

      Den Chef verletzen

      13:02

    • 119.

      Das Spiel gewinnen

      4:23

    • 120.

      Die Boss Health Bar erstellen

      9:50

    • 121.

      Sounds hinzufügen

      16:11

    • 122.

      Musik hinzufügen

      9:05

    • 123.

      Titelbildschirm erstellen

      30:54

    • 124.

      Behebung des Green-Flag-Glitches

      1:29

    • 125.

      Textüberlagerung erstellen

      23:23

    • 126.

      Wir gratulieren!

      1:06

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

11

Teilnehmer:innen

--

Projekt

Über diesen Kurs

Entfessle deine Kreativität und lerne Programmieren durch die Spieleentwicklung mit Scratch Saga: Eine Reise in die Spieleentwicklung! Dieser Kurs richtet sich an Anfänger, junge Programmierer und alle, die sich für Gamedesign interessieren. Mein Name ist Brandon und ich werde dich in diesem Schritt-für-Schritt-Kurs begleiten, in dem wir drei komplette Spiele in Scratch erstellen, jedes spannender und komplexer als das vorherige. Sie lernen, wie Sie Ihre Ideen auf unterhaltsame und interaktive Weise umsetzen können – keine Vorkenntnisse erforderlich!

Was du lernen wirst

In Scratch Saga sammelst du praktische Erfahrungen in der Spieleentwicklung und lernst wichtige Programmierkonzepte kennen. Hier ist, was du auf dem Weg dorthin meisterst:

  • Scratch-Grundlagen: Verstehe die blockbasierte Benutzeroberfläche von Scratch und lerne, wie du die Tools zum Programmieren, Entwerfen und Animieren verwendest.

  • Programmiergrundlagen: Grundlagen wie Schleifen, Variablen, Bedingungen und Event-Handling in einem visuellen, leicht verständlichen Format.

  • Charakter- und Sprite-Design: Erstelle und passe Figuren und Objekte an, um die Geschichte und die Interaktionen deines Spiels zum Leben zu erwecken.

  • Animationen und Bewegungen: Lerne, wie du Figuren animierst, flüssige Bewegungen hinzufügst und das Gameplay mit dynamischen Interaktionen verbesserst.

  • Spielmechanik: Implementiere Spielmechaniken wie Punkte, Leveling, und Siegbedingungen, um deinen Spielen klare Ziele und Herausforderungen zu geben.

  • Problemlösung und Fehlerbehebung: Geht auf häufige Programmierprobleme ein und lernt, wie du Fehler in deinem Code identifizierst, behoben und beheben kannst.

  • Game-Design-Prinzipien: Entdecke, was Spaß an einem Spiel macht, wie du Herausforderung und Spielbarkeit in Einklang bringst und wie du die Spieler motivieren kannst.

Kurs-Highlights

Am Ende von Scratch Saga hast du drei voll funktionsfähige Spiele erstellt, ein solides Verständnis von Programmierung und Spieldesign erworben und die Fähigkeiten entwickelt, um deine eigenen Spielideen zum Leben zu erwecken. Außerdem bist du bereit, deine Projekte mit anderen zu teilen oder in fortgeschrittene Programmierung einzutauchen!

Mach dich bereit für die Reise in die Spieleentwicklung – trete noch heute bei Scratch Saga ein und erstelle Spiele von Grund auf!

Triff deine:n Kursleiter:in

Teacher Profile Image

Brandon Grant

Game Developer and Graphic Designer

Kursleiter:in
Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

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.