相关疑难解决方法(0)

圆/矩形碰撞响应

所以我前段时间建了一个Breakout克隆,我想稍微升级它,主要是为了碰撞.当我第一次做到这一点时,我的球和我的砖之间有一个基本的" 碰撞 "检测,实际上将球视为另一个矩形.但是这会产生边缘碰撞的问题,所以我想我会改变它.问题是,我找到了我的问题的一些答案:例如这个图像 ball_deflection.jpeg和这个线程的最后一个评论:圆/ 碰撞反应,但我找不到如何计算最终的速度矢量.

到目前为止,我有:

- 找到矩形上最近的点,
- 创建法线和切线向量,

现在我需要的是以某种方式"将速度矢量划分为法线分量和切线分量;否定法线分量并添加法线和切线分量以获得新的速度矢量"如果这看起来非常简单,我很抱歉我无法理解......代码:

function collision(rect, circle){
  var NearestX = Max(rect.x, Min(circle.pos.x, rect.x + rect.w));
  var NearestY = Max(rect.y, Min(circle.pos.y, rect.y + rect.w));

  var dist = createVector(circle.pos.x - NearestX, circle.pos.y - NearestY);
  var dnormal = createVector(- dist.y, dist.x);
//change current circle vel according to the collision response
}
Run Code Online (Sandbox Code Playgroud)

谢谢 !

编辑:也找到了这个,但我不知道它是否适用于矩形的所有点或只有角落.

javascript math game-physics

2
推荐指数
2
解决办法
2307
查看次数

标签 统计

game-physics ×1

javascript ×1

math ×1