Version: 2021.3
public int Raycast (Vector2 direction, RaycastHit2D[] results, float distance= Mathf.Infinity, int layerMask= Physics2D.AllLayers, float minDepth= -Mathf.Infinity, float maxDepth= Mathf.Infinity);
public int Raycast (Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results, float distance= Mathf.Infinity);

参数

direction 表示光线方向的向量。
results 用于接收结果的数组。
distance 光线的最大投射距离。
layerMask 筛选器,用于检查仅在指定层上的对象。
minDepth 仅包括 Z 坐标(深度)大于该值的对象。
maxDepth 仅包括 Z 坐标(深度)小于该值的对象。
contactFilter 筛选由接触筛选器定义的结果。

返回

int 返回的结果数量。

描述

将光线投射到从碰撞体位置开始的场景中,并忽略碰撞体本身。

此函数类似于 [[Physics2D::RaycastNonAlloc]] 函数,同样,这些结果返回在提供的数组中。整数返回值是为与该光线交叠的对象数(可能为零),但如果结果数组中没有足够的元素来报告所有这些结果,则不会调整该数组的大小。其意义在于不为这些结果分配内存,因此,如果经常进行光线投射,可以提高垃圾回收性能。

使用 contactFilter 筛选器的此函数重载按 ContactFilter2D 中提供的选项筛选结果。

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

另请参阅:LayerMask 类、RaycastHit2D 类、[[Physics2D::RaycastNonAlloc]]、[[Physics2D::AllLayers]]、[[Physics2D::IgnoreRaycastLayer]]、[[Physics2D::raycastsHitTriggers]]。


public int Raycast (Vector2 direction, ContactFilter2D contactFilter, List<RaycastHit2D> results, float distance= Mathf.Infinity);

参数

direction 表示光线方向的向量。
contactFilter 筛选由接触筛选器定义的结果。
results 用于接收结果的列表。
distance 光线的最大投射距离。

返回

int 返回的结果数量。

描述

将光线投射到从碰撞体位置开始的场景中,并忽略碰撞体本身。

此函数类似于 [[Physics2D::RaycastNonAlloc]] 函数,同样,这些结果在提供的列表中返回。该整数返回值是与光线相交的碰撞体数(可能为零)。如果结果列表中没有足够的元素来报告所有这些结果,则会调整列表的大小。这可在 results 列表无需调整大小时防止为结果分配内存,可在经常执行查询时提高垃圾收集性能。

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

另请参阅:RaycastHit2D 类。