2013-03-20 74 views
0

我注意到有一段簡單的代碼一些非常奇怪的行爲,我已經剝離下來,以消除任何變量,時間步長,加速度等推力運動,很奇怪的行爲

我在屏幕上有一個形狀,按下屏幕的左側將形狀向右推,按右側向左推。由於某種原因,形狀偏向左移(speed < 0)。它似乎是正確減速時正確地移動,但向左移動完成減速,然後繼續約0.3秒,然後停止。

float speed; 
int x; 

對形狀更新方法:

speed *= 0.9f; 

if (Math.abs(speed) < 0.1f) 
    speed = 0; 

if (Gdx.input.isTouched()) { 
    if (Gdx.input.getX() < Gdx.graphics.getWidth()/2) { 
     speed = 10; 
    } else { 
     speed = -10; 
    } 
} 

x += speed; 
+0

我注意到你的第一條if語句沒有大括號。這是因爲什麼原因? – DrinkJavaCodeJava 2013-03-20 16:54:56

回答

2

x應被定義爲浮動。我使用int因爲視口設置爲屏幕大小,但最終意識到它需要有精度。