Doodle Jump Sprung Physik?

coco07

Bekanntes Mitglied
Hey liebe Community,

ich bin gerade dabei Doodle Jump nach zu programmieren,
dabei stoße ich leider auf das Problem der unterschiedlichen Bildschirmgrößen.
Im Moment habe ich folgende Sprung-Technik:
Y-Position der Figur um 15 erhöhen und dann pro Frame um 0.2 verringern. Sobald der Y Wert ins Minus geht, kommt der Character wieder runter, diese Werte kann ich variieren, bis ich einen realistischen Wert gefunden habe.
Exportiere ich diese Methode aber auf andere Bildschirmgrößen wird der Character natürlich langsamer oder schneller, je nachdem, ob der Bildschirm größer oder kleiner wird.
Hat jemand eine Idee, wie man das bewerkstelligen könnte, ich komm leider auf keine nützliche Lösung.

Ich programmiere zwar auf Android aber da es egal ist, auf welcher Platform ich das ganze entwickle, frage ich lieber hier nach...

grüße coco07!
 

TiGreen

Mitglied
Ich würde es so machen, dass die Werte für z.B. die Höhe 800 Pixel erstelle (wie du 15 und 0.2 genommen hast) und dann würde ich wenn sich die Größe auf z.B. 1200 Pixel ändert dies hochrechnen. (1200/800= 1.5) also musst du den y wert *1.5 Faktor nehmen.
Die 15 musst du dann auch bei der 1200 Pixel Größe natürlich mit 1.5 multiplizieren. (15*1.5=22.5)
 

Tobse

Top Contributor
Ich würde es so machen, dass die Werte für z.B. die Höhe 800 Pixel erstelle (wie du 15 und 0.2 genommen hast) und dann würde ich wenn sich die Größe auf z.B. 1200 Pixel ändert dies hochrechnen. (1200/800= 1.5) also musst du den y wert *1.5 Faktor nehmen.
Die 15 musst du dann auch bei der 1200 Pixel Größe natürlich mit 1.5 multiplizieren. (15*1.5=22.5)

Dieser Ansatz sollte anstandslos funktionieren. Best practice wäre aber, für die Abständeund Größen im Spiel eine einheit festzulegen und mit den Physikalischen Formeln zu rechnen. Die Ergebnisse werden dann erst in die konkreten Pixel-Angaben umgerechnet.
 

coco07

Bekanntes Mitglied
Hey ihr beiden,

vielen Dank für eure Antworten, leider bin ich immer noch nicht weiter, was die gleichmäßige Bewegung auf verschiedenen Bildschirmen angeht.
Ich habe mich aber für die 2. Antwort entschieden, dass ich das ausrechnen lasse und dann in Pixel umwandle. Leider finde ich keine passende Formen dafür. Kann ich das mit der Fallbeschleunigung und Erdanziehung ausrechnen?
Bitte helft mir :)

grüße coco07
 

Tobse

Top Contributor
Aaalso, der freie Fall ist eine beschleunigte Bewegung, für die gilt
[c]s = 0.5 * a * t²[/c]
wobei
Code:
s
die gefallene Strecke in Abhängigkeit der Beschleunigung [c]a[/c] und der Zeit
Code:
t
ist.
Die Beschleunigung errechnet sich (durch das erste Newtonsche Gesetz) mit
[c]a = F / m[/c]
wobei
Code:
F
die Kraft ist, mit der das Objekt (in unserem Fall der Doodler) nach unten gezogen wird und
Code:
m
die Masse des Objektes ist.
Die Kraft
Code:
F
lässt sich berechnen durch
[c]F = m * g[/c]
wobei
Code:
g
der sogenannte Ortsfaktor ist, einfach gesagt die Gravitation. Auf der Erde sind das 9.81 Newton pro Kilogramm, auf dem mond etwa 6 und auf dem Jupiter etwa 25 (nur damit du eine Vorstellung bekommst).
Setzt man das aber alles ein:
Code:
F = m * g
a = F / m = (m * g)/m
a = g
stellt man fest, dass beim freien Fall im Vakuum die Masse völlig egal ist.

Nun also zum konkreten Fall:

Zunächst stößt sich der Doodler ab (was auch eine Beschleunigte Bewegung ist, diesmal nach oben). Hat er sich dann abgestoßen würde er sich ohne Gravitation gleichförmig weiter bewegen.
Achtung: beim Abstoßen spielt die Masse des Doodlers sehr wohl eine Rolle. Denn Die Beschleunigung mit der er sich abstößt durch die Kraft mit der er das tut und seiner Masse berechnet wird ([c]a = F /m [/c]).
Für Gleichförmige Bewegungen gilt:
[c]s = v * t[/c]
wobei
Code:
s
die zurückgelegte Strecke in Abhängigkeit von der Geschwindigkeit
Code:
v
und der Zeit
Code:
t
seit Beginn der Bewegung ist.
v ist hier natürlich die Geschwindigkeit auf die Sich der Doodler durch das Abstoßen beschleunigen konnte. Es gilt:
[c]v = a * t[/c]

Nehmen wir also an, dass dein Doodler sich 0.25 Sekunden lang abstößt. Dann kannst du die Y-Position des Doodlers in Abhängigkeit von der Zeit
Code:
t
(seit Beginn des Abstoßens) so berechnen:
Code:
für t <= 0.25s
y1(t) = 0.5 * (F / m) * t² - 0.5 * g * t²
(Achtung hier: Wenn F / m nicht größer als g ist, hebt der Doodler garnicht erst ab).

für t > 0.25s
y2(t) = y1(0.25) + (F * 0.25s * t)/ m - 0.5 * g * t²
Du kannst hier an den Werten
Code:
g
,
Code:
F
und
Code:
m
rumspielen bis das ganze so läuft, wie du willst.

Für die implementierung würde ich dir auch empfehlen, die Formeln oben nochmals zu vereinfachen weil du Rechenzeit sparen kannst indem du die Teile im vorraus berechnest, die sich nicht ändern (z.B. [c]o.5 * g[/c] oder [c]0.5 * (F / m)[/c].

P.S.: Der Luftwiederstand ist in der ganzen Rechnung vernachlässigt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Doodle Jump Spiele- und Multimedia-Programmierung 6
F "Doodle Jump" Projekt Spiele- und Multimedia-Programmierung 8
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
E Möchte Jump and Run programmieren Spiele- und Multimedia-Programmierung 2
N Jump and run Spiel - wo anfangen / weitermachen? Spiele- und Multimedia-Programmierung 11
F Jump'n Run Background wiederholen Spiele- und Multimedia-Programmierung 3
E Java Jump and Run Map zu groß Spiele- und Multimedia-Programmierung 14
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
Finalspace Entwicklung eines Jump & Run Spiels Video-Tutorial Spiele- und Multimedia-Programmierung 12
M Jump 'n' Run Game - Blöcke? Spiele- und Multimedia-Programmierung 7
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
H Jump&Run Tutorial Spiele- und Multimedia-Programmierung 3
D Jump'n'run Kollision bei Blöcken Spiele- und Multimedia-Programmierung 10
K Jump'N'Run Hügel Spiele- und Multimedia-Programmierung 11
T Jump and Run - Unklarheiten Spiele- und Multimedia-Programmierung 5
Arcus Jump and Run etwas komplizierter - Benötige Starthilfe Spiele- und Multimedia-Programmierung 12
T Ist meine Jump and Run Engine zu genau? Spiele- und Multimedia-Programmierung 4
N Grundlagen für ein Jump&Run Spiele- und Multimedia-Programmierung 3
U Jump n' Run 2D Geometrie und Kollisionsabfrage? Spiele- und Multimedia-Programmierung 11
L Jump-n-Run Auslastung verringern Spiele- und Multimedia-Programmierung 16
Apo Kollisionserkennung bei Jump'n'Run Spiele- und Multimedia-Programmierung 69
F jump and run idee Spiele- und Multimedia-Programmierung 2
T Umsetzung eines 2D Jump and Runs Spiele- und Multimedia-Programmierung 7
K Jump n Run Keylistener und Schleifen Spiele- und Multimedia-Programmierung 8
F DJADD Jump and Run Spiele- und Multimedia-Programmierung 10
D Jump 'n run die 2. [spielerbewegen mit zeit] Spiele- und Multimedia-Programmierung 6
D Jump and Run Game -- Kollisionsabfrage Spiele- und Multimedia-Programmierung 30
S Kollisionsprob bei Jump&Run Spiele- und Multimedia-Programmierung 9
S Jump'n'Run: Probleme mit Kollision Spiele- und Multimedia-Programmierung 13
M Sprung stoppen Spiele- und Multimedia-Programmierung 9
S 2D Spiel "Der Sprung" Spiele- und Multimedia-Programmierung 7
0 Sprung Animation Spiele- und Multimedia-Programmierung 10
G Sprung von der Konsole zur grafischen Oberfläche! Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben