▼そのUnityの作業、依頼しませんか?
Component(コンポーネント)

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

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サンプルゲーム】動画よりわかりやすく記事でゲームを作ろうも作っているのでご覧ください。

Unityサンプルゲーム
【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろう【チュートリアル】【Unity2D&3Dサンプルゲーム・チュートリアル】Unityにおいてのサンプルゲームの作り方が書いてある記事って少ないですよね。そこで当サイトUnishar(ユニシャー)が動画よりわかりやすいサンプルゲームを無料で提供します。...

さぎのみや(@saginomiya8)でした。SNSでシェアしてね( ・∇・) 一生無双モードで頑張る。

ABOUT ME
さぎのみや
さぎのみや
超書手。現在はUnityメディア「ユニシャー」の運営とゲーム開発がメインです。Unity、ライティング関係のお仕事お待ちしております。 >>詳しいプロフィール >>Amazonほしいものリスト
【Unity3D】新しいサンプルゲーム(チュートリアル)を作りました!!!
Unity有料サンプルゲーム

「Unityで3Dゲームを本格的に作っていきたい!」という人におすすめのチュートリアルとなっています。

画像のようなゲームの作り方を販売しています。色々と応用できるサンプルゲームとなっています。ぜひ、作ってみてください。

詳細
>>【Unity3Dサンプルゲーム・チュートリアル】「フリスビーを犬に届けよ!」の概要

>>BOOTHでこのチュートリアルを見る

【RT・フォローであなたのスキルが上がる】

シェアフォローする

さぎのみやのモチベが上がる

コンテンツの質が上がる

あなたの能力も上がる

あなたの
Twitterでのシェア

であなたの能力が上がります。

>>さぎのみやのツイッター(@saginomiya8)

 

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


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