3D - Kilometerzähler "bauen" [GELÖST]
Übersicht

CO2ehemals "SirMO"Betreff: 3D - Kilometerzähler "bauen" [GELÖST] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
Ich bin gerade an folgendem Problem: Ich brauche einen Kilometerzähler. Ich habe mir dazu schon gedanken gemacht, und zwar: - (geschwindigkeit * gefahrene zeit) dann wird also die geschwindigkeit mal die gefahrene zeit (ein zähler erhööht sich pro schleifen-durchlauf, hat er die FPS zahl erreicht, ist 1 sekunde verstrichen (hoffe ich)), nur danach komme ich nicht weiter, durch welche zahl muss geteilt werden? Hat jmd. von euch schonmal einen kilometer-zähler gebaut? mfG, CO2 |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
- Zuletzt bearbeitet von CO2 am Di, Dez 07, 2010 21:57, insgesamt einmal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo. Hab ich grad eine Physik-Klausur drüber geschrieben, deshalb kann ich dir das mal erklären ![]() Du musst im 3D Raum deine Mas-Einheuit festlegen. Also z.B. 1 Unit = 1 Meter. Dann errechnest du die Geschwindigkeit von deinem Object (Wenns ein Fahrzeug ist Radumfang (2 * Radius * PI) * umdrehungen des Rades). Jetzt musst du nur noch Zeitintervalle festlegen, z.B. 250ms. Immer nach 250ms machst du das hier : Code: kilometer_gefahren = Kilometer_gefahren + (Geschwindigkeit * 250) / 1000.0
Geschwindigkeit in m/s und 250 in s, dann kürzt sich das s weg und es bleiben (Geschwindigkeit*250)m übrig. dass noch durch 1000 und du hast die Kilometer. mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du eine FPS wert von 60 hast bedeutet das ein Frame pro 1/60 Sekunde also kannst du um die Zeit zu erhalten Frameanzahl/60 = Zeit nutzen, oder nicht? Das setzt du dann in deine Formel ein und bekommst
Geschwindigkeit * (Framzahl/60) = Strecke * Sekunden Wenn du nun eventuell Km haben willst braucht du also Stunden, weil du vermutlich in km/h rechnen möchtest Wäre dann sekunden/60 = Minuten ; Minuten/60 = Stunden => sekunden/3600 = Stunden => Geschwindigkeit * Framezahl/216000 = Strecke in km will aber nicht dafür garantieren dass das so stimmt würde mir nur so spontan einfallen Edit: Sieht so aus als wüsste Toeb wovon erredet, ich würde seine variante nehmen, zumal ich davon ausgehe das du die geschwindigkeit kennst und nur die einheiten umforme und physik nie meine große leidenschaft war. lg Ana |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
Krischan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm ich hatte das bei meinem Zwerg in BlitzTiles relativ einfach gelöst (alle BT_ Variablen sind Globals)
Code: Function BT_CalcSpeed#()
Local ms%=MilliSecs() ; check each second If ms>BT_SpeedTimer+1000 Then ; store current position BT_NewX=BT_PlayerX BT_NewY=BT_PlayerY BT_NewZ=BT_PlayerZ ; calculate BT_Distance between current and old position BT_CurrentSpeed=BT_Distance(BT_OldX,BT_OldY,BT_OldZ,BT_NewX,BT_NewY,BT_NewZ)*3.6 ; store old position BT_OldX=BT_PlayerX BT_OldY=BT_PlayerY BT_OldZ=BT_PlayerZ ; reset timer BT_SpeedTimer=ms EndIf End Function Function BT_Distance#(x1#,y1#,z1#,x2#,y2#,z2#) Return Sqr((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2)) End Function Also alte Position gespeichert, immer 1x Pro Sekunde die Distanz zwischen alter und neuer Position gemessen, Timer zurückgesetzt und als Ausgabe dann einfach den BT_CurrentSpeed als "km/h". Hatte bei meinen weiträumigen Szenen zumindest halbwegs realistische Werte gebracht. Allerdings waren die Szenen da auch metergenau in der Skalierung (und der Zwerg genau 1.4 meter gross) |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, besten dank!
ich werde mal alle vorschläge ausprobieren |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sagtmal... Hab ich die Frage nicht verstanden oder denkt ihr zu kompliziert?
Wir bewegen den LKW in jedem Frame um einen gewissen Wert in x-y-z-Richtung (mit MoveEntity - auf dessen Parameter ich mich jetzt beziehe) Die Distanz die er zurück legt ist daher Sqr(move_x*move_x+move_y*move_y+move_z*move_z) Tja und das wars auch schon wieder. Eine Zählvariable die man jeden Frame / jedes UpdateWorld um eben diesen Wert erhöht und fertig. Das sind dann unsere Einheiten, wie schon so oft vorgeschlagen die Meter. BlitzBasic: distanz#=distanz#+Sqr(move_x#*move_x#+move_y#*move_y#+move_z#*move_z#) mfG, Christoph EDIT: Kann es sein, dass im Startpost eh schon dasselbe steht, nur anders formuliert? Na jedenfalls wüßte ich nicht, in wiefern da die Zeit eine Rolle spielt wenn man die MoveEntity-Werte hernimmt? *verwirrt bin* |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
- Zuletzt bearbeitet von Eingeproggt am Di, Dez 07, 2010 20:17, insgesamt einmal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja stimmt ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ach ich dussel ![]() (geschwindigkeit / 10) * 3 = meter pro sekunde ![]() mfG, CO2 |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du schon Einheiten einführst, rechne mit ihnen:
1 km = 1000 m 1 h = 60 min * 60 s = 3600 s Bsp: 10 km/h = 10 * 1000 m / 3600 s = 10 * (1/3.6) m/s = 2.78 m/s Dann kommt auch garantiert immer das Richtige bei raus. Benutzte keine Pi mal Daumen Regeln. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, besten dank, werd ich so umsetzen ![]() |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group