【unity入門】is kinematicをスクリプトからオンにする方法/見当たらない場合の対処法

unityでゲームを製作制作しているとよく使うis kinematicですが、

・is kinematicをスクリプトからオンにする方法がわからない
・is kinematicが見当たらない場合

といったことが多々あるかと思います。

そこで、この記事では

・is kinematicが見当たらない場合の対処法
・is kinematicをスクリプトからオンにする方法

について解説していきます!

is kinematicが見当たらない場合の対処法

is kinematicが見当たらない場合はおそらくRigidbody2Dを使っている時ではないでしょうか

というのも、RigidbodyとRigidbody2Dでは仕様が少し異なり、Rigidbody2Dにはis kinematicという項目がないからです。

それでは、Rigidbody2Dでis kinematicをオンにするにはどうすれば良いのでしょうか?

Rigidbody2Dでis kinematicをオンにする

Rigidbody2Dにはis kinematicという項目がないので、代わりにBodyTypeをKinematicにすることで変更することで対応させます。

Rigitbody2DのBody Typeについてについてはこちらの記事をどうぞ『Rigitbody2DのBody Typeについて

is kinematicをスクリプトからオンにする方法

isKinematicをスクリプトからオンにする方法は非常に簡単です。

RigidbodyとRigidbody2Dで微妙にやり方が異なるのでそれぞれ説明していきましょう。

Rigidbody

Rigidbodyでis kinematicをスクリプトからオンにするには、

Rigidbody.isKinematic = true;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //isKinematicをオンにする
        rb.isKinematic = true;

    }

}

Rigidbody2D

Rigidbody2Dにはis Kinematicという項目がないので、代わりに代わりにBodyTypeをKinematicにすることで変更することで対応させるのでしたね。

スクリプトからBodyTypeをKinematicに変更するには、

Rigidbody2D.bodyType = RigidbodyType2D.Kinematic;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbody2Dを取得
        var rb = GetComponent<Rigidbody2D>();

        //BodyTypeをKinematicにする
        rb.bodyType = RigidbodyType2D.Kinematic;

    }


}

まとめ

この記事では、is kinematicを

・スクリプトからオンにする方法
・見当たらない場合の対処法


について扱ってきました。

どちらも簡単にできますので、ぜひ覚えておいてください!