【问题标题】:Unity get distance to edge of Collider2D from withinUnity 从内部获取到 Collider2D 边缘的距离
【发布时间】:2014-12-20 23:07:31
【问题描述】:

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

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

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

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

有什么办法吗?

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

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

【问题讨论】:

  • 图表或屏幕截图会很有帮助,当您说一个对撞机在另一个对撞机内部时,我不确定您在描述什么。
  • 好主意 Savlon,但是 Bounds 表示一个轴对齐的边界框,而外部 Collider2D 是一个圆。
  • 我已经设法通过编写自己的射线圆相交测试来做到这一点,但我仍然想知道是否有办法在 Unity 中内置。

标签: unity3d unity3d-2dtools


【解决方案1】:

您可以通过数学方式进行检查,而不是尝试检查碰撞。

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

以下是数学计算方法: http://www.analyzemath.com/CircleEq/circle_line_intersection.html

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2016-08-26
    • 2020-06-17
    • 2016-05-14
    • 1970-01-01
    相关资源
    最近更新 更多