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

PhysicsScene2D.Linecast

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public RaycastHit2D Linecast(Vector2 start, Vector2 end, int layerMask = Physics2D.DefaultRaycastLayers);

声明

public RaycastHit2D Linecast(Vector2 start, Vector2 end, ContactFilter2D contactFilter);

参数

start 线段在世界空间中的起点。
end 线段在世界空间中的终点。
layerMask 用于仅检测特定图层上的碰撞器的过滤器。
contactFilter 用于以不同方式过滤结果的接触过滤器,例如按图层遮罩、Z 深度或法线角度。

返回值

RaycastHit2D 返回的碰撞检测结果。

描述

在 PhysicsScene2D 中针对碰撞器投射一条线段,仅返回第一个交点。

linecast 是世界空间中两点之间的一条假想线。任何与这条线接触的 Collider2D 都可以被检测并报告。这与类似的 raycast 不同,后者使用起点、方向和距离来指定线段。linecast 在确定视线、被枪击命中的目标以及游戏玩法中的许多其他目的方面很有用。

当这条线接触场景中的 Collider2D 时,此函数会返回一个 RaycastHit2D 对象。假设线段的方向从起点延伸到终点。只有在这个方向上遇到的第一个碰撞器将被报告。

layerMask 可以用于有选择地仅检测特定图层上的对象(例如,这允许您仅将检测应用于敌方角色)。使用 contactFilter 的此方法的重载可以通过 ContactFilter2D 中提供的选项来过滤结果。

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

其他资源:PhysicsScene2DRaycastHit2DLayerMaskPhysics2D.DefaultRaycastLayersPhysics2D.IgnoreRaycastLayerPhysics2D.queriesHitTriggers.


声明

public int Linecast(Vector2 start, Vector2 end, RaycastHit2D[] results, int layerMask = Physics2D.DefaultRaycastLayers);

声明

public int Linecast(Vector2 start, Vector2 end, ContactFilter2D contactFilter, RaycastHit2D[] results);

参数

start 线段在世界空间中的起点。
end 线段在世界空间中的终点。
results 用于接收结果的数组。数组的大小决定了可以返回的最大结果数。
layerMask 用于仅检测特定图层上的碰撞器的过滤器。
contactFilter 用于以不同方式过滤结果的接触过滤器,例如按图层遮罩、Z 深度或法线角度。

返回值

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

描述

在 PhysicsScene2D 中针对碰撞器投射一条线段。

linecast 是世界空间中两点之间的一条假想线。任何与这条线接触的 Collider2D 都可以被检测并报告。这与类似的 raycast 不同,后者使用起点、方向和距离来指定线段。linecast 在确定视线、被枪击命中的目标以及游戏玩法中的许多其他目的方面很有用。

此函数返回任何与线段相交的 Collider2D,结果将返回到提供的数组中。整数返回值是与线段相交的对象的数量(可能为零),但如果数组不包含足够的元素来报告所有结果,则结果数组不会调整大小。这意味着不会为结果分配任何内存,因此垃圾收集性能得到提高。请注意,如果您传递一个空数组,您将始终获得零结果。

layerMask 可以用于有选择地仅检测特定图层上的对象(例如,这允许您仅将检测应用于敌方角色)。使用 contactFilter 的此方法的重载可以通过 ContactFilter2D 中提供的选项来过滤结果。

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

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

其他资源:PhysicsScene2DRaycastHit2DLayerMaskPhysics2D.DefaultRaycastLayersPhysics2D.IgnoreRaycastLayerPhysics2D.queriesHitTriggers.


声明

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

参数

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

返回值

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

描述

在 PhysicsScene2D 中针对碰撞器投射一条线段。

linecast 是世界空间中两点之间的一条假想线。任何与这条线接触的 Collider2D 都可以被检测并报告。这与类似的 raycast 不同,后者使用起点、方向和距离来指定线段。linecast 在确定视线、被枪击命中的目标以及游戏玩法中的许多其他目的方面很有用。

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

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

其他资源:PhysicsScene2DRaycastHit2D.

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

其他资源:PhysicsScene2DRaycastHit2DLayerMaskPhysics2D.DefaultRaycastLayersPhysics2D.IgnoreRaycastLayerPhysics2D.queriesHitTriggers.