Version: 2021.3
言語: 日本語
Rigidbody 物理演算
Rigidbody コンポーネントのリファレンス

リジッドボディ物理動作の基本

Rigidbody (リジッドボディ) はオブジェクトに物理動作を可能にするためのメインコンポーネントです。リジッドボディを加えた瞬間から、オブジェクトは重力の影響を受けるようになります。さらに、1つ以上の Collider (コライダー) コンポーネントを加わえれば、オブジェクトは衝突の影響によって動くようになります。

ゲームオブジェクトの動作は付加された Rigidbody コンポーネントによって制御されるので、Position や Rotation などの Transform プロパティを変更してスクリプトで動かすべきではありません。代わりに を使ってゲームオブジェクトを押し、物理エンジンに結果を計算させます。

物理オブジェクトエンジンによって動きを制御されないリジッドボディをゲームオブジェクトに加えたい場合があります。例えば、キャラクターをスクリプトコードから直接制御したい場合などです。それでも、そのキャラクターをトリガーによって検出されるようにすることができます (Collidersトリガー を参照)。 スクリプトから生成されるこのような非物理的な動きは、キネマティック な動きとして知られています。Rigidbody コンポーネントには Is Kinematic というプロパティがあります。これにより、物理エンジンの制御を除き、スクリプトを使ってキネマティックに動作させることができます。 Is Kinematic の値をスクリプトから変更して、オブジェクトの物理動作のスイッチを入れたり切ったりすることは可能ですが、これにはパフォーマンス上のオーバーヘッドがあるため、控えめに使用する必要があります。

これらのコンポーネントのセッティングとスクリプトのオプションの詳細については RigidbodyRigidbody 2D のページを参照してください。

スリープ

リジッドボディが決められた最低の直線/回転スピードよりも動きが遅いとき、物理エンジンはそれが休止していると仮定します。これが発生すると、ゲームオブジェクトは衝突されるか力が与えられない限り再び動きません。そのため、それは “スリープ” モードに設定されます。この最適化により、次にリジッドボディが “起きる” (つまり、再び動作すること) まで、プロセッサーがリジッドボディの更新に時間を費やすことはありません。

たいていの場合、Rigidbody コンポーネントのスリープと起動の発生は明確です。ただし、静的コライダー (これは、リジッドボディなしのコライダー) が Transform を変更することによってオブジェクトに近づいたり遠ざかったりすると、ゲームオブジェクトが起きそこなう場合があります。この結果、例えば足元の床が取り除かれたのに、リジッドボディオブジェクトが宙に浮いたままの状態になる場合があります。このような場合は、WakeUp 関数を使うとオブジェクトを明示的に起こすことができます。スリープについての詳細は RigidbodyRigidbody 2D コンポーネントページを参照してください。

Rigidbody 物理演算
Rigidbody コンポーネントのリファレンス