【unity入門】Rigidbody2Dの重力を変更する方法

unityで2Dゲームを作っていると重力を操作したくなることってありますよね。
そこで、この記事では重力を変更する方法について解説します!
この記事の目次
できるようになること
1.ゲーム全体の重力を変える
1.個別のオブジェクトの重力を変える
ゲーム全体の重力を変える
やること
下記のようにスタートと同時に落下する二つのオブジェクトがあります。

ゲーム全体の重力を反転させて二つのオブジェクトを浮かせてみましょう。
ゲーム全体の重力を変更
ウィンドウからEdit>Project Settings>Physics2Dを押してください。

今回はRigidbody2Dを使っているのでPhysicsではなくPhysics2Dを選択するのがポイントです。
Physics2Dを押すとInspectorでPhysics2Dの設定ができます。

今回はゲーム全体の重力を反転させて全てのオブジェクトを浮かせたいので、GravityのYの符号を変えて『-9.81』から『9.81』に変更しましょう。

実行結果
実行結果は、

ゲーム全体の重力が変更されたので、オブジェクトが浮かぶようになりましたね!
個別のオブジェクトの重力を変える
次は個別のオブジェクトの重力を変えていきます。
ゲーム全体の重力を変更している方は『-9.81』に戻しておきましょう。

今回はスクリプトで制御しますので、浮かせたい方のオブジェクトにスクリプトを追加してください。

スクリプトに記述
それではスクリプトに記述してオブジェクトを浮かせましょう。
記述内容は、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { //変数を作る Rigidbody2D rb; void Start() { //Rigidbody2Dを取得 rb = GetComponent<Rigidbody2D>(); } //一秒間に一定の回数呼ばれる void FixedUpdate() { //自分で作った重力 Vector2 myGravity = new Vector2(0, 9.81f*2); //Rigidbody2Dに重力を加える rb.AddForce(myGravity); } } |
ポイントは変数『myGravity』で、9.81に2を掛けているのがポイントです。
なぜ2を掛けているかというと、初期状態では-9.81(重力!)の力が加わっており、9.81の力を加えるだけでは力がつり合った状態になるからです。
実行結果
今回は左側のオブジェクトにスクリプトを結びつけたので、左側のオブジェクトが浮かぶはずです。
実行結果をみてみましょう。

予想通り左側が浮かんでいますね!
まとめ
この記事ではRigidbody2Dの重力を変更する方法について解説しました。
今回紹介したのは2Dでしたが、少し応用すれば3Dでもできますので気が向いたらやってみてください!