作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎无法解决与碰撞检测相关的数学问题。
我得到了基本的想法。求两个相反的 x 和 y 值之间的差。通过将两个结果本身相乘来计算距离,然后检查两个球是否碰撞。然后检查 Angular 是否有任何部分相交。老实说,它有点工作,但仍然损坏。
问题:当开始游戏时,我让球与可见的一半碰撞,然后碰撞起作用,当球进入不可见区域时,碰撞返回 false。另一方面,当重新启动并让它与不可见区域碰撞时,碰撞返回 true,然后当进入半圆的可见部分时返回 false。
它可能是什么?由于我的轮换,我怀疑有什么事情。老实说,这很奇怪。这是一个演示:
http://jsfiddle.net/2rz296tf/17/
下面是使它“有点”起作用的基本公式:
var dx = a - b;
var dy = a - b;
var semi = Math.atan2(dx, dy)
var distance = Math.sqrt(dx * dx + dy * dy);
var hit = (distance < radiusA + radiusB) && (semi >= 0 && semi < angleB);
最佳答案
您正在比较 Angular 和长度:semi < radiusB
。这没有任何意义。您应该比较semi
到你的盾牌的方向,而不是它的半径。
查看您的代码,您应该执行类似 semi >= angle - Math.PI && semi <= angle
的操作反而。您需要实现一种方法来处理 Angular 从 -pi 到 pi 然后循环的事实。
关于javascript - 圆 A 与圆 B 的两半相碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377612/
现在我正在尝试实现 flash programming specification对于 PIC32MX。我正在使用 PIC32MX512L 和 PIC32MX512H。 PIC32MX512L最终必须
我是一名优秀的程序员,十分优秀!