SDL - Spielerfigur bewegt sich abgehackt, ruckelig



  • Hallo!

    Habe da ein kleines Problem mit meinem aktuellen Projekt:
    Wenn man meine Figur auf dem Bildschirm bewegt, bewegt sie sich sozusagen in "Einzelschritten" vorwärts also man sieht so ein bisschen die abgehackten Schritte, die die Figur macht.

    Also an der Performance liegts nich *g*! Ausserdem mache ich die Bewegung abhängig von der Rechenzeit, was ja u.a. zu einer glatten Bewegung führen sollte.. :

    void Player::move ()	{
    
    	if (gSystem->keyDown (SDLK_LEFT))	{
    		xPos -= 350.0f * gTimer->getElapsed ();
    	}
    
    	else if (gSystem->keyDown (SDLK_RIGHT))	{
    		xPos += 350.0f * gTimer->getElapsed ();
    	}
            ...
    

    Konnte zu dem Thema leider nich schlau werden. Vielleicht weiss ja jemand Abhilfe, denke eigentlich dass das kein allzu großes Problem sein dürfte.

    Danke schonmal 🙂 !



  • Ich würde mal tippen, dass die Bewegunsschritte einfach zu groß sind.
    Du musst die Verschiebung in mehr kleinere Verschiebungen unterteilen.

    Was liefert

    gTimer->getElapsed ()
    

    zurück? Falls dies ein Integer ist, so ist die kleinste Verschiebung 350 LE
    groß. Dies ist zu groß und somit sieht es abgehackt aus.



  • Danke für den Tipp!

    Aber die getElapsed() liefert nen float.

    float 	getElapsed () {return elapsedTime;};
    

    und die Variable elapsedTime ist ebenfalls eine einfache Substraktion zweier floats...



  • In welcher Einheit wird denn die Zeit gemessen, also
    welche Zeitspanne repräsentiert ein Floatwert von 1.0f ?



    1. miss mal die FPS
    2. lass dir die Werte die "gTimer->getElapsed()" ausspuckt raustracen

    Wenn das nicht hilft ... Pech, oder mehr Code zeigen.



  • Also danke für die Ratschläge, aber jetzt auf einmal läufts flüssig.

    Dann lag das vlt doch an meinem Rechner!? Ich weiss nicht was jetzt die Ursache wahr um ehrlich zu sein, aber bin froh dass es jetzt geht 🙄 !



  • dukems2112 schrieb:

    Also danke für die Ratschläge, aber jetzt auf einmal läufts flüssig.

    Das ist seltsam. Das Problem hatte ich schön recht oft mit DirectX-Anwendungen. Ich starte das Spiel und es läuft ruckelig. Beende, starte nochmal, wiederhole das ein paar Mal und dann läufts plötzlich wunderbar flüssig. Nimmt mich wirklich mal wunder, wie es dazu kommen kann... Nebenbei ist nie irgendwas gelaufen.



  • Ja is komisch. Jetzt läufts bei mir aber echt die ganze Zeit flüssig, also nich manchmal so und manchmal so, sondern konstant gescheit.
    😮

    hauptsache läuft 😉


Anmelden zum Antworten