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