2013-03-20 78 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因为视口设置为屏幕大小,但最终意识到它需要有精度。