【Unity】重力を停止させたい!

今日も元気にUnityしていますか?あきです。

前回まで、【Unity自己流メモ#11】みたいにナンバリングしてたんだけど、毎回記事を執筆するときに、今回は何回目か確認するのがだるいから、この記事からナンバリングしないのでどうぞよろしく。

さてさて、今回の内容はUnityで重力を止めようというものだ。

まぁいつも通り、まずはコード貼ります。

Rigidbody.isKinematic = true;

これだけ。

Rigidbodyを宣言して取得した後、重力を止めたくなったところで、上のコードを記載してやればええ。

なんで「true」なのに、重力を「停止」するのかについて詳しく知りたい人は、
エクスプラボさんのこの記事を見ると分かりやすいと思う。
正直私も上記のように思っていたが、この記事を見てなんとか理解。

ということは、逆にいうと「false」にすると、重力が発動するってことだ。

とはいっても、「isKinematic」は重力だけではなく、物理演算を受けなくなるため、重力は止めても移動させたいといったコードを書くには不向きであると思われる。

その時は、GravityScaleを0にしてやれば、無重力状態になる。

using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        // Rigidbody2Dコンポーネントを取得
        Rigidbody2D rb2D = GetComponent<Rigidbody2D>();
        
        // 重力を停止
        rb2D.gravityScale = 0;
    }
}

しょうみ、こっちの方がいいかも。

まぁ、用途に応じて分けてくれ。

それじゃあ、Unityライフを楽しんで!

コメント

タイトルとURLをコピーしました