【Unity連載】はじめに知っておくべきRigidbodyコンポーネントの概要


はじめに知っておくべきRigidbodyコンポーネントの概要


Rigidbodyコンポーネントは、ゲームオブジェクトに物理演算を適用するコンポーネントです。
空気抵抗や摩擦、ぶつかって弾かれるなどの複雑な物理演算を、全くプログラムを記述することなく再現することができます。例えば重力による落下などは、CubeなどにRigidbodyコンポーネントを適用してゲームシーンを再生するだけで再現することができます。

ここでは、Rigidbodyコンポーネントの各プロパティについて、とりあえずおさえておくべきポイントを紹介していきます。プロパティごとに設定できる細かな選択肢については一部説明を割愛しますので、詳しくは最新の公式リファレンスを参照してください。


・Mass
オブジェクトの質量で、単位はKg(キログラム)です。
落下速度には影響を与えませんが、キャラクターのジャンプや移動処理を物理演算で行う場合には動作に影響を与えるプロパティとなります。
※ なお、互いに作用するオブジェクト同士の重さは100倍以下に設定することが推奨されています。(公式リファレンスより)

・Drag
空気抵抗です。
値を大きくすると落下速度など物理演算による移動速度が遅くなります。
筆者の経験では、簡単なアクションゲーム等の厳密な物理演算を必要としないゲームでは0にしてしまうことが多いです。

・Angular Drag
回転に対する空気抵抗です。
デフォルトは0.05となっていますが、回転を用いない場合にはスルーか0にしてしまうことが多いです。(筆者談)

・Use Gravity
チェックを入れるとオブジェクトが重力の影響を受けます。(デフォルト)
チェックを外すとオブジェクトを無重力状態のように扱えます。浮いてるけどぶつかれば動くような障害物とかはチェックを外す。

・Is Kinematic
チェックを入れると物理演算が無効になります。重力が有効でも落下せず、他のオブジェクトが衝突しても移動しません。
基本動かないけれど、物理演算で動くオブジェクトと接触するようなオブジェクトに設定することが多いです。
ゲーム中に物理演算の有効無効を切り替えたい場合、この項目をプログラムからON/OFFします。

・Interpolate
物理演算動作の補完モードです。動きが滑らかでない場合以外は弄らなくても大丈夫です。
経験上ほとんどの場面において設定を変えてみても違いが判らない。

Collision Detection
衝突の判定方式です。
オブジェクトの動きが速くて衝突判定をすり抜けてしまう場合などに、この項目を変更することで想定した結果をえられることがあります。
結構目に見えて効果ありです。

Constraints
XYZ軸ごとに移動や回転を制限するためのチェックです。
特にFreeze Rotationはラン&ジャンプのゲームなどで活躍します。(設定しないと床についたときに摩擦でキャラクターが回転したりするので…)

・Info
いつの間にか追加されていた新しめの項目。
インスペクタからは変更できないが、Rigidbodyが内部的に保持している物理演算の値が表示されています。
これらの値はC#プログラムから参照することができ、なおかつ直接値を変更したりもできます。

  • このエントリーをはてなブックマークに追加

PAGE TOP