| Autor |
Nachricht |
TomasRiker
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.09.2001
Beiträge: 2959
|
TomasRiker Mitglied
07:02:00 02.06.2002 Titel: |
|
Zitieren |
| Zitat: | Original erstellt von Shinji Ikari:
Ho ho ho!!!
Wenn ich das irgendwo gefunden hätte, hätte ich doch nicht
dieses Forum hier zugepostet, oder? *g*
Trotzdem meine Fragen:
- Stimmt der Code so?
- Was ist mit Threads?
- Was ist mit Timern?
Danke...
PS: Warum wird V_O_R_R_A_U_S eigentlich zensiert? |
Im ******* wird zensiert, weil es falsch ist. Es heißt "im Voraus".
Also der Code sieht gut aus, ich mache es fast genauso.
Der Windows-Timer ist zu ungenau und außerdem würde dann wahrscheinlich bei zu langsamen Szenen der Stack überlaufen oder es würde genauso langsam laufen wie normalerweise auch.
Threads zu benutzen halte ich für übertrieben. |
_________________ http://www.spieleprogrammierer.de
Spiele, Tutorials & Infos zu meinen Büchern!
|
|
 |
Werbeunterbrechung
|
|
 |
Kostik
Mitglied
Benutzerprofil
Anmeldungsdatum: 24.04.2002
Beiträge: 20
|
Kostik Mitglied
07:49:00 02.06.2002 Titel: |
|
Zitieren |
Also ich hab das mal vor kurzem Programmiert, aber mit einer Basic Sprache (BlitzBasic3D), hat prima gefunzt, hier der Pseudocode dazu:
// erstmal die differenz zwischen den Frames bilden
aktuelleZeit = GetCurrentTime()
Differenz = aktuelleZeit - ZeitDesVergangenenFrame
ZeitDesVergangenenFrame = aktuelleZeit
// So, jetzt hast du die die Differenz gebildet, willst du jetzt ein Objekt in x richtung 30 pixel/sec fahren lassen so musst du einfach folgendes machen:
x= x + 30*Differenz
DrawObject(x,y)
// Das wars. Wie du mit C++ die aktuelle Zeit herbekommst weis ich auch nicht, da ich gerade erst mit C++ angefangen hab und bei einfachen Konsolenanwendungen gerade bin (mit BlitzBasic3D war es sehr einfach, der Code sah fast so aus).... |
|
|
|
 |
Shinji Ikari
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.11.2001
Beiträge: 34
|
Shinji Ikari Mitglied
09:04:00 02.06.2002 Titel: |
|
Zitieren |
Jo, BlitzBasic kenn ich. Is eigentlich ganz lustig, hab aber damit
aufgehört...
Ähm. Wenn du 30 px/s geschwindigkeit haben willst, und du zB. eine
Differenz von 20 ms hast. dann bewegt sich dein Objekt nach deinem
Code mit 30000 px/s !!!
Naja..
Obiges gilt natürlich nur für den Fall, dass GetCurrentTime()
Millisekunden wiedergibt.. Wenns zB. Sekunden wiedergibt, ginge
das ganze... aber dann müssten die Sekunden bis auf die 3te Nachkomma-
stelle genau zurückgegeben werden... Dass eine Funktion einen Wert
wie zB. 5,025 sek. zurückgibt kann ich mir nur schwer vorstellen...
Was machst du denn dann, wenn die sekunden von 59 wieder auf 0
umspringen??? wenn du in dem Moment die Differenz ausrechnest, hast
du ein Problem *g*
Beim Timer, wie ich ihn verwendet habe wird die Zeit wiedergegeben,
die der PC schon an ist. und zwar in Millisekunden... Das ist IMHO
genauer und praktischer |
_________________ Um zum Mond zu fliegen brauchte man zwei C-64. Um Windows XP zu booten braucht man 700 MHz, 256 MB RAM und 4 GByte Festplatte. Irgendwas stimmt doch nicht.
|
|
 |
TGGC
Mitglied
Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
|
TGGC Mitglied
10:36:00 02.06.2002 Titel: |
|
Zitieren |
|
 |
Kostik
Mitglied
Benutzerprofil
Anmeldungsdatum: 24.04.2002
Beiträge: 20
|
Kostik Mitglied
23:57:00 02.06.2002 Titel: |
|
Zitieren |
Du hast schon recht, GetCurrentTime müsste sekunden widergeben, BlitzBasic3D gibt es in millisecunden wider, die funktion GetCurrentTime() rechnet bei mir halt das ganze in sekunden um, naja ob millisec. oder nur sec. ist eigentlich egal. Das mit dem Timer ist auch eine Lösung obs genauer ist, weis ich nicht, jedenfalls gibts da verschiedene wege die Zeit zu bekommen, der Lösungsansatz bleibt aber der gleiche... |
|
|
|
 |
Headhunter
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.08.2000
Beiträge: 3567
|
Headhunter Mitglied
15:16:00 03.06.2002 Titel: |
|
Zitieren |
Hi !
Bei www.gamedev.net gibts nen netten Artikel darüber...
Und ab ins FAQ ! |
_________________ Viele Grüße, headhunter
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum nicht antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|