方法1: レイヤーマスクを使用したレイキャスト レイヤーマスクを使用することで、特定のレイヤー以外のオブジェクトをマスクすることができます。以下は、この方法のコード例です。
int layerMask = 1 << LayerMask.NameToLayer("マスクしたいレイヤー名");
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, Mathf.Infinity, layerMask))
{
// レイキャストがマスクしたいレイヤーのオブジェクトにヒットした場合の処理
}
この例では、"マスクしたいレイヤー名" の部分をマスクしたいレイヤーの名前に置き換えてください。
方法2: レイヤーマスクを使用したレイキャストの複数レイヤー対応 複数のレイヤーをマスクする場合は、ビット演算子を使用して複数のレイヤーを指定することができます。以下は、この方法のコード例です。
int layerMask = (1 << LayerMask.NameToLayer("マスクしたいレイヤー1の名前")) | (1 << LayerMask.NameToLayer("マスクしたいレイヤー2の名前"));
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, Mathf.Infinity, layerMask))
{
// レイキャストがマスクしたいレイヤーのいずれかのオブジェクトにヒットした場合の処理
}
この例では、"マスクしたいレイヤー1の名前" と "マスクしたいレイヤー2の名前" の部分をマスクしたいレイヤーの名前に置き換えてください。
方法3: LayerMaskを使用したレイキャスト LayerMaskを使用することで、レイヤーマスクを簡単に設定することができます。以下は、この方法のコード例です。
LayerMask layerMask = LayerMask.GetMask("マスクしたいレイヤー名");
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, Mathf.Infinity, layerMask))
{
// レイキャストがマスクしたいレイヤーのオブジェクトにヒットした場合の処理
}
この例では、"マスクしたいレイヤー名" の部分をマスクしたいレイヤーの名前に置き換えてください。
以上の方法を使用することで、Unityで特定のレイヤーをマスクしてレイキャストを行うことができます。それぞれの方法を試してみて、プロジェクトの要件に合わせて最適な方法を選択してください。