バッテラが如く

プログラミングしましょ!

【Unity】重力をゲームオブジェクト個別に設定する方法

Unity (2021.3.2f1)

はじめに

rigidbodyで重量を有効すると全Rigidbodyに共通の重力がかかります。

これを一部のゲームオブジェクトに対して重量をかけるにはどうしたらいいかという話です。

重力を自前でかける

useGravityをオフにし、仮想重力を毎フレームかけます。

Rigidbody _rigidbody;

private void Awake()
{

    _rigidbody = GetComponent<Rigidbody>();
    _rigidbody.useGravity = false; // 重力オフ

}

private void FixedUpdate()
{

    // -9.8fがデフォルトなのでこれを変えれば任意の重力にできる
    Vector3 gravity = new Vector3(0, -9.8f, 0);

    _rigidbody.AddForce(gravity, ForceMode.Acceleration);

}