Laufanimation für Spiel

Neue Frage »

Auf diesen Beitrag antworten »
Tommy1234 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
 
Auf diesen Beitrag antworten »
eulerscheZahl

Du brauchst:
  • die gewünschte Geschwindigkeit des Spielers in Pixel pro Sekunde (Nennen wir es mal pps für Pixel per second)
  • Pixel pro Einzelbild (ppf, wie viele Pixel muss sich der Spieler zwischen zwei Bildern bewegen, um eine flüssige Bewegung zu erreichen, hängt von deinen Bildern ab)

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.
Auf diesen Beitrag antworten »
Tommy1234

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.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »