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:
Wall Jumping Sprite.png

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

Information icon.png Information: 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

Siehe auch


Code zum Einbinden ins Forum:
[wiki=de:Wandsprung]Wandsprung[/wiki]
Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.