Aus Das deutschsprachige Scratch-Wiki
Wandspringen ist eine Technik, die in Scratch verwendet wird, um Figuren von Wänden abprallen zu lassen. Dies ermöglicht es einer Figur in einem Projekt zum Beispiel, große Höhen von Wänden zu erklimmen, anstatt über einzelne Abschnitte wie Treppen zu springen. Diese Technik wird häufig in Platformern verwendet.
Methode
Dies ist eine Methode, wie Wandspringen funktioniert. Drei Variablen werden für diese Methode benötigt:
(L-Geschwindigkeit)
- Die Geschwindigkeit des Spielers nach Links(R-Geschwindigkeit)
- Die Geschwindigkeit des Spielers nach Rechts(Y-Geschwindigkeit)
- Die Geschwindigkeit des Spielers auf der Y axis
Danach sollte ein Spieler-Figur erstellt werden. Dies ist die Figur, die alle Bewegungen ausführt und an die Wand springt. Ein Beispiel für eine Spielerfigur ist unten abgebildet:
Die Farben auf jeder Seite des Quadrats sind die Sensoren, mit denen "gefühlt" wird, welche Seite der Wand und des Bodens relativ zur Figur ist. Mit einer komplizierteren Umsetzung wären keine Farben erforderlich.
Es werden dann zwei separate Skripte benötigt, eines für die Bewegung und eines für die Erkennung der Wände:
Wenn die grüne Flagge angeklickt setze [R-Geschwindigkeit v] auf [0] setze [L-Geschwindigkeit v] auf [0] wiederhole fortlaufend falls <Taste (Pfeil nach rechts v) gedrückt?> , dann ändere [R-Geschwindigkeit v] um (1) end falls <Taste (Pfeil nach links v) gedrückt?> , dann ändere [L-Geschwindigkeit v] um (1) end falls <Taste (Pfeil nach oben v) gedrückt?> , dann falls <Farbe [#0000FF] berührt [#000000] ?> , dann setze [Y-Geschwindigkeit v] auf [20] sende (Springen v) an alle end end falls <nicht <Farbe [#0000FF] berührt [#000000] ?>> , dann ändere y um (-5) end falls <Farbe [#FF0000] berührt [#000000] ?> , dann setze [Y-Geschwindigkeit v] auf [0] setze [R-Geschwindigkeit v] auf [0] falls <nicht <<Farbe [#0000FF] berührt [#000000] ?> oder <Taste (Pfeil nach oben v) gedrückt?>>> , dann warte (0.5) Sekunden falls <Taste (Pfeil nach oben v) gedrückt?> , dann setze [Y-Geschwindigkeit v] auf [20] sende (Springen v) an alle end setze [L-Geschwindigkeit v] auf [10] end end falls <Farbe [#00FF00] berührt [#000000] ?> , dann setze [Y-Geschwindigkeit v] auf [0] setze [L-Geschwindigkeit v] auf [0] falls <nicht <<Farbe [#0000FF] berührt [#000000] ?> oder <Taste (Pfeil nach oben v) gedrückt?>>> , dann warte (0.5) Sekunden falls <Taste (Pfeil nach oben v) gedrückt?> , dann setze [Y-Geschwindigkeit v] auf [20] sende (Springen v) an alle end setze [R-Geschwindigkeit v] auf [10] end end ändere x um (R-Geschwindigkeit) ändere x um ((0) - (L-vel)) ändere [R-Geschwindigkeit v] um ((R-Geschwindigkeit) * (-0.2)) ändere [L-Geschwindigkeit v] um ((L-Geschwindigkeit) * (-0.2)) end
![]() |
Die Farbe Schwarz kann je nach der Farbe der Wand- und Bodenfigur geändert werden, aber der Boden und die Wände müssen dieselbe Farbe haben. |
Und eine zum Springen:
Wenn ich [Springen v] empfange wiederhole (10) mal falls <Farbe [#FFFF00] berührt [#000000] ?> , dann setze [Y-Geschwindigkeit v] auf [0] stoppe [dieses skript v] end ändere y um (Y-Geschwindigkeit) ändere [Y-Geschwindigkeit v] um (-1) end setze [Y-vel v] auf [0]
Es gibt noch eine andere Möglichkeit, dies zu tun. Es wird nur eine Variable benötigt:
(Geschwindigkeit)
- Die Geschwindigkeit der horizontalen Bewegung des Spielers.
Wenn die grüne Flagge angeklickt wiederhole fortlaufend falls <Taste (Pfeil nach links v) gedrückt?> , dann ändere [Geschwindigkeit v] um (-1) end falls <Taste (Pfeil nach rechts v) gedrückt?> , dann ändere [Geschwindigkeit v] um (1) end falls <nicht <wird (Boden v) berührt?>> , dann ändere y um (-10) end falls <Taste (Pfeil nach oben v) gedrückt?> , dann ändere y um (60) end ändere y um (1) ändere x um (Geschwindigkeit) falls <wird (Boden v) berührt?> , dann ändere x um ((0) - (Geschwindigkeit)) falls <Taste (Pfeil nach oben v) gedrückt?> , dann ändere y um (60) ändere x um ((0) - (Geschwindigkeit)) end ändere y um (-1) setze [Geschwindigkeit v] auf ((Geschwindigkeit) * (0.75)) end end
Methode 2
Eine einfachere Methode verwendet ein sehr einfaches Skript. Die Figur kann eine beliebige Farbe haben, und es wird kein Geschwindigkeits-Skript benötigt. Grau sollte die Farbe der Wände sein.
Wenn die grüne Flagge angeklickt setze [wandsprung v] auf (0) wiederhole fortlaufend falls <<<nicht <wird Farbe [#000000] berührt?>> und <wird Farbe [#444444] berührt?>> und <<Taste (Leertaste v) gedrückt?> oder <Taste (Pfeil nach oben v) gedrückt?>>> , dann falls <nicht <(wandsprung) = (1)>> , dann setze [wandsprung v] auf (1) wiederhole (10) mal ändere y um (15) end warte bis <Farbe [#0000FF] berührt [#000000] ?> setze [wandsprung v] auf (0) end end end
Ein weiteres Skript wird für Bewegung der Figur benötigt:
Wenn die grüne Flagge angeklickt wiederhole fortlaufend falls <Taste (Pfeil nach links v) gedrückt?> , dann ändere x um (-4) end falls <Taste (Pfeil nach rechts v) gedrückt?> , dann ändere x um (4) end falls <<Taste (Leertaste v) gedrückt?> und <Farbe [#0000FF] berührt [#000000] ?>> , dann wiederhole (10) mal ändere y um (15) end end falls <nicht <Farbe [#0000FF] berührt [#000000] ?>> , dann ändere y um (-7) end falls <Farbe [#FFFF00] berührt [#000000] ?> , dann ändere y um (-8) end end
Beispiele
- Wandsprung Engine (dieses Skript wurde in diesem Artikel benutzt)
Siehe auch
[wiki=de:Wandsprung]Wandsprung[/wiki]