Hey,
also mein Problem ist Folgendes:
Ich will ein Sprite mit den Tasten S und W nach oben und unten verschieben. Beim normalen verändern der Y-Koordinate Funktioniert das auch einwandfrei. Wenn ich allerdings die Werte mit einem Timer multipliziere verändert sich die Geschwindigkeit die ganze Zeit. Meistens ist beim nach oben verschieben das Sprite viel schneller als nach unten. Jedoch ist nicht einmal das Konstant, manchmal kriecht die Textur so dahin, und manchmal ist sie sofort am jeweiligen Ende des Fensters. Hoffe mir kann jemand Helfen. Hier nochmal die betroffenen Code Abschnitte.
|
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
|
void Game::Update(){
SDL_PumpEvents();
if(KeyDown(SDLK_w))
player.Move("up");
if(KeyDown(SDLK_s))
player.Move("down");
if(KeyDown(SDLK_ESCAPE))
gamerun = false;
}
void Timer::Update (){
CurTime = SDL_GetTicks() / 1000.0f;
Elapsed = CurTime - LastTime;
LastTime = CurTime;
}
void Player::Move(string direction){
if(direction == "up")
y -= speed * timer->GetElapsed();
else if(direction == "down")
y += speed * timer->GetElapsed();
if(y < 0) y = 0;
if(y > 380) y = 380;
sprite->SetPos(x, y);
}
|