gpt4 book ai didi

javascript - 圆 A 与圆 B 的两半相碰撞

转载 作者:行者123 更新时间:2023-11-27 23:44:19 24 4
gpt4 key购买 nike

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

我得到了基本的想法。求两个相反的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com