読者です 読者をやめる 読者になる 読者になる

のぐそんブログ

暗いおじさんがシコシコ書くブログです。

UnityのRigidbodyの使い方の基礎の基礎

Unityは3Dゲーム開発用のエンジンなので、物理演算のコンポーネント(Rigidbody)が用意されています。 自分用のメモとして学んだことをまとめたいと思います。

Rigidbody

Rigidbodyとはオブジェクトに物理演算を適用するためのコンポーネントです。

スリープ

物理演算処理は負荷が高い処理の為、「速度が小さい値」になった(動かないと判定された)オブジェクトは、スリープ状態(演算の対象外)になります。

プロジェクトの初期設定で閾値(速度が小さい値)は 0.005 に設定されています。 この値を下回るとスリープ状態になります。

Edit > Project Setting > Physicsから設定を確認できます。

Physics Managerの設定内容

プロパティ 内容
Gravity 重力速度
Sleep Threshold スリープの閾値
Default Contact Offset 衝突判定の距離

詳しくは公式リファレンスを参考

ちなみにC#でGravityの値を変更する場合は、Physics.gravitynew 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にチェックを入れることで、他のオブジェクトと衝突しても物理演算が起こらないようになります。

まとめ

物理演算を使うための基礎でした。 複雑な計算をしなくても、物理演算ができるなんてなんて素敵な機能でしょう。