Unity C#でコライダーを無効化、反応しないようにする方法/Collider.enabledの使い方

IT

スクリプト経由でコライダーを触っても反応しないようにする(あるいは反応するようにする)方法です。削除に近い状態になります。

スポンサーリンク

成果物

元々有効だったコライダーを無効化してみます。

Collider.enabledの使い方

通常、コライダーなどのコンポーネントは左上のチェックが入った状態になっている=enabledがtrueの状態にあります。
チェックを外すとenabledがfalseとなり、コライダーは触っても反応しなくなります。これをスクリプトでやります。
そもそもなんでそんなことしないといけないかというと、脱出ゲームでクリア時は白背景を前に出してこれ以上何もできなくしたいんですが、
白背景に隠されたコライダーが普通に有効なため、触るとテキストが表示されたり、猫が鳴いたりしてしまいます。
今回は画面内のコライダーを全て使えなくすることで、無理矢理他の操作ができない状態を実現したいと思います。
クラス内でコライダーを宣言していきます。コライダーにはいくつか種類があるので、Box Collider 2Dであればpublic BoxCollider2D 変数名;のように記述します。
で、セットして、
変数名.enabled = false;のように記述することで、該当するコライダーを反応しないようにすることができます。
コライダーを無効化
コライダー.enabled = false;
テスト実行すると、ちゃんと効かなくなっているようなので、
あとは脳筋で処理します(もちろんスクリプトでコライダーを取得しても問題ないです)。
もしセットしてあるコライダーがCircle Collider 2Dなら、
宣言はpublic CircleCollider2D 変数名;になるし、
Polygon Collider 2Dを使っていれば、
宣言はpublic PolygonCollider2D 変数名;になります。
てなわけで全部セットできたので、
全部enabled = false;にします。
実行結果です。コライダーがすべて無効化され、クリア画面でこれ以上何もできなくなったことが確認できました。

この記事では無効化だけしましたが、無効化していたコライダーを有効化(enabled = true;)する使い方も可能です。

やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。

コメント

モバイルバージョンを終了