Version: 2017.3

Physics2D.LinecastNonAlloc

切换到手册
public static int LinecastNonAlloc (Vector2 start, Vector2 end, RaycastHit2D[] results, int layerMask= DefaultRaycastLayers, float minDepth= -Mathf.Infinity, float maxDepth= Mathf.Infinity);

参数

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

返回

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

描述

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

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

此函数类似于 LinecastAll 函数,不同之处在于其结果会返回到提供的数组中。整数返回值是与该线条交叠的对象数(可能为零),但如果结果数组中没有足够的元素来报告所有这些结果,则不会调整该数组的大小。其意义在于不为这些结果分配内存,因此,如果经常进行线条投射,可以提高垃圾回收性能。假设线条从其起点延伸到终点;在返回的数组中,碰撞体按照距离线条起点的距离顺序放置。

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

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