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

IT

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

スポンサーリンク

成果物

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

Collider.enabledの使い方

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

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

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

コメント