UnityでRigidbody(リジッドボディ)を追加する方法【初心者向け】
Unityで【Rigidbody(リジッドボディ)】を追加する方法を初心者向けに解説した記事です。Rigidbodyを追加するだけで、ゲームにおける物体の落下や回転といった動きを簡単に再現することができます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
ゲームエンジンのUnityでRigidbody(リジッドボディ)を追加する方法を初心者向けに解説した記事です。
Rigidbodyとは、ゲームオブジェクトに物理シミュレーションを適用するためのコンポーネント(設定項目の集まり)です。Rigidbodyを追加するだけで、ゲームにおける物体の落下や回転といった動きを簡単に再現することができます。
今回は、球形のゲームオブジェクトにRigidbodyを追加して、「落下するボール」を作成します。
なお、本記事はTechAcademyのUnity入門オンライン講座の内容をもとにしています。
田島メンター!!3Dオブジェクトを画面に表示できるようにはなりましたが、これって空中にあっても浮いたままになっちゃうんですか~?
それでは今回は、Rigidbodyを使ってオブジェクトに物理シミュレーションを適用させてみよう。
Rigidbodyというのはどこから設定するんですか?
物理属性を与えたいオブジェクトのInspectorタブから行うんだ。シンプルな平面とボールを作成して、ボールに属性を与えてみよう。
事前準備
まずはボールとなる球(Sphere)と、地面となる平面(Plane)をシーンに追加しましょう。
画面上部の[GameObject]タブから、[Create Other]→[Sphere]と選択します。
作成した「Sphere」は「Ball」と名前を変え、Y座標を「5」としておきます。
([Inspector]タブで[Transform]の[Position]にある[Y]の値を設定します。)
同様に、[GameObject]→[Create Other]→[Plane]と選択します。
「Plane」はこのままで設定完了とします。
このままではゲーム画面が真っ暗ですので、ライトを追加しましょう。
[GameObject]→[Create Other]→[Directional Light]と選択します。ライトの設定はデフォルトのままでも構いませんが、ここではY座標を「10」とします。
以上で準備完了です。
再生ボタン(画面上部の真ん中あたりにある▶︎)を押すと、ゲームにボールと地面が追加されたことが確認できます。
この状態では、まだボールは動きません。
Rigidbodyの追加
では、ボールにRigidbodyを追加して、落下するようにしましょう。
[Hierarchy]タブで、先ほど作成した「Ball」を選択し[Inspector]タブの下部にある[Add Component]ボタンを押します。
そして、[Physics]→[Rigidbody]と選択します。
[Inspector]タブにRigidbodyコンポーネントが追加されました。
以後、ボールには物理シミュレーションが適用されるようになります。
Rigidbodyの主な項目について説明しますので、設定をしてみましょう。
Mass
ゲームオブジェクトの質量です。
(質量は落下速度に影響しませんので、今回は「1」を設定します)
Drag
ゲームオブジェクトが移動するときの空気抵抗です。「0」を設定すると空気抵抗がなくなります。
また、「Infinity」と設定すると空気抵抗が無限大になり、動かなくなります。
(今回は使用しませんので「0」を設定します)
Angular Drag
ゲームオブジェクトが回転するときの空気抵抗です。
(今回は使用しませんので「0」を設定します)
Use Gravity
ゲームオブジェクトに重力を適用するか否かについて設定できます。この項目がチェックされると、重力が働き落下するようになります。
(今回はチェックを入れます)
ボールのRigidbodyを設定した状態で、ゲームを再生してみましょう。
地面まで落下するようになりました。
ボールにRigidbodyを適用したよ。Gameタブで再生するとどうなったかな?
ボールが落下しました!でもスーッと降りてきただけで何となく不自然な感じがしますね。
では次は、地面にボールが落ちた際に跳ね返ってくるようにしてみよう。
ボールを跳ねさせる
ボールは落下するようになりましたが、まだあまりボールらしく見えません。
UnityではRigidbody以外にも、様々な物理シミュレーションに関する設定が可能です。
では、ボールが地面に落ちると跳ねるようにしてみましょう。
そのためには「Physic Material」を設定する必要があります。
まずは、画面上部の[Assets]タブから、[Create]→[Physic Material]を選択してください。
[Project]タブに「New Physic Material」が追加されます。
次に、作成された「New Physic Material」を選択し、名前を「Physic Material_Ball」とします。
そして、[Inspector]タブの[Bounciness]の値を「1」にします。
最後に、作成した「Physic Material_Ball」をボールに適用しましょう。
[Hierarchy]タブで「Ball」を選択し、[Inspector]タブの[Sphere Collider]で[Material]を設定します。
[Material]の右端にある「◎」ボタンを押すとウインドウが開きますので、「Physic Material_Ball」を選択します。
この状態でゲームを再生してみましょう。
地面まで落下したボールが跳ねるようになりました。
今回の記事は以上です。
Physic Materialを適用させるとどうなったかな?
今度はボールが落ちた後、何回かバウンドしましたね!
Bouncinessの値は0が跳ね返らない、1が跳ね返るという設定になるんだ。また、Physic Materialは該当のファイルを直接Sphere ColliderのMaterialにドラッグ&ドロップすることでも適用させることができるよ。
分かりました。ありがとうございます!
さらにUnityを使いこなしたい場合はUnityでプレハブ(複製)を使う方法 も合わせてご覧ください。
[お知らせ]TechAcademyではオリジナルゲームアプリが公開できるUnityオンラインブートキャンプを開催しています。現役Unityエンジニアのサポートで効率的に学びたい場合はご検討ください。