Unity では、衝突が設定されている 2 つのゲームオブジェクトが同じ物理スペースを占めると、衝突が発生します。衝突は、ほとんどのゲーム、および多くのインタラクティブなアプリケーションやシミュレーターの基本的な要素です。
Unity では、ゲームオブジェクト間の衝突を処理するためにコライダーを使用します。コライダーは、物理的な衝突を目的としたゲームオブジェクトの形状を定義する Unity のコンポーネントです。コライダーは目に見えないため、オブジェクトのメッシュとまったく同じ形状にする必要はありません。
ゲームオブジェクトにコンポーネントを追加する方法については、コンポーネントの使用を参照してください。
それぞれの 3D コライダーには、相当する 2D のものがあります。Unity では、2D と 3D の物理演算は別の物理演算シミュレーションシステムで実行されます。2D 物理演算コライダーについては、Collider 2D を参照してください。
コライダーのタイプは、ゲームオブジェクトの Collider コンポーネントおよび Rigidbody コンポーネントの設定に基づいています。この設定によって、コライダーの動作と、他のコライダーとの相互作用が決定されます。
トリガーコライダーと呼ばれる、コライダーのサブタイプもあります。トリガーコライダーは他のコライダーと物理的に衝突しません。代わりに、他のコライダーが通り抜けたときに関数が呼び出されます。
トリガーコライダーは衝突の原因になりません。代わりに、通り抜ける他のコライダーを検出し、イベントの開始に使用できる関数を呼び出します (衝突を使用した他のイベントのトリガーを参照)。
コライダーをトリガーコライダーに変更するには、Colider コンポーネントの Is Trigger プロパティを有効にします。トリガーコライダーは他のコライダーと衝突せず、他のコライダーがトリガーコライダーを通り抜けます。
トリガーコライダーが機能するためには、衝突に関係する少なくとも 1 つのゲームオブジェクトに Rigidbody を設定しておく必要があります。トリガーコライダーは、任意のコライダータイプ (静的または Rigicbody) にすることができますが、ほとんどの場合は静的コライダーにして、トリガーを通り抜けるゲームオブジェクトに Rigidbody を追加することをお勧めします。複数のゲームオブジェクトが 1 つのトリガーを通り抜ける場合は、それぞれの衝突ペアで、少なくとも 1 つのゲームオブジェクトに Rigidbody が設定されている必要があります。
トリガーは、任意のコライダー形状 (コライダー形状を参照) にして、表示または非表示にすることができます。トリガーを非表示にするには、空のゲームオブジェクトにコライダーを追加します。他のゲームオブジェクトが、表示されている状態で通り抜けても問題ない場合のみ、表示可能なゲームオブジェクトにトリガーを追加します。
ゲームプレイとシミュレーションでは、プレイヤーにとって直感的に感じてもらうためにトリガーを調整する必要があるかもしれません。例えば、トリガーコライダーを、関連する表示可能なゲームオブジェクトより少し大きくして、半径を広げるように調整することができます。
さまざまなタイプのコライダーが衝突時にどのような相互作用するのか、についてはコライダータイプ間のインタラクションを参照してください。
コライダーのコンポーネントは、さまざまな形状で利用できます。コライダーには主に 3 つの形状タイプがあります。
プリミティブコライダーはビルトインのシンプルな形状で、ゲームオブジェクトにアタッチして、ほぼ同じサイズと形状にスケールできます。プリミティブな形状のコライダーをいくつか組み合わせて、複合コライダーを作成することもできます。メッシュコライダーは、ゲームオブジェクトのメッシュの形状と正確に一致します。複雑な形状に対してはプリミティブコライダーよりも正確ですが、より多くの計算リソースが必要になります。ホイールコライダーは、物理演算シミュレーションが行われたホイールを持つゲーム内アイテム (車両など) 専用のレイキャストベースのコライダーです。ホイール物理演算と摩擦の制御が組み込まれています。
コライダー表面の摩擦とバウンス (跳ね) をコントロールできます。2 つのコライダーが接触すると、物理演算システムはそれぞれの表面のプロパティを使用して、コライダー間の摩擦とバウンスを計算します。
詳細については、コライダーの表面を参照してください。