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

Collider2D.Cast

建议更改

成功!

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

关闭

提交失败

由于某种原因,无法提交您建议的更改。请在几分钟后<a>重试</a>。感谢您抽出宝贵时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public int Cast(Vector2 direction, List<RaycastHit2D> results, float distance = Mathf.Infinity, bool ignoreSiblingColliders = true);

参数

方向 表示要投射形状的朝向的向量。
结果 接收结果的列表。
距离 投射形状的最大距离。
忽略兄弟碰撞器 确定投射是否应该忽略附加到同一Rigidbody2D(称为兄弟碰撞器)的碰撞器。

返回值

int 返回结果的数量。

描述

从碰撞器自身位置开始,将碰撞器形状投射到场景中,同时忽略碰撞器本身。

此函数将获取碰撞器形状,从碰撞器位置以指定的方向投射到场景中,针对可选的距离,然后将结果返回到提供的结果列表中。整型返回值是写入结果列表的结果数量。如果结果列表不包含报告所有结果需要的足够元素,则将调整结果列表的大小。这可防止在不需要调整结果列表大小时分配结果的内存,并在频繁执行投射时提高垃圾回收性能。

此外,它还检测碰撞器开始位置处的其他碰撞器(如有重叠情况)。在这种情况下,投射形状将从碰撞器内部开始,并且可能与碰撞器表面不产生交点。这意味着无法计算碰撞法线,在这种情况下,返回的碰撞法线将设置为所测试的方向向量的反向。


声明

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

参数

方向 表示要投射形状的朝向的向量。
contactFilter 通过接触过滤器,筛选结果。
结果 接收结果的列表。
距离 投射形状的最大距离。
忽略兄弟碰撞器 确定投射是否应该忽略附加到同一Rigidbody2D(称为兄弟碰撞器)的碰撞器。

返回值

int 返回结果的数量。

描述

从碰撞器自身位置开始,将碰撞器形状投射到场景中,同时忽略碰撞器本身。

此函数将获取碰撞器形状,从碰撞器位置以指定的方向投射到场景中,针对可选的距离,然后将结果返回到提供的结果列表中。整型返回值是写入结果列表的结果数量。如果结果列表不包含报告所有结果需要的足够元素,则将调整结果列表的大小。这可防止在不需要调整结果列表大小时分配结果的内存,并在频繁执行投射时提高垃圾回收性能。

contactFilter 参数可根据 ContactFilter2D 中的选项筛选返回结果。

此外,它还检测碰撞器开始位置处的其他碰撞器(如有重叠情况)。在这种情况下,投射形状将从碰撞器内部开始,并且可能与碰撞器表面不产生交点。这意味着无法计算碰撞法线,在这种情况下,返回的碰撞法线将设置为所测试的方向向量的反向。


声明

public int Cast(Vector2 direction, RaycastHit2D[] results, float distance = Mathf.Infinity, bool ignoreSiblingColliders = true);

参数

方向 表示要投射形状的朝向的向量。
结果 用于接收结果的数组。
距离 投射形状的最大距离。
忽略兄弟碰撞器 确定投射是否应该忽略附加到同一Rigidbody2D(称为兄弟碰撞器)的碰撞器。

返回值

int 返回结果的数量。

描述

从碰撞器自身位置开始,将碰撞器形状投射到场景中,同时忽略碰撞器本身。

此函数会获取碰撞器形状,根据指定 direction 中的碰撞器位置,向场景内投射出该形状(可选 distance),并在提供的 results 数组中返回结果。整型返回值就是写入到 results 数组中的结果数量。如果 results 数组不包含足够元素来展示所有结果,则不会调整其大小。此操作的意义在于,不需要为结果分配内存,所以能够在频繁执行投射时提升垃圾回收性能。

此外,如果碰撞器开始位置存在其他碰撞器,此函数还会检测出这些碰撞器。在这种情况下,投射形状会从碰撞器内部开始,并且可能不会与碰撞器表面相交。这意味着无法计算碰撞法线。在这种情况下,返回的碰撞法线会设置为所测试 direction 向量的倒数。

注意: 使用 Collider2D.Cast() 需要使用 Rigidbody2D。如果未声明 Rigidbody2D,则 Cast() 无法工作。但是,Rigidbody2D 可以是静态的、并连接到 Collider2D。这样可以使 Cast() 按预期工作。此外,如果 Collider2D 对象没有 Rigidbody2D 对象,则它可以与具有 Collider2DRigidbody2D 对象的多个对象发生碰撞。


声明

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

参数

方向 表示要投射形状的朝向的向量。
contactFilter 通过接触过滤器,筛选结果。
结果 用于接收结果的数组。
距离 投射形状的最大距离。
忽略兄弟碰撞器 确定投射是否应该忽略附加到同一Rigidbody2D(称为兄弟碰撞器)的碰撞器。

返回值

int 返回结果的数量。

描述

从碰撞器自身位置开始,将碰撞器形状投射到场景中,同时忽略碰撞器本身。

此函数会获取碰撞器形状,根据指定 direction 中的碰撞器位置,向场景内投射出该形状(可选 distance),并在提供的 results 数组中返回结果。整型返回值就是写入到 results 数组中的结果数量。如果 results 数组不包含足够元素来展示所有结果,则不会调整其大小。此操作的意义在于,不需要为结果分配内存,所以能够在频繁执行投射时提升垃圾回收性能。

contactFilter 参数可根据 ContactFilter2D 中的选项筛选返回结果。

此外,如果碰撞器开始位置存在其他碰撞器,此函数还会检测出这些碰撞器。在这种情况下,投射形状会从碰撞器内部开始,并且可能不会与碰撞器表面相交。这意味着无法计算碰撞法线。在这种情况下,返回的碰撞法线会设置为所测试 direction 向量的倒数。


声明

public int Cast(Vector2 position, float angle, Vector2 direction, List<RaycastHit2D> results, float distance = Mathf.Infinity, bool ignoreSiblingColliders = true);

参数

position 开始投射碰撞器的起始位置。
angle 碰撞器的旋转。
方向 投射碰撞器的方向向量。
结果 接收结果的列表。
距离 投射碰撞器的最远距离。
忽略兄弟碰撞器 确定实例是否应忽略连接到同一Rigidbody2D(称为同级碰撞器)的其他碰撞器。

返回值

int 返回结果的数量。

描述

以指定的位置和旋转为起点,将碰撞器形状投射到场景中。

此函数将获取碰撞器形状,并从指定的positionangle为起点,投射到场景中,针对可选distance返回结果,并将其写入提供的results列表中。

整型返回值是写入results列表的结果数。如果结果列表不包含足够的元素来报告所有结果,则将调整其大小。当无需调整results列表大小时,此操作可防止为结果分配内存,并在频繁执行投射时提高垃圾回收性能。

此外,它还检测碰撞器开始位置处的其他碰撞器(如有重叠情况)。在这种情况下,投射形状将从碰撞器内部开始,并且可能与碰撞器表面不产生交点。这意味着无法计算碰撞法线,在这种情况下,返回的碰撞法线将设置为所测试的方向向量的反向。

注意:此处使用的positionangle表示Collider2D所连接的Rigidbody2D的位置。如果Collider2D偏离了质心,则Collider2D将在同一偏移位置重叠。这可能会令人困惑,因此建议只使用与质心对齐的Collider2D。如果不这样做,则必须考虑到这一点。如果Collider2D未连接到Rigidbody2D,则无法使用此调用,且将产生警告。


声明

public int Cast(Vector2 position, float angle, Vector2 direction, ContactFilter2D contactFilter, List<RaycastHit2D> results, float distance = Mathf.Infinity, bool ignoreSiblingColliders = true);

参数

position 开始投射碰撞器的起始位置。
angle 碰撞器的旋转。
方向 投射碰撞器的方向向量。
contactFilter 通过接触过滤器,筛选结果。
结果 接收结果的列表。
距离 投射碰撞器的最远距离。
忽略兄弟碰撞器 确定实例是否应忽略连接到同一Rigidbody2D(称为同级碰撞器)的其他碰撞器。

返回值

int 返回结果的数量。

描述

以指定的位置和旋转为起点,将碰撞器形状投射到场景中。

此函数将获取碰撞器形状,并从指定的positionangle为起点,投射到场景中,针对可选distance返回结果,并将其写入提供的results列表中。

contactFilter 参数可根据 ContactFilter2D 中的选项筛选返回结果。

整型返回值是写入results列表的结果数。如果结果列表不包含足够的元素来报告所有结果,则将调整其大小。当无需调整results列表大小时,此操作可防止为结果分配内存,并在频繁执行投射时提高垃圾回收性能。

此外,它还检测碰撞器开始位置处的其他碰撞器(如有重叠情况)。在这种情况下,投射形状将从碰撞器内部开始,并且可能与碰撞器表面不产生交点。这意味着无法计算碰撞法线,在这种情况下,返回的碰撞法线将设置为所测试的方向向量的反向。

注意:此处使用的positionangle表示Collider2D所连接的Rigidbody2D的位置。如果Collider2D偏离了质心,则Collider2D将在同一偏移位置重叠。这可能会令人困惑,因此建议只使用与质心对齐的Collider2D。如果不这样做,则必须考虑到这一点。如果Collider2D未连接到Rigidbody2D,则无法使用此调用,且将产生警告。