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]