圆线滑动碰撞(js)

时间:2019-01-04 13:59:03

标签: javascript line game-physics collision geometry

我正在使用Html-Canvas用纯JavaScript进行视频游戏。

我需要找到与直线碰撞的圆的新的保存x和y坐标。

我已经找到一种简单的方法来判断圆是否与直线相交,但是后来我无法根据圆的方向和线的摩擦力找出如何找到新的圆位置。

screenshot example

因此完成了碰撞检测,现在可以正常工作了,问题是球的未来位置。

我不是在寻找弹跳物理学,而是在寻找非弹性碰撞。

我想的是:

  1. angleOfStart + angleOfImpact的比率(假设碰撞角度为90°,这意味着我以垂直方式在直线上碰撞,起始角度为0°,这意味着我向右移动,因此x不能增长,但是y可以上升和下降...我认为通过应用此报告,我们可以找到一个对所有碰撞角均有效的公式。
  2. 按照与线段碰撞的方向(当我与一条线碰撞时,我知道机器人的点a和点b,那么我可以计算出这条线的角度,然后可以迫使我的圆只在那个方向上移动,乘以初始速度-会有一些摩擦)。

这些想法在我看来都是可行的,但是一旦在javascript中实现它们,似乎有时才可行...

让我们说一个对象段发生了碰撞:

segment = {
   a : {
         x : // some value,
         y : // some value
       },
   b : {
         x : // some value,
         y : // some value
       }
}

circle = {
    x: // value,
    y: // value,
    ray: // value
}

future_circle = {
    x: // x where user wants to go,
    y: // y where user wants to go,
    ray : // value
}

我知道圆没有与段碰撞。 但是,如果我让圆移动成为“未来圆”,那么它们将发生碰撞

我需要更改将来的圆值,以使我的圆不停止,并且不会越过线...我需要使圆的线段与线段对齐,并注意摩擦。

我决定对其他解决方案敞开心mind,肯定会比我的解决方案更好。 任何帮助表示赞赏。

对不起,我的英语不好。

0 个答案:

没有答案