UnityのRigidbodyの使い方の基礎の基礎
Unityは3Dゲーム開発用のエンジンなので、物理演算のコンポーネント(Rigidbody)が用意されています。 自分用のメモとして学んだことをまとめたいと思います。
Rigidbody
Rigidbodyとはオブジェクトに物理演算を適用するためのコンポーネントです。
スリープ
物理演算処理は負荷が高い処理の為、「速度が小さい値」になった(動かないと判定された)オブジェクトは、スリープ状態(演算の対象外)になります。
プロジェクトの初期設定で閾値(速度が小さい値)は 0.005 に設定されています。 この値を下回るとスリープ状態になります。
Edit > Project Setting > Physics
から設定を確認できます。
Physics Managerの設定内容
プロパティ | 内容 |
---|---|
Gravity | 重力速度 |
Sleep Threshold | スリープの閾値 |
Default Contact Offset | 衝突判定の距離 |
詳しくは公式リファレンスを参考
ちなみにC#でGravityの値を変更する場合は、Physics.gravity
にnew Vector3(x, y, z);
の値を渡します。
Physics.gravity = new Vector3(1,1,1);
Rigidbodyのプロパティ設定
プロパティ | 内容 |
---|---|
Mass | 物体の重さ |
Drag | 空気抵抗。値が大きいとすぐ止まる |
Angular Drag | 回転に対する空気抵抗。値を大きくすると回転が止まりやすくなる。0だと回り続ける |
Use Gravity | 重力のオンオフ |
is Kinematic | 物理エンジンによるpositionの変更のオンオフ |
Interpolate | 物理効果をスムーズにする |
Constraints | 物理的な制約を設定。チェックを入れると、動かなくしたり回転しないようにできる |
物理演算とよく一緒に使われるPhysic Material
Physic Materialは、見た目ではなく物体の物理的な材質を表現します。 具体的に言うと、摩擦や反発の設定ができます。
Assets > Create > Physic Material
から作成できます。
プロパティ | 内容 |
---|---|
Dynamic | 移動している物体に対する摩擦。0の場合摩擦がなくな氷の上のような感じになる |
Static Friction | 静止している物体に対する摩擦。0の場合摩擦がなくな氷の上のような感じになる |
Bounciness | 反発の大きさ。1を設定した場合、反発しても勢いが弱まりません |
Friction Combine | 衝突するオブジェクトの摩擦の処理方法 |
Bounce Combine | 衝突するオブジェクトの反発の処理方法 |
コリジョン(Sphere Collider)をイベント検知用のトリガーとして使う
通常コリジョン(Sphere Collider)は物理演算の為に使用しますが、イベントの検知用としても使うことができます。
Sphere ColliderはComponent > Physic > Sphere Collider
で追加できます。
Sphere ColliderのisTrigger
にチェックを入れることで、他のオブジェクトと衝突しても物理演算が起こらないようになります。
まとめ
物理演算を使うための基礎でした。 複雑な計算をしなくても、物理演算ができるなんてなんて素敵な機能でしょう。