Javascript 我的碰撞检测实现没有';Don’我行为不正常

Javascript 我的碰撞检测实现没有';Don’我行为不正常,javascript,p5.js,Javascript,P5.js,我一直在尝试在p5.js中使用一些简单的force实现,我想到了这个概念,但我觉得我忽略了代码中的一个简单错误。这是我现在的代码: var x = 0; var y = 0; var grav = new p5.Vector(0, 13, 0); var bounce = new p5.Vector(0, -13, 0); var isbounce = false; var ymax = 0; function setup() { createCanvas(600, 400); }

我一直在尝试在p5.js中使用一些简单的force实现,我想到了这个概念,但我觉得我忽略了代码中的一个简单错误。这是我现在的代码:

var x = 0;
var y = 0;
var grav = new p5.Vector(0, 13, 0);
var bounce = new p5.Vector(0, -13, 0);
var isbounce = false;
var ymax = 0;

function setup() {
    createCanvas(600, 400);
}

function draw() {
    console.log(ymax, isbounce);
    background(0);
    fill(255);
    ellipse(200, y, 50, 50);

    if (y < 376 && isbounce == false) {
        y += grav.y;
    }
    if (y >= 376) {
        isbounce = true;
    }
    if (isbounce == true) {
        y += bounce.y;
        if (y == ymax) {
            isbounce = false;
            ymax++;
        }
    }
}
var x=0;
var y=0;
var grav=新的p5.向量(0,13,0);
var bounce=新的p5.向量(0,-13,0);
var=false;
var-ymax=0;
函数设置(){
createCanvas(600400);
}
函数绘图(){
console.log(ymax、isbounce);
背景(0);
填充(255);
椭圆(200,y,50,50);
如果(y<376&&isbounce==false){
y+=重力y;
}
如果(y>=376){
isbounce=true;
}
如果(isbounce==true){
y+=反弹。y;
如果(y==ymax){
isbounce=false;
ymax++;
}
}
}


正如您所看到的,该对象确实会反弹两次,但随后它会完全浮离屏幕。我无法解释这一点,我查看了控制台,它确认它只反弹了两次(将
isbounce
设置为true,再次设置为false和true)。我所期望的是,
isbounce
将在对象每次落地时设置为true,并在其y值达到ymax时设置为false(这会减少每次反弹以刺激能量损失)。我认为这是一个相当简单的强制执行,但我不明白为什么它不起作用

替换
if(y==ymax){
if(y替换
if(y==ymax){
if(y无耻的自我推销:你可能会发现碰撞检测很有用。第一部分讲的是边缘碰撞检测。它是为处理而写的,但在P5.js中一切都应该差不多。@KevinWorkman我很感激你的建议,但我的问题不是碰撞检测。我想我的问题是我的实现在重力方面,我只是使用了一个错误的操作符,并忽略了它。不过,这是一个很好的教程。我不是想让人讨厌,如果你继续前进,不想再考虑这个问题,这完全没关系。但正如公认的答案所说,你的问题肯定是碰撞检测代码(用边缘检测碰撞)@KevinWorkman没关系,但我想你误解了我。我非常了解碰撞检测的工作原理,这只是我代码中的一个错误(我用==代替了无耻的自我提升:你可能会发现碰撞检测很有用。第一部分讨论了边缘碰撞检测。它是为处理而写的,但在P5.js中一切都应该差不多。@KevinWorkman我很欣赏这个建议,但我的问题不是碰撞检测。我认为我的问题是wi在我实现重力的过程中,结果发现我只是使用了一个错误的操作符,忽略了它。不过这是一个很好的教程。我并不想让人讨厌,如果你继续前进,不想再考虑这个问题,这是完全可以的。但正如公认的答案所说,你的问题肯定是碰撞检测代码(通过边缘检测碰撞)。@KevinWorkman没关系,但我认为你误解了我。我非常了解碰撞检测的工作原理,这只是我代码中的一个错误(我使用==而不是