Version: Unity 6.0 (6000.0)
言語 : 日本語
衝突の基本
コライダー形状

コライダータイプの概要

コライダーのタイプは、ゲームオブジェクトのコライダーと物理ボディコンポーネントの設定に基づき、他のコライダーとの相互作用を定義します。

Unity のドキュメントで言及するコライダーのタイプには、以下のものがあります。

  • 静的コライダー: ゲームオブジェクトにはコライダーがありますが、物理ボディ (Rigidbody または ArticulationBody) はありません。
  • 物理ボディコライダー: ゲームオブジェクトにはコライダーと物理ボディがあります。
    • 動的コライダー: ゲームオブジェクトの物理ボディは動的 (Is Kinematic が無効) です。
    • キネマティックな Rigidbody コライダー: ゲームオブジェクトの Rigidbody はキネマティック (Is Kinematic が有効) です。ArticulationBody をキネマティックにすることはできません。

異なるコライダーのタイプが相互作用する方法の詳細については、コライダータイプ間のインタラクション を参照してください。

静的コライダー

静的コライダーは、Rigidbody または ArticulationBody が関連付けられていないコライダー (つまり、関連するゲームオブジェクト上に Rigidbody または ArticulationBody がないコライダー) です。そのため、シミュレートされた物理力に反応しません。他のコライダーは静的コライダーと衝突することがありますが、静的コライダーは衝突に反応して動くことはありません。

常に同じ場所に留まり、動き回らないジオメトリ (例えば、シーンにある床、壁など、動かない要素) に、静的コライダーを使用します。

ランタイム時に静的コライダーを動かす唯一の方法は、Transform を使用することです。ただし、ほとんどの場合、この方法を用いるべきではありません。物理演算システムは、物理演算の更新中には、Transform による動きを直ちに考慮することができません。また、Transform により静的コライダーを動かすと、想定外の影響が生じることがあります。代わりに、ランタイム時に動かないコライダーのジオメトリにのみ、静的コライダーを使用してください。物理力に反応しないコライダーを、物理演算システムが検出し計算できるような方法でランタイム時に移動させる必要がある場合は、キネマティック物理ボディコライダーを使用することを検討してください。

静的コライダーは、移動するものや一時的なコライダーとして設計されていないため、静的コライダーの移動や消滅に反応して、物理演算システムが物理ボディを再計算したり、起動させたりすることはありません。例えば、車 (物理ボディとホイールコライダーを持つ) を静的コライダーに配置すると、ホイールコライダーがその静的コライダーを検出し、その上に停止します。入力のない状態が数フレーム続くと、車の物理ボディとコライダーはスリープ状態になります。静的コライダーが動くと、それとともに車が移動したり、落下したりする可能性があります。ただし、物理演算システムは、静的コライダーの動きに反応して車の物理ボディを起動させることはないため、車はそのままの位置に留まります。

物理ボディコライダー

物理ボディのコライダーは、物理ボディ (Rigidbody または ArticulationBody) と同じゲームオブジェクト上にあるコライダーです。物理ボディコライダーは物理演算に含まれますが、動的かキネマティックか (Is Kinematic が無効か有効か) によって動作が異なります。

Rigidbody には動的とキネマティックがあります。ArticulationBody は動的のみ可能で、キネマティックにはできません。

動的コライダー

動的コライダーは、動的物理ボディと同じゲームオブジェクト上にあるコライダーです。動的コライダーは、シミュレートされた物理力に反応します。他のオブジェクト (静的コライダーを含む) と衝突することがあり、他のコライダーが動的コライダーを動かしたり、これに力を加えたりするこができます。

物理演算システムに物理演算を加えて物理力によってゲームオブジェクトを移動したい場合に、動的コライダーを使用します。

物理ボディコライダーはデフォルトでは動的です。

キネマティックコライダー

キネマティックコライダーは、キネマティックな Rigidbody と同じゲームオブジェクト上にあるコライダーです。ArticulationBody をキネマティックにすることはできません。

キネマティックコライダーは、静的コライダーと同様、シミュレートされた物理力に反応しません。他のコライダーはキネマティックコライダーと衝突することがありますが、キネマティックコライダーは衝突に反応して動くことはありません。

静的コライダーとは異なり、キネマティックコライダーは物理演算に算入できます。キネマティックコライダーは以下のことができます。

  • 他のコライダーが接触したときにスリープ状態から復帰する
  • トリガーコライダー として機能し、他のコライダーからトリガーイベントを受け取る
  • 他のコライダーに 摩擦係数 を適用する

ほとんどは静的コライダーのように動作するコライダーを、ときどき移動できるようにする必要がある場合は (通常は動かない物理的な障害物として動作するスライドドアを、必要なときに開くなど)、キネマティックコライダーを使用してください。

Rigidbody.isKinematic を使用すると、ランタイム時に必要に応じて、スクリプトで Rigidbody コライダーを動的かキネマティックかに切り替えることができます。これは、必ずしも動的である必要のないコライダーのパフォーマンスを管理するのに便利な方法です。例えば、コライダーのタイプを切り替える一般的な用途として、「ラグドール」効果を作成することがあります。この場合、キャラクターは通常、アニメーションで動きますが、激しい衝突には物理的に反応します。キャラクターの手足はデフォルトではキネマティックに設定され、アニメーションにより動くことができますが、特定のコライダーが Rigidbody をトリガーして IsKinematic を無効にすることで、手足は動的になり、物理オブジェクトのように動作します。

コライダーの相互作用

異なるコライダーのタイプ (静的、キネマティック、動的) は、コライダーの各ペアの設定に応じて異なる方法で相互作用します。詳細については、コライダーの相互作用 を参照してください。

衝突の基本
コライダー形状