【Unity】オブジェクトに物理機能をつけるRigidbodyの使い方、設定方法

Rigidbodyなし

なにもコンポーネント(機能)をつけない場合、上の図のように、球体は落ちてきません。なぜなら、重力機能(物理シュミレーション)をつけていないからです。

今回はRigidbodyコンポーネントという、重力機能(物理シュミレーション)をオブジェクトに追加、設定する方法をお伝えします。

Rigidbodyを追加後

簡単にこれができるようになります。

この記事でのレイアウトは【2 by 3】となっています。Gifや画像が見にくいという方は、レイアウトを変更してください。

目次

Rigidbodyとは

Rigidbodyの例

簡単にいうと、現実世界と同じような物(オブジェクト)の動きをするように制御することができます。

ゲームオブジェクトを物理特性によって制御することができるともいえます。

ティッシュをそのへんに投げてみてください。床に落ちますよね。そのような動きをUnityでも実装することが可能となります。

Rigidbodyの追加方法

  1. オブジェクトの作成
  2. Rigidbodyを追加したいオブジェクトを選択
  3. Add ComponentをおしてRigidbodyを選択

オブジェクトの作成

自分は【Hierarchy→Create→3Dオブジェクト→Sphere】で作成した球体にRigidbodyをつけたいと思います。

あなたもRigidbodyをつけたいオブジェクトを作成してください。

Rigidbodyを追加したいオブジェクトを選択

オブジェクト選択方法

●オブジェクト選択方法

【HierarchyかSceneビュー】→【選択したいオブジェクトを左クリック】

Rigidbodyを追加したいオブジェクトを選択してください。Hierarchy上でもSceneビュー上でもいいので、左クリックで選択してください。

Add ComponentをおしてRigidbodyを選択

RigidbodyComponentを追加

【Inspector】→【Add Component】→【Rigidbodyを選択】

これで【Rigidbody】コンポーネントを追加することができます。また【Rigidbody 2D】というのは、2Dゲームで使える【Rigidbody】です。

もうすでに重力はついてる

【Rigidbody】を追加した時点で、もうすでにオブジェクトに重力がついているはずです。ゲーム再生ボタン【▶】をクリックして、ゲームを実行してみましょう。

どうでしょうか。落下してきましたか?

もし落ちてこないなら【Use Gravity】にチェックを入れる

重力機能の追加

【Rigidbody】の【Use Gravity】にチェックを入れることで、重力機能がONとなります。もし、オブジェクトが落下しないのならやってみてください。

Rigidbodyの設定

【Rigidbody】コンポーネントをご覧ください。「Mass」「Drag」「Angular Drag」「Use Gravity」「Is Kinematic」「Interpolate」「Collision Detection」と多数の設定項目があります。

「なにがなにを意味するかわからないし、え、なにその英単語、シスタンにものってないよ」ものばかりです。

ざっと説明するとこんな感じです。

Mass 物体の質量(Kg)
Drag 空気抵抗
Angular Drag 回転に対する抵抗
Use Gravity 重力をつけるかつけないか
Is Kinematic 物理演算を有効にするかしないか
Interpolate 物理効果をなめらかにする
Collision Detection 高速で動くオブジェクトのすり抜け防止
Constraints 位置、回転の固定

Mass

1つだけ質量が大きい球体が乱入

数字を大きくするほど、質量が大きくなります。白い玉だけ質量を大きくしています。

Drag

空気抵抗を大きくして、球体を落下

空気抵抗を変化させることができます。0の場合は空気抵抗なしの状況を表しています。数値を大きくするほど、空気抵抗は大きくなります。

Angular Drag

Angular Dragが0のとき

回転による空気抵抗を示しています。上は回転による空気抵抗が「0」なので、なにもオブジェクトに触れていないときの回転が変わりません。

数値を大きくするほど、回転による空気抵抗は大きくなります。

Use Gravity

Rigidbodyを追加後

チェックすることで重力機能をつけてくれます。

Is Kinematic

Is Kinematicをつけて実験

白い玉だけに【Is Kinematic】をつけています。白い玉強し。

チェックすることで物理演算を無効にしてくれます。重力を受けたり、他の物体がぶつかってきても、影響を受けないということですね。でも、ぶつかってきた相手には影響を与えます。

では絶対に動かせないのか?というとそういうわけでもなく、「transform.translate」「transform.rotate」で動かせるんですよ。

複雑なのでまとめまうす。

●まとめ

  • チェックつけたオブジェクトは物理演算が無効になる
  • 他の物体がぶつかってきたら、そいつは影響を受ける
  • 動かすことも可能

Interpolate

物理効果をなめらかにしてくれます。なんかカクカクしてるなって思ったら、使ってみてください。

Collision Detection

(アニメーションは準備中です。そのシチュエーションに遭遇した場合、追加します)

【Collision Detection】を設定することで、オブジェクトのすり抜けを防止してくれます。

Constraints

Constraintsの設定

こやつは「Position」「Rotation」の軸をを固定することができます。例えば自分がロケットを発射したいとします。

その際に「Z軸方向には動いてほしくない」場合、【Freeze Position】の「Z」にチェックをつければ、Z軸の方向に動かなくなります。

「x軸とy軸方向に回転してほしくない」場合、【Freeze Rotation】の「X」「Y」にチェクをつければ、X軸Y軸方向に回転しなくなります。

「Freeze」という言葉の通り、チェックをつけた軸を凍らせてしまいます。氷属性をもつのが「Constraints」です。

跳ね返りPhysics Material

実をいうと、衝突するオブジェクトの摩擦や跳ね返り効果を制御できるようになる【Physics Material】というものもあります。

それでさらに現実の世界のように制御することができます。また、それは長くなるので、改めて記事にします。

ツイッターで更新告知するので、フォローお願いします。(べ、別に告知じゃないからね)

まとめ

  • 【Rigidbody】で物理機能をつけることができるよ
  • 設定は↓
Mass 物体の質量(Kg)
Drag 空気抵抗
Angular Drag 回転に対する抵抗
Use Gravity 重力をつけるかつけないか
Is Kinematic 物理演算を有効にするかしないか
Interpolate 物理効果をなめらかにする
Collision Detection 高速で動くオブジェクトのすり抜け防止
Constraints 位置、回転の固定

あたまの片隅にでも入れといてください。

あと【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろうも作っているのでご覧ください。

あわせて読みたい
【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろう【チュートリアル】 ▼この記事を先に見ておきましょう▼ https://miyagame.net/basis-cs/ 当サイトではUnityでのサンプルゲームを作成することができます。Unityでゲームを作っていきましょ...

さぎのみや(@saginomiya8)でした。

Rigidbodyの使い方・設定方法

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!

コメント

コメント一覧 (1件)

  • いつも参考にさせて頂いています!

    一つお願いなのですが、コードの説明の際、白の四角に白の文字だと非常に見ずらいです...
    別の色にしてもらえますか?

からこるも へ返信する コメントをキャンセル

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次