レイキャスト
3 分
Raycast関数は、Unityのシーン内でオブジェクトを効率的に見つけるために使用できます。
UnityプログラミングにおけるRaycastは、シーン内の位置から発射され、コライダーに衝突するまで飛ぶレーザービームの一種です。 コライダーに衝突すると、衝突したオブジェクトの情報(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ヒットデータを確認するには、$unrefを使用して参照をアンラップすることを忘れないでください。
let hitInfo = $unref(ref);
console.log(`ヒットを検出!`);
console.log(`hitInfo.collider.name : ${hitInfo.collider.name}`);
} else {
console.log(`衝突の検出に失敗しました`);
}
}
}
}
📘 スクリプトで使用されている$refと$unrefの説明については、以下のガイドを参照してください。 [$ref と $unref]
テストコードを通じて、シーン内のキューブをマウスポインタでクリックすることでオブジェクトの情報が出力されることを確認できます。

ZEPETO.Scriptで使用されているRaycast APIに関する詳細情報は、以下のリンクにアクセスしてください。