Raycast
ฟังก์ชัน Raycast สามารถใช้ในการค้นหา Object ภายในฉากใน Unity ได้อย่างมีประสิทธิภาพ.
Raycast ในการเขียนโปรแกรม Unity เป็นประเภทของลำแสงเลเซอร์ ซึ่งจะยิงจากตำแหน่งในฉากและยิงจนกระทั่งมันชนกับ Collider. เมื่อมันชนกับ Collider ข้อมูล (RaycastHit) ของ Object ที่ชนและตำแหน่งภายในฉากจะถูกส่งกลับ.
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Unity Raycast กรุณาทบทวนคู่มือ Unity.
📘 Unity Raycast https://docs.unity3d.com/Manual/CameraRays.html
Unity Raycast สามารถใช้ใน ZEPETO.Script โดยทำตามขั้นตอนต่อไปนี้:
ก่อนอื่น ให้นำเข้าคลาสที่เกี่ยวข้องกับ Raycast.
import { Physics, RaycastHit } from 'UnityEngine';ต่อไปนี้คือตัวอย่างโค้ดสำหรับฟังก์ชัน Raycast:
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(`ไม่สามารถตรวจจับการชนได้`);
}
}
}
}
📘 โปรดดูคู่มือต่อไปนี้เพื่อคำอธิบายเกี่ยวกับ $ref และ $unref ที่ใช้ในสคริปต์ [$ref & $unref]
ผ่านโค้ดทดสอบ คุณสามารถตรวจสอบว่าข้อมูลของวัตถุถูกส่งออกโดยการคลิกที่ลูกบาศก์ด้วยตัวชี้เมาส์ในฉาก.

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