gpt4 book ai didi

javascript逐渐减速(左)

转载 作者:行者123 更新时间:2023-11-29 15:26:51 30 4
gpt4 key购买 nike

我有一个程序,如果用户按住向左或向右箭头键, 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com