---
title: Raycast
slug: world-sdk-guide-th/raycast
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

ฟังก์ชัน Raycast สามารถใช้ในการค้นหา Object ภายในฉากใน Unity ได้อย่างมีประสิทธิภาพ.

Raycast ในการเขียนโปรแกรม Unity เป็นประเภทของลำแสงเลเซอร์ ซึ่งจะยิงจากตำแหน่งในฉากและยิงจนกระทั่งมันชนกับ Collider.

เมื่อมันชนกับ Collider ข้อมูล (RaycastHit) ของ Object ที่ชนและตำแหน่งภายในฉากจะถูกส่งกลับ.

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ 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)) {
                // เพื่อตรวจสอบข้อมูลการชนที่ส่งกลับ โปรดจำไว้ว่าต้องคลายการอ้างอิงโดยใช้ $unref
                let hitInfo = $unref(ref);
      
                console.log(`ตรวจพบการชน!`);
                console.log(`hitInfo.collider.name : ${hitInfo.collider.name}`);
            } else {
                console.log(`ไม่สามารถตรวจจับการชนได้`);
            }
        }
    }
 
}
```
:::



:::hint{type="info"}
**📘&#x20;**&#xE42;ปรดดูคู่มือต่อไปนี้เพื่อคำอธิบายเกี่ยวกับ $ref และ $unref ที่ใช้ในสคริปต์ \[[$ref & $unref](docId\:WNvE-gO7fZiLMxlNI7lYr)]
:::



ผ่านโค้ดทดสอบ คุณสามารถตรวจสอบว่าข้อมูลของวัตถุถูกส่งออกโดยการคลิกที่ลูกบาศก์ด้วยตัวชี้เมาส์ในฉาก.

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



หาข้อมูลเพิ่มเติมเกี่ยวกับ Raycast API ที่ใช้ใน ZEPETO.Script ได้โดยไปที่ลิงก์ด้านล่าง.

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

