Rigidbody (リジッドボディ) はオブジェクトに物理挙動を可能にするためのメインコンポーネントです。リジッドボディを加えた瞬間から、オブジェクトは重力の影響を受けるようになります。さらに、1つ以上の Collider (コライダー) コンポーネントを加わえれば、オブジェクトは衝突の影響によって動くようになります。
ゲームオブジェクトの挙動は付加された Rigidbody コンポーネントによって制御されるので、Position や Rotation などの Transform プロパティーを変更してスクリプトで動かすべきではありません。代わりに 力 を使ってゲームオブジェクトを押し、物理エンジンに結果を計算させます。
物理オブジェクトエンジンによって動きを制御されないリジッドボディをゲームオブジェクトに加えたい場合があります。例えば、キャラクターをスクリプトコードから直接制御したい場合などです。それでも、そのキャラクターをトリガーによって検出されるようにすることができます (Colliders の トリガー を参照)。 スクリプトから生成されるこのような非物理的な動きは、キネマティック な動きとして知られています。Rigidbody コンポーネントには Is Kinematic というプロパティーがあります。これにより、物理エンジンの制御を除き、スクリプトを使ってキネマティックに動作させることができます。 Is Kinematic の値をスクリプトから変更して、オブジェクトの物理挙動のスイッチを入れたり切ったりすることは可能ですが、これにはパフォーマンス上のオーバーヘッドがあるため、控えめに使用する必要があります。
これらのコンポーネントのセッティングとスクリプトのオプションの詳細については Rigidbody と Rigidbody 2D のページを参照してください。
リジッドボディが決められた最低の直線/回転スピードよりも動きが遅いとき、物理エンジンはそれが休止していると仮定します。これが発生すると、ゲームオブジェクトは衝突されるか力が与えられない限り再び動きません。そのため、それは「スリープ」モードに設定されます。この最適化により、次にリジッドボディが「起きる」 (つまり、再び動作すること) まで、プロセッサーがリジッドボディの更新に時間を費やすことはありません。
たいていの場合、Rigidbody コンポーネントのスリープと起動の発生は明確です。ただし、静的コライダー (これは、リジッドボディなしのコライダー) が Transform を変更することによってオブジェクトに近づいたり遠ざかったりすると、ゲームオブジェクトが起きそこなう場合があります。この結果、例えば足元の床が取り除かれたのに、リジッドボディオブジェクトが宙に浮いたままの状態になる場合があります。このような場合は、WakeUp
関数を使うとオブジェクトを明示的に起こすことができます。スリープについての詳細は Rigidbody と Rigidbody 2D コンポーネントページを参照してください。