Rigidbody2Dの重力を変更する方法

当たり判定を設定する前に

ADD Compomentで重力を付けたいオブジェクトに
「rigidbody2D」を設定します。

オブジェクトを浮かせる 

パターン①(個々に設定)

Inspectorで「rigidbody2D」内の「Gravity Scale」に「-(マイナス)」を入れる。

パターン②(ゲーム全体に設定)

Edit>Project Settings>Physics2Dを押す。
「Gravity」の「Y」を「9.81」に変更する。(初期値:「-9.81」)

コードから変更する場合は、

Physics.gravity = new Vector3(0,10,0);

特定のオブジェクトの重力を変える

浮かせたいオブジェクトに下記のスクリプトを結びつける

パターン①のコード

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);

    }
}

パターン②のコード

Inspectorから好きなVector3を入力してあげればOKです

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChangeGravity : MonoBehaviour 
{
    [SerializeField] private Vector3 localGravity;
    private Rigidbody rBody;

    // Use this for initialization
    private void Start () 
    {
        rBody = this.GetComponent<Rigidbody>();
        rBody.useGravity = false; //最初にrigidBodyの重力を使わなくする
    }

    private void FixedUpdate () 
    {
        SetLocalGravity (); //重力をAddForceでかけるメソッドを呼ぶ。FixedUpdateが好ましい。
    }

    private void SetLocalGravity()
    {
        rBody.AddForce (localGravity, ForceMode.Acceleration);
    }
}


参考サイト


この記事が気に入ったらサポートをしてみませんか?