javascript逐渐减速(左)

标签 javascript

我有一个程序,如果用户按住向左或向右箭头键, Angular 色会逐渐朝那个方向加速,并最终达到最大速度。松开按键后, Angular 色逐渐减速,直至完全停止。

我的右方向键没问题,但左方向键坏了。我的左箭头键可以很好地加速,但是当释放该键时, Angular 色只会直接回到按下左键之前开始的位置。 (可能比开始的地方更远一点)

我确实知道为什么会这样,但我试图修复它(未成功)并且我不想进一步填充我的程序。

这是我的代码:

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;
    }
  }
};

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

最佳答案

您有一个 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;
    }
  }

请注意,使用这段代码,如果对象正在朝一个方向移动,而您改变了方向,它首先会朝那个方向减速,然后开始朝相反的方向移动。

关于javascript逐渐减速(左),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38177284/

相关文章:

svg - 最广泛支持的 (IE + Opera) JavaScript Canvas /绘图库

javascript - 如何只保留第一个独特的正则表达式匹配?

javascript - 我怎样才能内爆每一行并显示在 table 上?

javascript - 正则表达式为空

javascript - 如何使用从零到数组完整大小的自然数自动填充 5x3x2 数组?

javascript - 在代码后面调用 window.onload 函数不起作用

javascript - 可见性设置为隐藏后,无法查看 html 表

javascript - 使用 PHP 将 PDF 转为 jpg

javascript - PageObjects + 非 Angular 页面 - 如何加入它们?

javascript - jQuery Multiselect - 全选并带有过滤搜索