Registriert: Mi Dez 15, 2004 20:36 Beiträge: 454 Wohnort: Wien, Österreich
Bevor ich mein Projekt vorstelle, muss ich noch ein Problemm beseitigen. Ich mache gerade noch einen AsteroidClone , und alles läuft Perfekt, zu Perfekt. Alles (Shoots, Explosions, Asteroids) was sich im Spiel bewegt, ist Zeit-, und nicht Frame-bedingt. Gut so. ABER, das Schiff kriege ich einfach nicht hin. Es scheint noch immer, als würde die Geschwiendigkeit von der FrameRate abhängen und nicht von der Zeit .
Ich gebe jetzt heir das "bewegungs" Code, damit vielleicht jemad einen Fehler finden könnte.
Code:
//---so wird TimeStep erzeugt
QueryPerformanceCounter(FCurrentTime );
TimeStep :=(FCurrentTime - FFrameTime)/ FFreq ;// calculate the game speed, timestep : single
FFrameTime := FCurrentTime;// beide sind int64
//----
// are we accelerating
if(Hi(GetAsyncKeyState(F_VK_UP))=128)then
begin// yes
// accelerate player
FNewVelocity_S := FNewVelocity_S + TimeStep/10;// FNewVelocity_S ist von Single type
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Kein Wunder du hast ja auch keine zeitbasierende Bewegung sondern eine Zeit bassierende Beschleunigung. Sprich du musst den Geschwindigkeits Vektor den du addierst noch mit einen Zeitfaktor multiplizieren.
Hat zum Beispiel das Raumschiff die Maximale Geschwindigkeit erreicht weget es sich bei jeden Durchlauf um einen Geschwindkeits Vektor vor. Du willst ja aber das der zurückgelegte Weg von der Zeit abhängt.
also: Weg(neu) = Weg(alt) + Geschwindkeit*Zeit
MfG
Flo
_________________ Danke an alle, die mir (und anderen) geholfen haben. So weit... ...so gut
Genau das gleiche Problem hatte ich auch. Ich hatte aber damals den Eindruck, dass es nicht ausreicht, die Beschleunigung mit dem Timefactor zu multiplizieren und die Geschwindigkeit mit dem Timefactor zu multiplizieren.
Man muss also sowohl beim Beschleunigen als auch bei der eigentlichen Bewegung den Timefactor einbeziehen?
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Frase hat geschrieben:
Genau das gleiche Problem hatte ich auch. Ich hatte aber damals den Eindruck, dass es nicht ausreicht, die Beschleunigung mit dem Timefactor zu multiplizieren und die Geschwindigkeit mit dem Timefactor zu multiplizieren.
Man muss also sowohl beim Beschleunigen als auch bei der eigentlichen Bewegung den Timefactor einbeziehen?
Vielleicht erinnert sich noch einer an den Physikunterricht:
Zurückgelegter Weg= 0.5*a*t² + v*t + X
Steng genommen müsstet ihr das dann auch so in euren Anwendungen umsetzen, also:
Code:
//Variablen euer Klasse:
Geschwindigkeit:TVektor3f;
Position:TVektor3f;
Antrieb:TVektor3f;// Antrieb = 0.5*(Bescheunigung a)
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.