Wie kann ich in Processing einen beweglichen Hintergrund programmieren?
Hallo zusammen.
Ich programmiere gerade ,,Jetpack-Joeride,, nach (Java) und habe eine Frage über den Hintergrund. Ich möchte, dass der Hintergrund im Spiel (ist ein Bild) von rechts nach links immer verschoben wird. D.h. von rechts nach links, sodass es aussieht, als ob die Figur fliegen würde. Aber nur für den Hintergrund wird die x-Position ständig verändert.
Cool wäre es, wenn jetzt zuerst der Hintergrund nicht so schnell wäre und dann immer ein ganz wenig schneller, bis zu einem Maximum.
Kann mir jemand sagen, wie das geht?
Danke im Voraus für eure Bemühungen.
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.ä.).
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.
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