Java 2D Jump n' Run, wie mache ich Plattformen?

2 Antworten

Ich habe bereits probiert mit : fillRect 

Damit Zeichnest du letztendlich nur ein Rechteck. 

aber ich weiß einfach nicht wie ich Plattformen programmieren soll durch die der Spieler nicht hindurch fällt.

Das kommt drauf an, wie dein spiel gestaltet ist. 

Prinzipiell kann man sagen: Du prüfst auf Kollision, bevor du die Bewegung durchführst und brichst dann die Bewegung ab. Bzw. du führst die Bewegung nur dann aus, wenn die Prüfung keine Kollision ergibt, z.B. so:

private void move(Coordinate oldCoordinate, Coordinate newCoordinate) {
    if (!checkCollide(newCoordinate)) {
         move(newCoordinate);
    }
}

Es gibt einige Tutorials zu Plattformern, eines habe ich auch mal bei einer älteren Frage verlinkt:

https://www.gutefrage.net/frage/tile-based-game-programmieren-wie?foundIn=list-answers-by-user#answer-243948916

Ich code games hauptsächlich in c# , aber ein lösungsansatz wäre:

wenn du schon spielphysik eingebaut hast klappt ja bestimmt auch das springen. Wenn nicht, solltest du coden, dass dein player im leeren raum nach unten fällt. Das könntest du abfragen, wenn dein player mit nichts kollidiert. Dann also eine dauerhafte beschleunigung nach unter/-yrichtung coden.
Die kollisionsdetektion erkennt dann wenn du auf einer platform stehst. Sobald das passiert ist, stellst du die bewegung nach untern aus.
Dazu wäre eine methode ganz passend, die checkt ob du auf was stehst oder nicht und dann nen bool dazu veränderst.

Hoffe das gibt dir irgendwie ne idee ;) ansonsten frag einfach nochmal


Kryonos 
Fragesteller
 17.04.2017, 16:03

Erstmal danke für die Antwort, aber dann gibt es noch das Problem, dass ich seitlich durch diese Plattformen durchlaufen kann, also wenn ich sozusagen eine Wand mache und nicht möchte, dass der Spieler durch diese Wand durchlaufen kann.

0
Fragor  17.04.2017, 16:42
@Kryonos

Das selbeprinzip könnte benutzt werden.
Sobald du mit der wand kollidierst, kannst du sagen dass deine xposition nicht weiter steigen kann, aber dann müsstest du auch erkennen, dass es eine wand ist und halt nicht nur irgendein rechteck. Aber da habe ich gerade zu wenig praxiswissen für.

Wie gesagt, arbeite normalerweise mit c# und unity. Da hat man solche probleme nicht. :D
Kannst ja auch unity mal ausprobieren.

Aber das ist wie man beim coden arbeitet:
Problemanalyse:
du kannst durch wände gehen
Lösungsansätze:
analysiere was du hast: player modell mit koordinaten und kollisionsdetektion und was noch
Brich das problem in noch kleinere stücke: playermodell soll stoppen sobald es mit einer wand collidiert oder anders, die x koordinate in vom player soll nicht weiter steigen wenn die koordinaten vor der wand sind.
Lösung in code:
nun versuche das was du dir denkst dem pc in code zu sagen und dabei bemerkst du meistens neue probleme oder sondersituationen die du beachten musst. Aber auf diese weise lernst du am besten neue techniken usw kennen ;)

also viel spaß bei der lösungssuche und schreib vllt mal wie dus geschafft hast, bin interessiert

0