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);
}
}
参考サイト
この記事が気に入ったらサポートをしてみませんか?