我似乎无法解决与碰撞检测相关的数学问题。
我有了基本的想法。找出两个相反的x和y值之间的差异。通过将两个结果相乘得到距离来计算距离,然后检查两个球是否发生碰撞。然后检查角度的任何部分是否相交。老实说,它有点工作,但仍然破碎。
问题:当开始游戏时我让球与可见的一半碰撞然后碰撞工作,当球进入不可见区域时,碰撞返回false。另一方面,当重新启动并让它与非可见区域碰撞时,碰撞返回true,然后当它进入半圆的可见部分时为false。
它可能是什么?我怀疑是因为轮换所致。这老实说很奇怪。这是一个演示:
http://jsfiddle.net/2rz296tf/17/
以下基本公式使其成为"工作:
move(...)
答案 0 :(得分:1)
您将角度与长度进行比较:semi < radiusB
。这没有任何意义。你应该将semi
与盾牌的方向进行比较,而不是半径。
查看代码,您应该执行semi >= angle - Math.PI && semi <= angle
之类的操作。你需要实现一种方法来处理角度从-pi到pi然后循环的事实。