圆A与圆B的两半碰撞

时间:2015-10-27 20:13:21

标签: javascript canvas html5-canvas

我似乎无法解决与碰撞检测相关的数学问题。

我有了基本的想法。找出两个相反的x和y值之间的差异。通过将两个结果相乘得到距离来计算距离,然后检查两个球是否发生碰撞。然后检查角度的任何部分是否相交。老实说,它有点工作,但仍然破碎。

问题:当开始游戏时我让球与可见的一半碰撞然后碰撞工作,当球进入不可见区域时,碰撞返回false。另一方面,当重新启动并让它与非可见区域碰撞时,碰撞返回true,然后当它进入半圆的可见部分时为false。

它可能是什么?我怀疑是因为轮换所致。这老实说很奇怪。这是一个演示:

http://jsfiddle.net/2rz296tf/17/

以下基本公式使其成为"工作:

move(...)

1 个答案:

答案 0 :(得分:1)

您将角度与长度进行比较:semi < radiusB。这没有任何意义。你应该将semi与盾牌的方向进行比较,而不是半径。

查看代码,您应该执行semi >= angle - Math.PI && semi <= angle之类的操作。你需要实现一种方法来处理角度从-pi到pi然后循环的事实。