可以說我有其控制像下面一些字符移動的方法:C++增量發出
void Player::moveRight(Uint32 ticks)
{
if(speedx < maxspeed) { speedx += accel; }
x += speedx * (ticks/1000.f);
//collision
if(x > (float)(800 - width)) { x = (float)(800 - width); }
}
MAXSPEED = 300和加速度= 2(也,speedx從0開始)
現在沒有什麼錯,直到我在方程中加入一個恆定的減速/摩擦。基本上,我有一個不斷減速的1
這是從每幀的速度中減去。如果角色沒有移動,他們會逐漸停下來。
問題是這樣的:如果speedx = 299
由於減速,我的if語句仍然是真的,並且它繼續添加accel
,它將速度提高到301,超過最大速度。
對於這個問題,有什麼好的解決方案可以讓我獲得任何加速度和減速度值,並且不會跳過if語句?
請注意,您的加速度是按時間計算的,而速度是按時間計算的。 (這會讓accepartion在不同的幀速率下表現不同,而速度會相同) – Dani