Doodle Jump programmieren Hilfe !

  • Antworten:2
Fabian
  • Forum-Beiträge: 144

01.02.2014, 23:05:59 via Website

Hey liebe Community,

derzeit bin ich dabei Doodle Jump nach zu programmieren. Ich nutze dafür die LibGDX Engine und bin auch vollkommen zufrieden damit ;)
Derzeit bin ich so weit, dass die Spielfigur wie im echten Doodle Jump mit der exakt gleichen Sprungphysik auf dem Boden springt.
Dann habe ich testweise 2 Plattformen hinzugefügt, um die Kollision zu testen. Mit der overlaps() Methode vom Rectangle geht das auch ziemlich gut.
Heißt, er hüpft auf die ersten beiden Plattformen und bleibt dann auf der obersten am hüpfen :) Sieht also genauso aus, wie beim Original mit nur 2 Plattformen. Jetzt möchte ich natürlich mehrere hinzufügen, komme aber bei der Camera nicht weiter. Derzeit benutze ich ein Rectangle um den Viewport festzulegen und gebe der Camera dann die Width und Height Größen. Mit folgender Methode habe ich dann versucht, die Camera Y Koordinaten zu erhöhen um somit den Viewport nach oben zu verschieben:
1private void updateCamera(){
2
3 if(rectangle_doodler.getY() >= (rectangle_viewport.getHeight() / 2)){ // Prüfen ob die Figur an der Hälfte des Bildschirms angekommen ist.
4 camera.translate(0, 3); // Die Camera um 3 Pixel nach oben verschieben.
5 camera.update(); // Camera aktuelle Koordinaten geben
6 }
7 }

damit die Figur nicht weiter als die Hälfte des Bildschirms nach oben springt diese Methode:

1private void disablejumpOverYHalf(){
2 if(rectangle_doodler.getY() > rectangle_viewport.getHeight() / 2){
3 rectangle_doodler.y = rectangle_viewport.getHeight() / 2;
4 }
5 }

Leider verschiebt sich die Camera nach jedem Sprung, so, dass die Spielfigur irgendwann im Boden versinkt :)

Ich bräuchte mal einen Tipp, wie ich das mit der Camera machen könnte, mir fällt leider nichts mehr ein und ich frage mich, wie das im Original gehandhabt wird :wacko:

Vielleicht kann mir ja jemand einen Tipp geben :)

grüße Fabian!

Antworten
impjor
  • Forum-Beiträge: 1.793

02.02.2014, 00:20:32 via App

Ich glaube im Original ist das so, dass bei Kollision mit einer Platte die Kamera aktualisiert wird. Müsstest dann also den Viewport der Camera auf die Position der Spielfigur setzen und dann entsprechend um eine halbe Bildschirmhöhe nach oben.
Die Position der Spielfigur sollte nicht geändert werden.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Fabian
  • Forum-Beiträge: 144

02.02.2014, 01:03:53 via Website

Naja die X und Y Positionen müssen ja geändert werden um die Spielfigur auch auf links oder rechts schwebende Plattformen zu bewegen. Beim Original spielt es sich wie eine Leinwand. Wenn die Figur die Hälfte des Bildschirms erreicht, wird die Y Koordinate solange auf die die Hälfte des Bildschirms gesetzt bis die Figur wieder fällt(negativer speedY Wert).
Ich hab mir das so gedacht, dass wenn meine Figur die Hälfte erreicht, das Rectangle Viewport einfach nach oben in die Länge gezogen wird und die Camera diesem folgt. Ist nur leichter gesagt als getan. Wenn jemand eine Idee oder nur einen Ansatz hätte, wäre ich sehr dankbar ;)

edit: Falls es jemand interessieren sollte, ich habe statt der Camera einfach die Plattformen nach unten bewegt, jetzt siehts abgesehen von den assets wie beim original aus und spielt sich auch so ;)
Also: LibGDX forever ;)
Was mich wundert ist, dass Doodle Jump rund 18k Code Zeilen beinhaltet und in LibGDX nur rund 200 ?

grüße Fabian!

— geändert am 02.02.2014, 21:10:00

Antworten