Raycastは、指定した方向に光線(レイ)を飛ばし、衝突したオブジェクトの情報を取得することができます。レイヤー判定を行うためには、RaycastHit構造体を使用します。
まず、Raycastの基本的な使用方法を紹介します。以下のコード例では、プレイヤーが前方に光線を飛ばし、衝突したオブジェクトの情報を表示する例です。
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Debug.Log("衝突したオブジェクト: " + hit.collider.gameObject.name);
}
}
}
上記のコードでは、マウスの左クリックが押されると、カメラからマウス位置に向かって光線が飛ばされます。もし光線がオブジェクトに衝突した場合、RaycastHit構造体の情報が取得され、衝突したオブジェクトの名前がデバッグログに表示されます。
次に、Raycastのレイヤー判定について説明します。RaycastHit構造体には、衝突したオブジェクトの情報だけでなく、そのオブジェクトが属するレイヤーの情報も含まれています。
例えば、特定のレイヤーに属するオブジェクトだけを対象とした判定を行いたい場合、以下のようなコードを使用します。
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
int layerMask = LayerMask.GetMask("MyLayer"); // レイヤー名を指定
if (Physics.Raycast(ray, out hit, layerMask))
{
Debug.Log("衝突したオブジェクト: " + hit.collider.gameObject.name);
}
}
}
上記のコードでは、LayerMask.GetMask関数を使用して、判定対象とするレイヤーを指定しています。この場合、レイヤー名として"MyLayer"を指定していますが、実際には使用するレイヤー名に合わせて変更してください。
以上が、UnityにおけるRaycastのレイヤー判定と使用方法の基本的な解説です。これらのコード例を参考にして、自分のプロジェクトに適したRaycastの使い方を見つけてください。