double horizontalVel=0;
double horizontalAcc=0;
double friction = 0.96;
public void move(){
x += horizontalVel;
horizontalVel *= friction;
horizontalVel += horizontalAcc;
}
public void controlPress(int key){
if(key==39){
moveRight();
}
if(key==37){
moveLeft();
}
}
public void controlRelease(int key){
if((key==39) || (key==37)){
stop();
}
}
public void stop(){
horizontalAcc=0;
}
public void moveRight(){
horizontalAcc +=0.2;
heroImg = new ImageIcon("hero.png").getImage();
}
public void moveLeft(){
horizontalAcc -= 0.2;
heroImg = new ImageIcon("heroflipped.png").getImage();
}
总而言之,我正在运行一个游戏循环,在每次坐标更新之前计算速度和加速度。我的英雄在向左(负 x 方向)移动时比向右移动需要更长的时间才能停止。我不知道为什么。代码对我来说看起来完全对称。这是某种浮点巫术吗?