我製作了一個非常簡單的引擎,它基本上繪製了一個角色,然後您可以在屏幕上移動它。GLUT中的平滑運動
但我確實在相當可怕的方式運動,我的意思是它是基於這樣的離散值:
void Scene::movePlayer(int dir) {
switch (dir){
case 1: yy = yy + 0.05;
break;
case 2: xx = xx - 0.05;
break;
case 3:
yy = yy - 0.05;
break;
case 4:
xx = xx + 0.05;
break;
default:
break;
}
其工作和運動的性格,但我真的不喜歡它,因爲它是非常跳躍,並且不光滑。
我喜歡更流暢的動作,就像在馬里奧或類似的東西。
你能告訴我如何做到這一點嗎?
您是否正在考慮*加速/減速*,而不是現在的離散「停止/移動」? – usr2564301
這將是很好,但它不是我目前的重點。 基本上現在,0.05值會在兩個位置之間產生顯着的「跳躍」,這很容易察覺。當我減小此值時,運動更平滑(因爲跳躍要短得多),但也會使角色移動得慢得多(因爲要移動設定距離需要更大量的「跳躍」。) 我不知道如何平衡它,這樣角色就可以在屏幕上合理快速移動,但它也會使它變得非常小,所以看起來很平滑。 – Macko
這是一個幀率問題。幀速越快,在同一時間段內從A到B的移動步長就越小。那麼如何檢測角色應該移動並重繪場景? – Robinson