Unity从内部到达Collider2D的边缘

时间:2014-12-20 23:07:31

标签: unity3d unity3d-2dtools

我有一个Collider2D在一个更大的,静止的Collider2D中移动,我想要从较小的一个中心到另一个中心的边缘沿着它行进的方向的距离。

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

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

但显然距离总是为0,因为它们已经相交了。

有没有办法做到这一点?

编辑:这是一张图表 diagram

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

1 个答案:

答案 0 :(得分:0)

不是试图检查碰撞,而是可以用数学方法进行。

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

以下是如何用数学方法解决这个问题: http://www.analyzemath.com/CircleEq/circle_line_intersection.html

另一种方法,如果您仍想进行光线投射,可以是沿着较小物体的运动矢量从一个点投射光线,其距离大于较大圆的直径。然后将该光线投射到较小的物体上。基本上,您是从圆圈外部而不是在圆圈内投射光线。