javascript逐渐减速(左)

javascript逐渐减速(左),javascript,Javascript,我有一个程序,如果用户按住左箭头键或右箭头键,角色会逐渐向该方向加速,最终达到最大速度。释放键时,角色逐渐减速,直到完全停止 我的右箭头键没问题,但左箭头坏了。我的左箭头键加速很好,但当释放该键时,角色会直接移动回按下左键之前开始的位置。 (可能比开始的地方稍微远一点) 我确实知道为什么会发生这种情况,但我试图修复它(没有成功),我不想进一步充实我的程序 这是我的密码: var maxSpeed = 15; var xForce = 0; var kingXPos = 10; var kingY

我有一个程序,如果用户按住左箭头键或右箭头键,角色会逐渐向该方向加速,最终达到最大速度。释放键时,角色逐渐减速,直到完全停止

我的右箭头键没问题,但左箭头坏了。我的左箭头键加速很好,但当释放该键时,角色会直接移动回按下左键之前开始的位置。 (可能比开始的地方稍微远一点)

我确实知道为什么会发生这种情况,但我试图修复它(没有成功),我不想进一步充实我的程序

这是我的密码:

var maxSpeed = 15;
var xForce = 0;
var kingXPos = 10;
var kingYPos = 200;

var draw = function () {
  background(255, 0, 0);
  image(getImage("creatures/Winston"), kingXPos, kingYPos, 50, 50);

  if (keyIsPressed && keyCode === RIGHT) {
    kingXPos = kingXPos + xForce;
    xForce = xForce + 0.1;
    if (xForce >= maxSpeed && keyIsPressed) {
      xForce = maxSpeed;
    }
  }

  if (keyIsPressed && keyCode === LEFT) {
    kingXPos = kingXPos - xForce;
    xForce = xForce + 0.1;
    if (xForce <= -maxSpeed && keyIsPressed) {
      xForce = -maxSpeed;
    }
  }

  if (!keyIsPressed) {
    if (xForce > 0) {
      kingXPos = kingXPos + xForce;
      xForce = xForce - 0.1;
    }
  }
};
var maxSpeed=15;
var xForce=0;
var-kingXPos=10;
var kingYPos=200;
var draw=函数(){
背景(255,0,0);
图像(getImage(“生物/温斯顿”)、kingXPos、kingYPos、50、50);
if(键按&&keyCode===右){
kingXPos=kingXPos+xForce;
xForce=xForce+0.1;
if(xForce>=maxSpeed&&keyipressed){
xForce=最大速度;
}
}
if(按键按下&&keyCode==左){
kingXPos=kingXPos-xForce;
xForce=xForce+0.1;
if(xForce 0){
kingXPos=kingXPos+xForce;
xForce=xForce-0.1;
}
}
};

此代码被破坏,因为当我释放左键时,我的!如果语句仍然为true,并且xForce仍然变小,则keyIsPressed。我只是不知道如何解决这个问题。

您有一个
xForce
变量,在某些情况下方向为
+/-
,在其他情况下没有方向。这就是问题所在

如果不想跟踪力的方向,应注意
xForce
符号(无论是否大于零)

这可能会奏效:

  if (keyIsPressed && keyCode === RIGHT) {
    kingXPos = kingXPos + xForce;
    xForce = xForce + 0.1;
    if (xForce >= maxSpeed && keyIsPressed) {
      xForce = maxSpeed;
    }
  }

  if (keyIsPressed && keyCode === LEFT) {
    kingXPos = kingXPos + xForce;
    xForce = xForce - 0.1;
    if (xForce <= -maxSpeed && keyIsPressed) {
      xForce = -maxSpeed;
    }
  }

  if (!keyIsPressed) {
    kingXPos = kingXPos + xForce;
    if (xForce > 0) {
      xForce = xForce - 0.1;
    } else if(xForce < 0) {
      xForce = xForce + 0.1;
    }
  }
if(按键按下&&keyCode==右){
kingXPos=kingXPos+xForce;
xForce=xForce+0.1;
if(xForce>=maxSpeed&&keyipressed){
xForce=最大速度;
}
}
if(按键按下&&keyCode==左){
kingXPos=kingXPos+xForce;
xForce=xForce-0.1;
if(xForce 0){
xForce=xForce-0.1;
}否则如果(xForce<0){
xForce=xForce+0.1;
}
}
请注意,使用此代码,如果对象在某个方向上移动,而您改变了方向,它首先会在该方向上减速,然后开始向相反方向移动