---
title: 射线投射
slug: world-sdk-guide-ch/ATcqfRnCLkh2HBPfqe9Yn
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

Raycast 函数可以用于高效地在 Unity 场景中查找对象。

在 Unity 编程中，Raycast 是一种激光束，它会从场景中的某个位置发射，并持续发射直到碰撞到一个 Collider。

当它与一个 Collider 碰撞时，将返回碰撞对象的信息（RaycastHit）和在场景中的位置。

有关 Unity Raycast 的更多详细信息，请查看 Unity 指南。

:::hint{type="info"}
**📘 Unity Raycast**
[https://docs.unity3d.com/Manual/CameraRays.html](https://docs.unity3d.com/Manual/CameraRays.html)
:::



Unity Raycast 可以通过完成以下步骤在 ZEPETO.Script 中使用：

首先，导入与 Raycast 相关的类。

```typescript
import { Physics, RaycastHit } from 'UnityEngine';
```

以下是 Raycast 函数的示例代码：

:::CodeblockTabs
Raycast

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { Physics, RaycastHit, Input, Camera } from 'UnityEngine';
 
export default class RaycastSample extends ZepetoScriptBehaviour {
 
    Update() {
        this.MouseControl();
    }
      
    MouseControl() {
        if (Input.GetMouseButtonDown(0)) {
            let ray = Camera.main.ScreenPointToRay(Input.mousePosition);
      
            // 请注意，为了保留 RaycastHit 信息作为输出参数，它必须被包装在 $ref 标签中。
            // 因为我们需要 out 限定符作为参数，所以我们创建一个引用而不实际创建一个对象。        
            let ref = $ref<RaycastHit>();
      
            if (Physics.Raycast(ray, ref, 1000)) {
                // 要检查返回的 Raycast 碰撞数据，请记得使用 $unref 解包引用
                let hitInfo = $unref(ref);
      
                console.log(`检测到碰撞！`);
                console.log(`hitInfo.collider.name : ${hitInfo.collider.name}`);
            } else {
                console.log(`未能检测到碰撞`);
            }
        }
    }
 
}
```
:::



:::hint{type="info"}
**📘&#x20;**&#x8BF7;参考以下指南，以了解脚本中使用的 $ref 和 $unref 的解释。 \[[$ref & $unref](docId\:szfyX0jXj7CFTTJzALS5m)]
:::



通过测试代码，您可以通过在场景中用鼠标指针单击立方体来检查对象的信息输出。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-6UE5M-dKzdYQhrkgqHAG3-20240904-102419.png)



通过以下链接查找有关 ZEPETO.Script 中使用的 Raycast API 的更多信息。

:::hint{type="info"}
**📘 Raycast**
[https://docs.unity3d.com/ScriptReference/Physics.Raycast.html](https://docs.unity3d.com/ScriptReference/Physics.Raycast.html)
:::

