Raycast
3 분
Raycast 함수는 Unity의 장면 내에서 객체를 효율적으로 찾는 데 사용할 수 있습니다.
Unity 프로그래밍에서 Raycast는 장면의 위치에서 발사되어 Collider에 부딪힐 때까지 쏘는 일종의 레이저 빔입니다. Collider에 충돌할 때, 충돌한 객체의 정보(RaycastHit)와 장면 내 위치가 반환됩니다.
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)) {
// 반환된 Raycast hit 데이터를 확인하려면 $unref를 사용하여 참조를 풀어야 합니다.
let hitInfo = $unref(ref);
console.log(`Hit 감지!`);
console.log(`hitInfo.collider.name : ${hitInfo.collider.name}`);
} else {
console.log(`충돌 감지 실패`);
}
}
}
}
📘 스크립트에서 사용된 $ref 및 $unref에 대한 설명은 다음 가이드를 참조하십시오. [$ref & $unref]
테스트 코드를 통해 장면에서 마우스 포인터로 큐브를 클릭하여 객체의 정보가 출력되는지 확인할 수 있습니다.

ZEPETO.Script에서 사용된 Raycast API에 대한 자세한 정보는 아래 링크를 참조하십시오.