Wie kann ich in Processing einen beweglichen Hintergrund programmieren?

1 Antwort

Der Wert der x-Koordinate, die du beim Zeichnen des Bildes angibst, muss durch eine globale Variable bestimmt werden, die sich bei jedem Zeichenschritt (draw call) um eine bestimmte Schrittzahl (deine Bildlaufgeschwindigkeit) verringert (das Bild soll ja von rechts nach links wandern, damit der Eindruck entsteht, deine Figur würde sich nach rechts bewegen).

Ab einer bestimmten x-Position des Bildes wird es nicht mehr den vollen Bildschirm ausfüllen können. Du brauchst also ein zweites Bild (ob nun tatsächlich ein anderes oder das selbe Bild), welches spätestens ab diesem Moment mit dahinter angehängt wird. Dessen x-Position berechnet sich durch die Summe von x-Position und Breite des ersten Bildes.

Am einfachsten machst du es dir hierbei, wenn du Bilder verwendest, die breiter sind als der Bildschirm (andernfalls sind noch mehr Berechnungen notwendig). Das zweite Bild bräuchte hierbei erst dann gezeichnet werden, sobald die Differenz aus Bildschirmbreite und x-Position der rechten Bildkante über 0 liegt.

Einmal davon ausgehend, dass du einen endlosen Hintergrund einsetzen möchtest und daher nur das erste Bild immer wieder wiederholst, müsste die x-Position des ersten Bildes auf 0 zurückgesetzt werden, sobald es vollständig aus dem Bildschirmausschnitt verschwunden ist (Bildbreite * -1).

Für eine langsame Beschleunigung der Bewegung könnte man sich etwas mit frameCount oder millis basteln (z.B. alle x Frames die Geschwindigkeit erhöhen, o.ä.).

Koebi10 
Fragesteller
 28.11.2022, 12:32

Danke regex, ich merke was du meinst. Aber hättest du Zeit das Kurz in einem Programm Code zu erklären, den ich merke nicht genau ab wann und wo ich programmieren soll das das ,,nächste,, Bild hinter an kopiert werden soll und sich gleich schnell bewegen soll.

Danke im voraus

0
regex9  29.11.2022, 21:37
@Koebi10

Wenn dir das zu kompliziert ist, dann zeichne das Bild immer zweimal. Das erste Bild startet bei Position x (auf der x-Achse), das zweite Bild bei Position x + die Breite des ersten Bildes. Die Position x wird durch eine globale Variable definiert, deren Wert je draw call verringert wird. Die beiden Bilder bewegen sich gleichschnell, sofern du bei beiden für die Angabe/Berechnung der x-Position die globale Variable mit einbeziehst.

0