Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
void update (void) { // .... if (key.left) { ship.r.x -= 5 * dT; } else if (key.right) { ship.r.x += 5 * dT; } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
void update (void) { // .... ship.a.x = 0 // Beschleunigung auf null setzen, falls nichts gedrückt wird. float accel = 5; if (key.left) { ship.a.x = - accel; } else if (key.right) { ship.a.x = accel; } ship.v.x = ship.v.x + (ship.a.x * dT); // Beschleunigung ist die Änderung der Geschwindigkeit ship.r.x = ship.r.x + (ship.v.x * dT); // Geschwindigkeit ist die Änderung der Position // bis jetzt würde das Schiff einfach weiter gleiten, deshalb muss die Geschwindigkeit in jedem Frame reduziert werden. float k = 0.95; ship.v.x *= k; // Außerdem sollte man noch eine Maximalgeschwindigkeit angeben, da die Geschwindigkeit sonst zu groß werden kann. float maxvel = 100; if (ship.v.x > maxvel) { ship.v.x = maxvel; } if (ship.v.x < -maxvel) { ship.v.x = -maxvel; } } |
Ich hoffe, damit konnte ich deine Fragen beantworten.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// ... a.x = 0; // Beschleunigung auf NULL setzen, falls nichts gedrückt wird. float accel = 5; if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) { a.x = -accel; } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) { a.x = accel; } v.x = v.x + (a.x * dT); // Beschleunigung ist die Änderung der Geschwindigkeit r.x = r.x + (v.x * dT); // Geschwindigkeit ist die Änderung der Position // bis jetzt würde das Schiff einfach weiter gleiten, // deshalb muss die Geschwindigkeit in jedem Frame reduziert werden. float k = 0.95; v.x *= k; // Außerdem sollte man noch eine Maximalgeschwindigkeit angeben, // da die Geschwindigkeit sonst zu groß werden kann. float maxvel = 100; if (v.x > maxvel) { v.x = maxvel; } if (v.x < -maxvel) { v.x = -maxvel; } // ... |
C-/C++-Quelltext |
|
1 |
(a.x * dT)
|
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Wenn Du uns verraten würdest welchen Datentype dT eigentlich hat, könnte man Dir sicherlich helfen.Beide Fehler verveisen auf die Zeilen 14 und 15. Leider hat mich auch Google im Stich gelassen. Habt ihr eine Idee?
Doch, kann er. Ergebnis ist double.Der + Operator würde dann versuchen float + double zu berechnen, was er nicht kann.
Doch, kann er. Ergebnis ist double.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Koschi« (29.10.2015, 16:12)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Ohne zu wissen welchen Typ dT hat
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Werbeanzeige