Unityにおける Physics.CheckSphere とコライダーの関係についての技術資料

Physics.CheckSphere は、Unityの物理演算システムでよく使用されるメソッドで、指定された位置に球状の領域を作り、その範囲内にオブジェクトが存在するかを確認します。このメソッドは物理的なコライダーを使用して判定を行います。本資料では、Physics.CheckSphere がどのようにコライダーと連携して動作するのかを詳しく解説します。


Physics.CheckSphere の概要

Physics.CheckSphere は、シーン内に存在するオブジェクトが指定された球形の範囲内にあるかどうかを判定します。このメソッドは物理的なコライダーを基にして範囲内のオブジェクトを検知します。主に接地判定や障害物検知に使用されます。

bool Physics.CheckSphere(Vector3 position, float radius, int layerMask = Default, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
  • position: 球の中心位置。
  • radius: 球の半径。
  • layerMask: 検出対象となるレイヤー。
  • queryTriggerInteraction: トリガーの扱い方(トリガーを無視するか、含めるか)。

コライダーとは

コライダー は、物理的な衝突や接触を検知するためにオブジェクトに追加するコンポーネントです。Unityには様々な形状のコライダーが用意されており、オブジェクトに対して物理的な境界を設定する役割を持っています。代表的なコライダーには以下のものがあります。

  • BoxCollider: 四角形のコライダー。
  • SphereCollider: 球形のコライダー。
  • MeshCollider: オブジェクトのメッシュ形状に合わせたコライダー。

これらのコライダーは、Physics.CheckSphere のような物理メソッドと連携して動作します。


Physics.CheckSphere とコライダーの動作

Physics.CheckSphere は、物理システムに基づいてコライダーの有無を判定します。以下のようにコライダーと連携して動作します。

  1. 球形の範囲作成: 指定した position を中心に、radius に基づいた球状の領域が作成されます。
  2. コライダーの検知: この球の範囲内にコライダーが存在するかどうかが判定されます。検知対象のオブジェクトがコライダーを持っていない場合、そのオブジェクトは検出されません。
  3. レイヤーによるフィルタリング: layerMask に基づき、特定のレイヤーに所属するオブジェクトだけが検出対象となります。
bool isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

この例では、groundCheck の位置を中心にして球を作成し、groundMask に指定されたレイヤーのコライダーが範囲内にあるかどうかを検知しています。


トリガーとの関係

トリガーisTrigger)は、物理的な衝突は発生しないが、接触を検知できる特殊なコライダーです。通常のコライダーとは異なり、トリガーは物理演算に影響を与えませんが、Physics.CheckSphere を使って検出することができます。

デフォルトでは、Physics.CheckSphere はトリガーを無視しますが、トリガーを検出したい場合は、QueryTriggerInteraction.Collide オプションを使用して設定することができます。

// トリガーも含めて検出する場合
bool isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask, QueryTriggerInteraction.Collide);
  • QueryTriggerInteraction.Ignore: トリガーを無視。
  • QueryTriggerInteraction.Collide: トリガーを含む。

まとめ

  • Physics.CheckSphere は、指定した位置と半径を基に球形の範囲を作り、その範囲内に物理コライダーが存在するかどうかを判定します。
  • コライダーが設定されていないオブジェクトは検知されないため、接地判定や障害物検知の際は、検出対象のオブジェクトに適切なコライダーが追加されているか確認する必要があります。
  • トリガーコライダーもオプションで検出対象に含めることができ、トリガーの扱い方は QueryTriggerInteraction で指定します。

Unity

Posted by hidepon