Scratch side scroller programmieren?

3 Antworten

Verstehst du das Konzept dahinter soweit, dass sich nicht das Spielerobjekt bei Druck der rechten Pfeiltaste nach rechts bewegt, sondern stattdessen das Spielerobjekt unbewegt bleibt und sich stattdessen der Hintergrund sowie alle anderen Objekte nach links bewegen?

Wenn ja: Wobei bräuchtest du sonst Hilfe?

AdrianKamberi 
Fragesteller
 25.11.2020, 14:17

ich wollte nach eine Idee fragen wie man das denn umsetzt weil ich mir nicht vorstellen kann wie das umsetzbar wäre

0
ShinyArmageddon  25.11.2020, 14:24
@AdrianKamberi

Die anspruchsvollste, aber dafür auch effizienteste Variante, wäre folgende:

Weise jedem Objekt (inkl. Hintergrund) eine x-Position (ich nenne die jetzt mal x_Objekt1, x_Objekt2 usw.) zu.

Das bedeutet, dass ein Objekt 1 mit x_Objekt1=100 genau 400 Einheiten weiter links ist, als ein Objekt 2 mit x_Objekt2=500.

Nun erstellst du eine Variable x_Spieler. Diese ist standardmäßig auf 0 und wird beim Druck der Pfeiltaste nach links verringert, bei Druck der rechten Pfeiltaste erhöht.

Jetzt kannst du das Objekt Z auf dem Bildschirm bei der x-Position = x_ObjektZ minus x_Spieler anzeigen.

Natürlich müssen Objekte außerhalb des Bildschirmes versteckt werden. Standardmäßig geht der Bildschirm/die Bühne bei Scratch von x=-240 bis x=240.

Wenn also

x_ObjektZ minus x_Spieler plus Breite_Objektkostüm_nach rechts < -240

oder

x_Objekt minus x_Spieler minus Breite_Objektkostüm_nach_links > 240

gilt, dann ist das Objekt außerhalb des Bildschirmes, dann kann man es verstecken. Ansonsten wird es angezeigt.

[Info: Ich weiß nicht genau wie das bei Scratch ist. Wenn du ein Objekt nach rechts schickst, dann bleibt das am Rand hängen und verlässt den Bildschirm nicht wirklich, oder? Das wäre natürlich problematisch; bei Byob (im Prinzip eine Art Scratch) kann man das nämlich ausstellen, was ich dort auch immer mache.]

1

Zwar sehr spät, aber ich helfe jedem. Der Hintergrund muss eine eigene Figur sein, die sich in die entgegengesetzte Richtung bewegt, sobald man eine invisible border (gemessen an x-Koordinate) berührt und weiterhin sich bewegt