Maus Interpolation



  • Ich schreib grad an einem Programm mit der typischen Mouselook-Shootersteuerung und benutze dazu DirectInput um die relativen Mausbewegungen zu erkennen.

    Da aber kein Mensch seine Maus gleichmäßig bewegen kann, sind diese Werte natürlich sehr sprunghaft, wodurch die Bewegung (besonders bei 'Strafen' zu sehen) rucklig wird.

    Lange Rede, kurzer Sinn: eine gute Interpolation muss her.
    Meine bisherigen Versuche haben zwar schon ein wenig Besserung gebracht, richtig flüssig ist es aber noch nicht.

    Bin für jeden Ratschlag dankbar



  • Kann ich mir garnicht vorstellen, das dies so ruckelig sein soll. Vielleicht hast du schon nen Fehler im Code ?
    Auf jeden Fall geht interpolieren ungefähr so:

    // benoetigete Variabeln
    const int c_iNrOfSteps=3; //oder auch ne andere Zahl
    float pfListOfDeltaX[c_iNrOfSteps];
    float pfListOfDeltaY[c_iNrOfSteps];
    
    ...
    
    // Mauskoordinaten holen
    for(int iCount=0;iCount<c_iNrOfSteps-1;iCount++)
    {
       pfListOfDeltaX[iCount]=pfListOfDeltaX[iCount+1];
       pfListOfDeltaY[iCount]=pfListOfDeltaY[iCount+1];
    }
    
    pfListOfDeltaX[c_iNrOfSteps-1]=getActualDeltaX;
    pfListOfDeltaY[c_iNrOfSteps-1]=getActualDeltaY;
    
    ...
    
    // aktuelle Bewegung berechnen
    int iInterpolatedDeltaX=0;
    int iInterpolatedDeltaY=0;
    
    for(int iCount=0;iCount<c_iNrOfSteps;iCount++)
    {
       iInterpolatedDeltaX=pfListOfDeltaX[iCount]/(float)c_iNrOfSteps;
       iInterpolatedDeltaY=pfListOfDeltaY[iCount]/(float)c_iNrOfSteps;
    }
    
    //fertig
    //eigentlich ganz simpel   ;)
    

    Je grösser iNrOfSteps um so mehr Schritte werden interpoliert und um so "schwammiger" müsste die Bewegung werden. Es gibt noch andere Möglichkeiten zu interpolieren, indem man alte Werte weniger stark oder so eingehen lässt...

    (Für Syntaxfehler übernehm ich keine Verantwortung, hab das jetzt nur so hingetippt!)

    Bye, TGGC

    -=>TGGC of TNG-Soft<=-
    The Next Generation-Software
    web: http://www.fh-merseburg.de/~roesch
    mail: ChristianRoesch@gmx.de

    [ Dieser Beitrag wurde am 01.02.2002 um 09:29 Uhr von TGGC editiert. ]



  • Ja, so ähnlich hatte ich das auch schon gemacht. Es wird dadurch auch ein bisschen besser, aber der Unterschied zu Profi-Spielen ist doch noch sehr deutlich.
    Trotzdem Danke erstmal



  • Dann liegts vielleicht doch daran dem, das du noch was anderes falsch machst ?! Vor allem irritiert mich eins, beim "Strafen" wird doch gar keine Mausbewegung benötigt.



  • Nene, ich meine, wenn man sich beim Strafen dreht, also Fadenkreuz auf ein Objekt richten, strafen und dabei das Objekt im Fadenkreuz behalten.
    Ich glaube auch nicht, dass ich was falsch mache, denn bei den meisten Amateurprojekten, Tutorials usw., die ich kenne, ist das genauso.



  • Original erstellt von <Walkyier>:
    Nene, ich meine, wenn man sich beim Strafen dreht, also Fadenkreuz auf ein Objekt richten, strafen und dabei das Objekt im Fadenkreuz behalten.
    Ich glaube auch nicht, dass ich was falsch mache, denn bei den meisten Amateurprojekten, Tutorials usw., die ich kenne, ist das genauso.

    Kenn deinen Code nicht, kann das nicht beurteilen, hört sich halt nur so an. Fakt ist, je mehr man interpoliert um so schwammiger wird es, un um so schwerer kann man anvisieren...


Anmelden zum Antworten