Raycast

Last-modified: 2023-06-13 (火) 02:19:25

UnityのRaycastは、3D空間内で光線を放射し、物体との交差点や衝突を検出するための機能です。
Raycastを使用することで、プレイヤーが何かをクリックした場所や、キャラクターが他のオブジェクトに当たった場所を特定することができます。

Raycastを行うには、以下の手順を実行します。

  • 光線を放射する元となる位置と方向を設定します。これを通常「原点」と「方向ベクトル」と呼びます。
    例えば、マウスのクリック位置からカメラの位置に向かう光線を作成する場合、カメラの位置を原点、クリック位置とカメラの位置のベクトルを方向ベクトルとして使用します。
  • Raycastを実行するために、Physics.Raycast() メソッドを使用します。このメソッドは、原点と方向ベクトルを引数として受け取り、光線と物体の交差を検出します。

例:

Ray ray = new Ray(origin, direction);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
   // 光線が物体に当たった場合の処理
   // hit変数には衝突した物体に関する情報が含まれます
}
  • Raycastが物体に当たった場合、RaycastHit構造体には衝突した物体に関する情報が格納されます。例えば、衝突点の位置、法線ベクトル、衝突したオブジェクトの参照などが含まれます。
// 衝突点の位置
Vector3 hitPoint = hit.point;
// 衝突したオブジェクトの参照
GameObject hitObject = hit.collider.gameObject;

Raycastは、衝突を検出するための強力なツールであり、ゲーム開発や仮想現実のアプリケーションでさまざまな用途に利用されます。
光線を放射する位置や方向、衝突した物体の情報などを利用して、オブジェクトの選択、クリック判定、物理シミュレーションなどを行うことができます。