gpt4 book ai didi

c# - 检测可能的射弹与盾牌碰撞

转载 作者:行者123 更新时间:2023-11-30 17:00:12 24 4
gpt4 key购买 nike

我正在尝试检测射弹是否会撞击防护罩 - 以及碰撞将发生在何处。

enter image description here

在这张图片上,你可以看到情况。虽然 AB 射弹与护盾中心 S 的距离大致相同,但其中一枚会与护盾碰撞,另一枚会不是。

enter image description here

数学上简单的解决方案将使用圆的数学方程和射弹路径的直线方程。

用笔和纸,我可以计算。但是,我在直接实现解析几何方面有非常糟糕的经历。

另外,对于离开护盾的射弹,这会返回正值。我如何过滤它们?

enter image description here

第二种方法, friend 的想法,是测量射弹路径和防护罩中心之间的最小距离 - 如果 l 小于 r,就会发生碰撞。

实现起来好像比较容易,但是没有让我知道哪里会发生碰撞。

我在二维空间工作。我正在使用 C# 和 Unity 引擎,但欢迎使用通用解决方案。

弹丸当然被认为是一个零大小的点。

最佳答案

使用轨迹的参数方程:X= X0 + t.P + X0Y = t.Q + Y0(从(X0, Y0) 方向 (P, Q)).

将其代入圆方程(X - Xc)^2 + (Y - Yc)^2 = R^2,得到:

(t.P + Dx)^2 + (t.Q + Dy)^2 = (P^2+Q^2).t^2 + 2.(P.Dx+Q.Dy).t + Dx^2+Dy^2 = R^2.

这是 t 中的二次方程。每当有正根时,盾牌就会被击中。

如果您的射弹具有非零半径 r,想象一下您将射弹放气到 0 并将目标充气到 R + r

关于c# - 检测可能的射弹与盾牌碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622511/

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