Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Laufanimation für Spiel (http://www.informatikerboard.de/board/thread.php?threadid=2452)


Geschrieben von Tommy1234 am 17.09.2015 um 21:37:

  Laufanimation für Spiel

Hallo,

Ich programmiere gerade ein kleines Kachelbasiertes Spiel und hab mit dem Spieler angefangen. Dieser ist ein kleines Männchen (soll ein Robin Hood sein) dessen Einzelbilder auf einem großen Bild also ein Spriteheet vorliegen.
Ich habe also jedes Einzelbild als SubImage mit den entsprechenden Werten herausgeschrieben und diese werden korrekt angezeigt.

Die Laufanimation läuft korrekt ab und die Bilder werden entsprechend der Reihenfolge angezeigt, wenn ich beispielsweise nach rechts drücke.

In meiner Spielschleife berechne ich die FramesPerSecond was ebenfalls funktioniert.

Nun zu meinem Problemchen:

Das Problem ist nun, dass die Animation zwar richtig angezeigt wird, aber viel zu schnell. Und Robin bewegt sich als solcher sehr langsam.

Hier mal der Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
if(Keys.right){   
          //Bewegung des Spielers
          x = (x + (speed/fps)); 
          //Animation und Bilder laden wobei counter ein int ist bei 0 beginnend und imgcounter das jeweilige Bild darstellt
          counter++;  
          counter = counter%3;
          imgcounter=counter+3;
}


Der speed ist auf 100 und die FPS beträgt konstante 30.

Wie kann ich erreichen, dass sich das Sprite schneller bewegt und die Animation langsamer abläuft. Am Besten wäre es natürlich, wenn die Animation analog zur jeweiligen Bewegung abliefe. Das wäre aber dann eine Interpolation vermute ich aber mehr weiss ich jetzt auch nicht.

Wäre für Hilfe sehr dankbar,

Gruss Tommy



Geschrieben von eulerscheZahl am 18.09.2015 um 07:03:

 

Du brauchst:

Daraus kannst du eine Idealzahl für die fps berechnen: 1/fps = ppf/pps (Zeit = Weg/Geschwindigkeit).
Wenn das zu ruckelig ist, musst du Interpolieren, oder du brauchst mehr Bilder.
Aber deine Formel sollte passen (x += speed/fps), du musst nur speed so wählen, dass es zur Animation passt.



Geschrieben von Tommy1234 am 18.09.2015 um 10:09:

 

Hallo bin selbst draufgekommen. Man muss nur den counter um einen niedrigeren Wert erhöhen. Bei mir läufts mit 0.25f einigermaßen augenfreundlich ab. Also je größer die counter-Schrittweite, desto schneller die tatsächliche Animation. Und danke trotzdem für die Antwort.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH