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 方向) に移動すると、停止するのにはるかに時間がかかります。理由がわかりません。コードは完全に対称に見えます。これはある種の浮動小数点ブードゥーですか?