javascript中的2d冲突

javascript中的2d冲突,javascript,p5.js,Javascript,P5.js,我正在使用p5.js制作一个游戏,游戏中有一个玩家和障碍。这两个都是简单的矩形。我能够使用简单的碰撞检测来查看它们是否重叠。我想做的是,当玩家遇到障碍时,它会像现实生活中的物理一样停止。我目前有一个系统,它将障碍物的两侧视为四个不同的障碍物,但效果不好。有人能给我一些建议,让我能做得更好 if(walls[i].x < p1.x + p1.width/2 && walls[i].x + 5 > p1.x &&

我正在使用p5.js制作一个游戏,游戏中有一个玩家和障碍。这两个都是简单的矩形。我能够使用简单的碰撞检测来查看它们是否重叠。我想做的是,当玩家遇到障碍时,它会像现实生活中的物理一样停止。我目前有一个系统,它将障碍物的两侧视为四个不同的障碍物,但效果不好。有人能给我一些建议,让我能做得更好

    if(walls[i].x < p1.x + p1.width/2 &&
        walls[i].x + 5 > p1.x && 
        walls[i].y + walls[i].height + p1.height/2 > p1.y &&
        walls[i].y < p1.y + p1.height/2){
            p1.x = walls[i].x-p1.width/2
        }
        if(walls[i].x < p1.x + p1.width/2 &&
            walls[i].x + walls[i].width + p1.width/2 > p1.x && 
            walls[i].y + p1.height/2 > p1.y &&
            walls[i].y < p1.y + p1.height/2){
                p1.y = walls[i].y-p1.height/2
            }
    if(walls[i].x < p1.x + p1.width/2 &&
     walls[i].x + walls[i].width + p1.width/2 > p1.x &&
    p1.y > walls[i].y + walls[i].height - 5 &&
    p1.y - p1.height/2 < walls[i].y + walls[i].height){
    p1.y = walls[i].y + walls[i].height + p1.width/2
     }
     if(p1.x > walls[i].x + walls[i].width - 5 &&
        p1.x - p1.width/2 < walls[i].x + walls[i].width && 
        walls[i].y + walls[i].height + p1.height/2 > p1.y &&
        walls[i].y < p1.y + p1.height/2){
            p1.x = walls[i].x + walls[i].width + p1.width/2
        }
if(墙[i].xp1.x&&
墙[i]。y+墙[i]。高度+p1.height/2>p1.y&&
墙[i].yp1.x&&
墙[i].y+p1.height/2>p1.y&&
墙[i].yp1.x&&
p1.y>墙[i]。y+墙[i]。高度-5&&
p1.y-p1.height/2<墙[i]。y+墙[i]。高度){
p1.y=墙[i]。y+墙[i]。高度+p1.width/2
}
如果(p1.x>墙[i].x+墙[i].宽度-5&&
p1.x-p1.width/2<墙[i]。x+墙[i]。宽度和
墙[i]。y+墙[i]。高度+p1.height/2>p1.y&&
墙[i].y

如果有人要我发布所有代码,我会发布,但代码有点长

这是我使用的包,而不是导入matter.js这样的重量级物理库:


如果你想在自己的反应中编程,而不是遵循matter.js的物理估计,那么它非常适合检测碰撞。我通常使用它来避免进行难看的手动碰撞计算(尤其是不规则多边形)。

你能添加一个吗?是的,对我来说,发布整个内容可能更容易。好的,你能更好地使用一个或片段吗?您还可以在StackOverflow(问题编辑器中的第7个图标)中插入代码段这可能更适合于也为了避免实现碰撞,你自己是一个非常简单的人,但并不真正关注性能,是一个完整的物理引擎,可能有用,但你的手有点难。我最终使用了matter.js,它工作得很好谢谢你的帮助如果matter.js解决方案不起作用或运行不平稳。