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 13 14 15 16 17 18 19 20 21 22 23 24 |
if(g_pVerwaltung->GetApp()->GetEvent(Event)) { if(Event.Type == sf::Event::KeyPressed) { switch(Event.Key.Code) { case sf::Key::Up : yVel = -5; break; case sf::Key::Down : yVel = 5; break; case sf::Key::Right : xVel = 5; break; case sf::Key::Left : xVel = 5; break; } } if(Event.Type == sf::Event::KeyReleased) { switch(Event.Key.Code) { case sf::Key::Up : yVel = 0; break; case sf::Key::Down : yVel = 0; break; case sf::Key::Right : xVel = 0; break; case sf::Key::Left : xVel = 0; break; } } } |
![]() |
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 |
Xposi = xVel; //If the square went too far to the left or right or has collided with the wall //if( ( Xposi <= 0 ) || ( Xposi + SQUARE_WIDTH > SCREEN_WIDTH )|| ( CheckCollision()) ) //{ //Move back //Xposi -= xVel;//* g_pTimer->GetElapsed (); //} //Move the square up or down Yposi = yVel; //If the square went too far up or down or has collided with the wall //if( ( Yposi <= 0 ) || ( Yposi + SQUARE_HEIGHT > SCREEN_HEIGHT )|| ( CheckCollision()) ) //{ //Move back //Yposi += yVel;//* g_pTimer->GetElapsed (); //} cout<< "Render ging"; m_pSpritePlayer->SetPosi(Xposi, Yposi); m_pSpritePlayer->Render(); cout<< "Render ging"; |
![]() |
Quellcode |
1 2 3 4 |
case sf::Key::Up : yVel = -5; break; case sf::Key::Down : yVel = 5; break; case sf::Key::Right : xVel = 5; break; case sf::Key::Left : xVel = 5; break; |
![]() |
C-/C++-Quelltext |
1 |
if (App.GetInput().IsKeyDown(sf::Key::Up)) Sprite.Move(0, +100 * App.GetFrameTime()); |
Zitat
Achja, es ist sinnvoll bei Bewegungen die Zeit mit ein zu kalkulieren
![]() |
C-/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 |
if(App.GetInput().IsKeyDown(sf::Key::Left)) { //bla } else if(App.GetInput().IsKeyDown(sf::Key::Right)) { //mehr bla } else { xVel = 0; } |
![]() |
C-/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 |
if(App.GetInput().IsKeyDown(sf::Key::Left)) { //bla } if(App.GetInput().IsKeyDown(sf::Key::Right)) { //mehr bla } if(!(App.GetInput().IsKeyDown(sf::Key::Right)||App.GetInput().IsKeyDown(sf::Key::Left))) { xVel = 0; } |
Zitat von »"Genion"«
Ansonsten säh es halt so aus:
![]() |
C-/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
const float WalkSpeed = 2.21245f; vx = 0.f; if (App.GetInput().IsKeyDown(sf::Key::Left)) { vx -= WalkSpeed; } if (App.GetInput().IsKeyDown(sf::Key::Right)) { vx += WalkSpeed; } |
Zitat von »"Jonathan_Klein"«
Wenn jetzt mal 100 Ereignisse kommen, die keine Tastendrücke sind, wird eins nach dem anderen abgearbeitet, aber immer nur 1 pro Frame. Das würde Verzögerungen erklären.
![]() |
C-/C++-Quelltext |
1 |
while (App.GetEvent(Event))
|
![]() |
C-/C++-Quelltext |
1 |
if (App.GetEvent(Event))
|
Das war nur so eine Anmerkung, damit dir auch in Zukunft keine Events verloren gehen.
Zitat von »"Nexxtron"«
bei while gings auch nich....
Werbeanzeige