【Unity】Rayについて
Unityの「Ray(レイ)」は、3D空間において見えない直線を使って、何かに当たったかどうかを判定するためのツールです。この資料では、Rayの基本概念とその使い方を解説します。
Rayとは?
Rayは、発射地点と方向を指定することで、無限に伸びる直線を作り、その線上にあるオブジェクトに当たるかどうかを確認します。Rayは、視覚的には見えませんが、オブジェクトに対して判定を行う際に使用されます。
Rayの作成
Rayは、発射地点と方向の2つの要素で作成されます。
Ray ray = new Ray(発射地点, 方向);
- 発射地点: Rayをどこから飛ばすかを指定します。例えば、カメラの位置(
Camera.main.transform.position
)がよく使われます。 - 方向: Rayをどの方向に飛ばすかを指定します。カメラの向き(
Camera.main.transform.forward
)を使うことが多いです。
Raycastを使った衝突判定
Rayを飛ばして何かに当たったかを確認するためには、Physics.Raycast
メソッドを使用します。
if (Physics.Raycast(ray, out RaycastHit hitInfo))
{
// 当たったオブジェクトの処理
Debug.Log(hitInfo.collider.name);
}
- Physics.Raycast: Rayがオブジェクトに当たったかどうかを判定します。
- RaycastHit hitInfo: Rayが当たった場合、そのオブジェクトの情報が
hitInfo
に格納されます。オブジェクトの名前や位置情報を取得できます。
サンプルコード
以下は、カメラの前方にRayを発射し、オブジェクトに当たった場合、そのオブジェクトの名前をコンソールに表示するサンプルコードです。
void Update()
{
// カメラの位置からカメラの向きにRayを飛ばす
Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward);
// Rayがオブジェクトに当たったかどうかをチェック
if (Physics.Raycast(ray, out RaycastHit hitInfo))
{
// 当たったオブジェクトの名前を表示
Debug.Log("Hit object: " + hitInfo.collider.name);
}
}
このコードは、毎フレームカメラの向きにRayを発射し、何かに当たるとそのオブジェクトの名前をコンソールに出力します。
応用例
Rayを使うことで、以下のような機能を実現できます。
- 照準機能: プレイヤーがどこを狙っているかを判定。
- オブジェクト選択: カメラからマウスクリック位置に向けてRayを発射し、オブジェクトを選択。
- AIの視界システム: 敵キャラクターが視界内のプレイヤーを見つける。
まとめ
Rayは、3D空間における衝突判定に使用される重要なツールです。見えない直線として動作し、視線の判定やオブジェクトの選択など、多様な場面で活用できます。
ディスカッション
コメント一覧
まだ、コメントがありません