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

Physics2D.RaycastAll

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public static RaycastHit2D[] RaycastAll(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);

参数

origin 射线在二维空间中的起点。
direction 表示射线方向的向量。
distance 射线发射的最大距离。
layerMask 过滤器,仅检测某些层上的碰撞器。
minDepth 仅包含 Z 坐标(深度)大于或等于此值的物体。
maxDepth 仅包含 Z 坐标(深度)小于或等于此值的物体。

返回值

RaycastHit2D[] 返回的碰撞结果。

描述

将射线投射到场景中的碰撞器上,返回所有与之接触的碰撞器。

射线投射 从概念上类似于从空间中的一个点沿着特定方向发射的激光束。任何与光束接触的物体都可以被检测到并报告。

此函数类似于 Raycast 函数,但它不只是检测第一个被击中的碰撞器,而是返回射线路径上所有碰撞器的数组。数组中的碰撞器按距原点的距离排序。layerMask 可用于有选择地仅检测某些层上的物体(例如,这允许您仅将检测应用于敌方角色)。

射线投射对于确定视线、枪击命中目标以及游戏玩法中的许多其他目的非常有用。

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

其他资源:LayerMask 类、RaycastHit2D 类、RaycastLinecastDefaultRaycastLayersIgnoreRaycastLayerraycastsHitTriggers