public static RaycastHit2D Raycast (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 返回的投射数量。

描述

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

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

函数返回一个 RaycastHit 对象,该对象引用了射线命中的碰撞体(如果未命中任何对象,则结果的碰撞体属性将为 NULL)。layerMask 可用于仅在特定层上有选择地检测对象(例如,这让您能够仅将检测应用于敌人角色)。

使用 contactFilter 的此方法重载可以按 ContactFilter2D 中提供的选项筛选结果。

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

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

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

no example available in C#

public static int Raycast (Vector2 origin, Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results, float distance= Mathf.Infinity);

参数

origin射线在 2D 空间中的起点。
direction表示射线方向的向量。
contactFilter接触筛选器,用于以不同方式筛选结果,例如按层遮罩、Z 深度或法线角度。
results用于接收结果的数组。该数组的大小决定可返回的结果的最大数量。
distance光线的最大投射距离。

返回

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

描述

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

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

该函数返回找到的接触点数,并将这些接触点放入 results 数组。也可以通过 contactFilter 对结果进行过滤。

另请参阅:ContactFilter2DRaycastHit2D