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

Collider2D.Raycast

建议修改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public int Raycast(Vector2 direction, RaycastHit2D[] results, float distance = Mathf.Infinity, int layerMask = Physics2D.AllLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);

声明

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

参数

direction 表示射线方向的向量。
results 用于接收结果的数组。
distance 射线投射的最大距离。
layerMask 过滤器,仅检查特定图层上的对象。
minDepth 仅包含 Z 坐标(深度)大于此值的物体。
maxDepth 仅包含 Z 坐标(深度)小于此值的物体。
contactFilter 由接触过滤器定义的过滤器结果。

返回

int 返回的结果数。

描述

将一条从碰撞器位置开始的射线投射到场景中,并忽略碰撞器本身。

此函数类似于 [[Physics2D::RaycastNonAlloc]] 函数,并且以相同的方式,结果将返回到提供的数组中。整数返回值是与射线相交的对象数量(可能是零),但如果结果数组不包含足够的元素来报告所有结果,则不会调整结果数组的大小。这很重要的原因是,不会为结果分配任何内存,因此当频繁执行射线投射时,垃圾回收性能会得到提高。

使用 contactFilter 的此函数的重载会根据 ContactFilter2D 中提供的选项过滤结果。

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

其他资源:LayerMask 类,RaycastHit2D 类,[[Physics2D::RaycastNonAlloc]],[[Physics2D::AllLayers]],[[Physics2D::IgnoreRaycastLayer]],[[Physics2D::raycastsHitTriggers]]。


声明

public int Raycast(Vector2 direction, ContactFilter2D contactFilter, List<RaycastHit2D> results, float distance = Mathf.Infinity);

参数

direction 表示射线方向的向量。
contactFilter 由接触过滤器定义的过滤器结果。
results 用于接收结果的列表。
distance 射线投射的最大距离。

返回

int 返回的结果数。

描述

将一条从碰撞器位置开始的射线投射到场景中,并忽略碰撞器本身。

此函数类似于 [[Physics2D::RaycastNonAlloc]] 函数,并且以相同的方式,结果将返回到提供的列表中。整数返回值是与射线相交的碰撞器数量(可能是零)。如果结果列表不包含足够的元素来报告所有结果,则会调整结果列表的大小。这可以防止为结果分配内存,前提是 results 列表不需要调整大小,并提高了频繁执行查询时的垃圾回收性能。

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

其他资源:RaycastHit2D 类。