public static RaycastHit2D Linecast (Vector2 start, Vector2 end, int layerMask= DefaultRaycastLayers, float minDepth= -Mathf.Infinity, float maxDepth= Mathf.Infinity);

参数

start线在世界空间中的起点。
end线在世界空间中的终点。
layerMask过滤器,用于仅在特定层上检测碰撞体。
minDepth仅包括 Z 坐标(深度)大于或等于该值的对象。
maxDepth仅包括 Z 坐标(深度)小于或等于该值的对象。

返回

RaycastHit2D 返回的投射数量。

描述

向场景中的碰撞体投射线段。

linecast 是世界空间中两点之间的一段假想线。在该过程中,可以检测并报告与该线接触的任何对象。它类似于 raycast,不同之处在于,射线投射使用原点和方向指定线条。

当线与场景中的碰撞体接触时,该函数返回一个 RaycastHit2D 对象。layerMask 可用于仅在特定层上有选择地检测对象(例如,这让您能够仅将检测应用于敌人角色)。假设线的方向是从起点延伸到终点。仅报告在该方向上遇到的第一个碰撞体。虽然 Z 轴与 2D 中的渲染或碰撞无关,但您可以使用 minDepthmaxDepth 参数根据其 Z 轴坐标筛选对象。

对于确定视线、炮火击中的目标以及游戏中的许多其他目的来说,线条投射很有用。

注意,该函数将为返回的 RaycastHit2D 对象分配内存。如果需要频繁进行线条投射,可以使用 LinecastNonAlloc 来避免这种开销。

此外,这还将检测位于线条起点的碰撞体。在这种情况下,线条从碰撞体内部开始,并且不与碰撞体表面交叠。这意味着无法计算碰撞法线,在这种情况下,返回的碰撞法线设置为正在测试的线条向量的倒数。这可轻松检测到,因为此类结果始终是 RaycastHit2D 分数为零。

另请参阅:LayerMask 类、RaycastHit2D 类、LinecastAllLinecastNonAllocDefaultRaycastLayersIgnoreRaycastLayerraycastsHitTriggers


public static int Linecast (Vector2 start, Vector2 end, ContactFilter2D contactFilter, RaycastHit2D[] results);

参数

start线在世界空间中的起点。
end线在世界空间中的终点。
contactFilter接触筛选器,用于以不同方式筛选结果,例如按层遮罩、Z 深度或法线角度。
results用于接收结果的数组。该数组的大小决定可返回的结果的最大数量。

返回

int 返回放置在 results 数组中的结果数。

描述

向场景中的碰撞体投射线段,并使用 ContactFilter2D 对结果进行过滤。

linecast 是世界空间中两点之间的一段假想线。在该过程中,可以检测并报告与该线接触的任何对象。它类似于 raycast,不同之处在于,射线投射使用原点和方向指定线条。

使用 contactFilter 参数重载该函数,可按 ContactFilter2D 中的选项筛选返回的结果。

另请参阅:ContactFilter2DRaycastHit2D


public static int Linecast (Vector2 start, Vector2 end, ContactFilter2D contactFilter, List<RaycastHit2D> results);

参数

start线在世界空间中的起点。
end线在世界空间中的终点。
contactFilter接触筛选器,用于以不同方式筛选结果,例如按层遮罩、Z 深度或法线角度。
results用于接收结果的列表。

返回

int 返回放置在 results 列表中的结果数。

描述

向场景中的碰撞体投射线段,并使用 ContactFilter2D 对结果进行过滤。

linecast 是世界空间中两点之间的一段假想线。在该过程中,可以检测并报告与该线接触的任何碰撞体。它类似于 raycast,不同之处在于,射线投射使用原点和方向指定线条。

该整数返回值是写入到 results 列表中的结果数。如果结果列表中没有足够的元素来报告所有这些结果,则会调整列表的大小。这可在 results 列表无需调整大小时防止为结果分配内存,可在经常执行查询时提高垃圾收集性能。

也可以通过 contactFilter 对结果进行筛选。

另请参阅:ContactFilter2DRaycastHit2D