0

我有一个Collider2D,它在一个较大的固定 Collider2D 内移动,我想沿着它的行进方向获得从较小的中心到较大的边缘的距离。

我的第一个想法是使用Raycast,例如:

Physics2D.Raycast(this.transform.position, 
                  this.rigidbody2D.velocity.normalized).distance;

但显然距离始终为 0,因为它们已经相交。

有没有办法做到这一点?

编辑:这是根据要求的图表 图表

两个圆圈都是 Collider2D 对象,箭头是较小的一个正在行进的方向,红色 x 是我想要找到的点(所以我可以确定距离)。

4

1 回答 1

0

你可以用数学方法来检查碰撞,而不是尝试检查碰撞。

如果您知道圆的半径/位置、较小的 Collider2D 的位置以及它的运动矢量,那么您可以求解该运动矢量与圆相交的位置。

以下是如何从数学上计算出来: http ://www.analyzemath.com/CircleEq/circle_line_intersection.html

如果您仍想进行光线投射,另一种方法可能是从一个点沿较小对象的运动矢量投射光线,其距离大于较大圆的直径。然后这条射线将被投射到较小的物体上。本质上,您是从圆外而不是圆内投射光线。

于 2015-03-09T21:02:01.483 回答