p5.js MiniGame?
Hi, ich möchte mein erstes kleines MiniGame programmieren und dabei soll man als Kreis (Spielfigur) Rechtecken ausweichen, die sich von rechts nach links über den Bildschirm bewegen. Es sollen unendlich viele Rechtecke sein, die nach und nach spawnen. Wie kriege ich es also hin, dass diese Rechtecke immer neu spawnen? Bzw. kann ich die Rechtecke, nachdem sie den Bereich verlassen haben, wieder in den Bereich holen? Wenn ich z.B.:
if(x < 0) {
x = 400;
}
eingebe, passiert nichts, da sich der Kreis, den man steuert, nicht außerhalb befindet.
Ich hoffe ihr versteht meine Frage und bitte um Antworten.
LG
2 Antworten
Wenn du dir die Koordinaten der Rechtecke merkst, kannst du sie auch, sobald sie aus dem Bildschirmbereich verschwunden sind, wieder an den Anfang positionieren.
Die Koordinaten kannst du dir in einem Array speichern.
const positions = [];
positions.push({ "x": /* ... */, "y": /* ... */ });
Bei jedem draw call läufst du einmal mit einer Schleife durch das Array, um die Positionen jedes Rechtecks zu aktualisieren und zu prüfen. Wenn die Position außerhalb des Bildschirmbereichs ist, setzt du sie neu.
Ein Beispiel, wie du an einen x-Wert wieder herankommst:
let x = positions[0].x;
Hierbei würde das erste Element aus dem Array herangezogen werden.
Hallo!
Du hast im Grunde zwei Möglichkeiten, unendlich viele Rechtecke zu spawnen:
- Du setzt das Rechteck wieder zurück, wenn es vom Bildschirm verschwunden ist
- Du definierst eine Klasse (eine Art Anleitung), nach der du auch neue Rechtecke instanziieren (herstellen) kannst und hinterher wieder löschst
Die "bessere" Möglichkeit ist definitiv die Zweite. Wenn du Objektorientierung schon beherrschst, verwende sie; ansonsten kannst du es mit etwas Zeit, Lust, Ehrgeiz und Tutorials im Internet lernen.
Wenn Du eher auf eine schnelle/einfache Lösung als auf professionelles Programmieren aus bist, nutzt Du einfach immer die gleichen 2 Rechtecke und setzt sie immer wieder zurück.
Dafür ist Dein Ansatz mit dem if schon mal richtig, warum es nicht funktioniert, kann ich nicht wissen. Wenn Du es trotz viel Probieren nicht schaffst, müsstest Du den ganzen Code in die Frage stellen; vielleicht bin ich dann noch wach, sonst hilft sicherlich wer anders :)
Viele Grüße!