Version: 2020.3
public static RaycastHit2D[] RaycastAll (Vector2 origin, Vector2 direction, float distance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, float minDepth= -Mathf.Infinity, float maxDepth= Mathf.Infinity);

参数

origin 射线在 2D 空间中的起点。
direction 表示射线方向的矢量。
distance 射线的最大投射距离。
layerMask 过滤器,用于仅在特定层上检测碰撞体。
minDepth 仅包括 Z 坐标(深度)大于或等于该值的对象。
maxDepth 仅包括 Z 坐标(深度)小于或等于该值的对象。

返回

RaycastHit2D[] 返回的投射数量。

描述

Casts a ray against Colliders in the Scene, returning all Colliders that contact with it.

从概念上说,射线投射 类似于从空间中的某个点朝特定方向发射一条光束。在该过程中,可以检测并报告与光束接触的任何对象。

This function is similar to the Raycast function but instead of detecting just the first Collider that is hit, an array of all Colliders along the path of the ray is returned. The Colliders in the array are sorted in order of distance from the origin point. The layerMask can be used to detect objects selectively only on certain layers (this allows you to apply the detection only to enemy characters, for example).

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

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

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