版本: Unity 6 (6000.0)
语言英语
  • C#

Physics2D.Linecast

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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 坐标过滤对象。

Linecast 可用于确定视线、枪击命中的目标以及游戏玩法中的许多其他用途。

请注意,此函数将为返回的 RaycastHit2D 对象分配内存。如果您需要频繁进行 linecast,则可以使用 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 过滤。

使用 contactFilter 参数的此函数的重载可以通过 ContactFilter2D 中的选项过滤返回的结果。

其他资源:ContactFilter2DRaycastHit2D


声明

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

参数

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

返回值

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

描述

在场景中针对碰撞器投射线段,结果由 ContactFilter2D 过滤。

整数返回值是写入 results 列表中的结果数。如果列表不包含足够元素来报告所有结果,则列表将调整大小。这可以防止在 results 列表不需要调整大小时为结果分配内存,并在频繁执行查询时提高垃圾回收性能。

结果也可以通过 contactFilter 过滤。

其他资源:ContactFilter2DRaycastHit2D