Physics.Raycast的所有重载
时间: 2024-08-26 09:02:07 浏览: 93
vol-raycast.zip_RayCast
5星 · 资源好评率100%
`Physics.Raycast`函数在Unity中其实有几个重载版本,以便满足不同的需求。以下是几个主要的重载形式:
1. **基础重载**:
```csharp
bool Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit hitInfo, float distance);
```
这是最常见的版本,接收起始位置、方向、碰撞结果存储结构`HitInfo`和最大检测距离。
2. **带`Layers`参数**:
```csharp
bool Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit hitInfo, float distance, LayerMask layerMask);
```
这个版本允许你限制搜索的碰撞层,只检测特定的层级。
3. **带`NonAlloc`参数**:
```csharp
public unsafe bool Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit* hit, float distance, QueryTriggerInteraction mode);
```
当你需要避免内存分配时,可以使用此版本,它返回一个指针指向碰撞结果。
4. **`RaycastAll`重载**:
```csharp
RaycastHit[] raycastResults = Physics.RaycastAll(origin, direction, distance);
```
这个版本会返回所有与射线相交的对象数组,适合于需要获取多个碰撞的情况。
5. **`RaycastSingle`重载**:
```csharp
public static RaycastHit? RaycastSingle(Vector3 origin, Vector3 direction, float distance, QueryTriggerInteraction queryType);
```
返回单个最靠近的碰撞结果,如果没有碰撞则为null。
每个重载都针对不同的场景提供了一定程度的灵活性,你可以根据具体需求选择合适的版本。
阅读全文