# Sprung Animation



## 0plan (23. Aug 2012)

Hallo, ich wollte mal Fragen, ob mir jemand verraten kann wie man am besten eine Sprunganimation umsetzt. Angenommen ich habe ein Rectangle welches um 100 px hoch und anschließend wieder auf y = boden spring. 

Ist es Sinnvoll für den Sprung einen Timer zu implementieren ? Oder anhand einer boolischen Variable while(ist nicht am maximalen Y-Wert) -> springe  if(max erreicht) lasse objekt fallen?

Würde mich mal Interessieren wie ihr sowas löst, da ich vorhabe so etwas umzusetzen.

Danke.


----------



## Robokopp (23. Aug 2012)

Ich würde letzteres machen,  also Sprung nach oben bis zu höhe x,  danach Schwerkraft aktivieren. 
Das mit dem timer sollte gehen
Vlt als kleiner Tipp um das zu vermeiden was mir passiert ist: falls du noch andere Objekte animierst,  versuch nicht die Animation in einem Schritt durchzuführen,  denn währenddessen werden andere Objekte nicht berechnet. 

Gesendet von meinem GT-I9100 mit Tapatalk 2


----------



## Helgon (23. Aug 2012)

oder dem rechteck eine gravity geben und diese gravity erhällt beim springen nach oben einen impuls von unten + die kraft die durch die bewegung (links/rechts) springen entsteht und im gameloop verringert sich die gravity wieder auf normal


----------



## Marco13 (23. Aug 2012)

helgonsPost.replaceAll("gravity", "velocity"); !?!  

Man kann dem Objekt eine Geschwindigkeit geben. Diese Geschwindigkeit bewirkt eine Bewegung nach oben. Gleichzeitig wirkt durch die Erdanziehung eine Beschleunigung (eben die Erdbeschleunigung von 9.81m/s², aber für ein Spiel nimmt man eine, die passt). Diese Beschleunigung bewirkt, dass die y-Geschwindigkeit immer geringer wird. Oben in der Parabel ist sie 0, und dann wird sie negativ, und man rast immer schneller auf den Boden zu. DANN kommt die Kollisionserkennung. Viel Spaß  (Naja, ein einfaches [c]if (y<floorHeight) y=floorHeight;[/c] würde es da vielleicht schon tun...)


----------



## Helgon (23. Aug 2012)

ich meint eigentlich schon gravity, also natürlich nicht nur dem rechteck geben, es muss natürlich eine "herschen" und es würde immer weiter fallen solang wie du schreibst y>floorheight


----------



## Marco13 (23. Aug 2012)

Helgon hat gesagt.:


> [ein paar wirr aneinander gereihte Worte] ....und im gameloop verringert sich die gravity wieder auf normal



Die Gravity sollte sich aber nicht verringern. Die bleibt immer gleich. Außer bei alten Frauen, da wird sie höher :joke:


----------



## Helgon (23. Aug 2012)

oh brainlaag, hast natürlich recht, oder jedes objekt hat ne eigene gravity und sie verringert sich im gameloop auf normal :bae:


----------



## 0plan (24. Aug 2012)

Danke für die zahlreichen Tipps. Hat jemand eventuell eine Implementierung an der ich mich Orientieren kann?


----------



## Marco13 (24. Aug 2012)

Hm... in http://www.java-forum.org/mathematik/130544-formeln-fuer-einfache-schwerkraft-2.html#post865782 wird in ParticleSystem#doStep zumindest die übliche Zeitliche (explizite Euler) - Integration durchgeführt. Für ein Spiel könnte man es auch einfacher machen, aber es zeigt vielleicht recht aufgeräumt dein grundsätzlichen Ablauf...


----------



## 0plan (24. Aug 2012)

Genau so etwas habe ich gesucht, danke dir Marco!


----------



## Plopo (24. Aug 2012)

Beachte aber die "Collision".
Der Sprung soll ja unterbrochen werden, wenn dein Object mit etwas kollidiert.

Sonst springt es durch alle Hindernisse hindruch


----------

