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

PhysicsScene2D.Raycast

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户提出的每项修改建议,并在必要时进行更新。

关闭

提交失败

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

关闭

取消

声明

public RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask = Physics2D.DefaultRaycastLayers);

声明

public RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, ContactFilter2D contactFilter);

参数

origin 射线起源的二维空间中的点。
direction 表示射线方向的向量。
distance 发射射线的最大距离。
layerMask 用于仅检测特定图层上的碰撞器的过滤器。
contactFilter 用于以不同方式过滤结果的接触过滤器,例如按图层蒙版和 Z 深度或法线角度。

返回值

RaycastHit2D 返回的投射结果。

描述

在 PhysicsScene2D 中对碰撞器发射射线,仅返回第一个交点。

射线投射从概念上来说就像从空间中的一个点沿着特定方向发射的激光束。可以检测到并报告与光束接触的任何物体。射线投射对于确定视线、被枪击击中的目标以及游戏玩法中的许多其他目的很有用。

此函数返回一个 RaycastHit2D 对象,其中包含对被射线击中的 Collider2D 的引用(如果未击中任何物体,则结果的 collider 属性将为 NULL)。

layerMask 可用于选择性地仅检测特定图层上的物体(例如,这使您能够将检测仅应用于敌方角色)。使用 contactFilter 的此方法的重载可以根据 ContactFilter2D 中提供的选项过滤结果。

此外,这也会检测射线起点的碰撞器(s)。在这种情况下,射线从碰撞器内部开始,并且不与碰撞器表面相交。这意味着无法计算碰撞法线,在这种情况下,返回的碰撞法线将设置为被测试的射线向量的反向。这很容易检测到,因为此类结果始终在 RaycastHit2D 的零分数处。

其他资源:PhysicsScene2DRaycastHit2DLayerMaskPhysics2D.DefaultRaycastLayersPhysics2D.IgnoreRaycastLayerPhysics2D.queriesHitTriggers & Collider2D.Raycast


声明

public int Raycast(Vector2 origin, Vector2 direction, float distance, RaycastHit2D[] results, int layerMask = Physics2D.DefaultRaycastLayers);

声明

public int Raycast(Vector2 origin, Vector2 direction, float distance, ContactFilter2D contactFilter, RaycastHit2D[] results);

参数

origin 射线起源的二维空间中的点。
direction 表示射线方向的向量。
distance 发射射线的最大距离。
layerMask 用于仅检测特定图层上的碰撞器的过滤器。
contactFilter 用于以不同方式过滤结果的接触过滤器,例如按图层蒙版和 Z 深度或法线角度。
results 用于接收结果的数组。数组的大小决定了可以返回的最大结果数。

返回值

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

描述

在 PhysicsScene2D 中对碰撞器发射射线,返回所有交点。

射线投射从概念上来说就像从空间中的一个点沿着特定方向发射的激光束。可以检测到并报告与光束接触的任何物体。射线投射对于确定视线、被枪击击中的目标以及游戏玩法中的许多其他目的很有用。

此函数返回与射线相交的任何 Collider2D,结果将返回到提供的数组中。整型返回值是与直线相交的物体数量(可能为零),但如果数组中没有足够的元素来报告所有结果,则结果数组不会调整大小。这样做的意义在于不会为结果分配内存,因此可以提高垃圾回收性能。请注意,如果您传递一个空数组,您将始终获得零个结果。

layerMask 可用于选择性地仅检测特定图层上的物体(例如,这使您能够将检测仅应用于敌方角色)。使用 contactFilter 的此方法的重载可以根据 ContactFilter2D 中提供的选项过滤结果。

此外,这也会检测射线起点的碰撞器(s)。在这种情况下,射线从碰撞器内部开始,并且不与碰撞器表面相交。这意味着无法计算碰撞法线,在这种情况下,返回的碰撞法线将设置为被测试的射线向量的反向。这很容易检测到,因为此类结果始终在 RaycastHit2D 的零分数处。

所有结果都按升序距离排序。

其他资源:PhysicsScene2DRaycastHit2DLayerMaskPhysics2D.DefaultRaycastLayersPhysics2D.IgnoreRaycastLayerPhysics2D.queriesHitTriggers & Collider2D.Raycast


声明

public int Raycast(Vector2 origin, Vector2 direction, float distance, ContactFilter2D contactFilter, List<RaycastHit2D> results);

参数

origin 射线起源的二维空间中的点。
direction 表示射线方向的向量。
distance 发射射线的最大距离。
contactFilter 用于以不同方式过滤结果的接触过滤器,例如按图层蒙版和 Z 深度或法线角度。
results 用于接收结果的列表。

返回值

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

描述

在 PhysicsScene2D 中对碰撞器发射射线,返回所有交点。

射线投射从概念上来说就像从空间中的一个点沿着特定方向发射的激光束。可以检测到并报告与光束接触的任何物体。射线投射对于确定视线、被枪击击中的目标以及游戏玩法中的许多其他目的很有用。

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

结果还可以通过 contactFilter 进行过滤。所有结果都按升序距离排序。

其他资源:PhysicsScene2DRaycastHit2D