【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を
・スクリプトからオンにする方法
・見当たらない場合の対処法
について扱ってきました。
どちらも簡単にできますので、ぜひ覚えておいてください!