Unity事例ノート

UNITY

Collider内にとどまればn秒間動けなくなる

範囲に侵入して、しばらくすると移動不能になり、数秒経てば再び動かせるようにしてみましょう。

今回の例では、BoxColliderに入ってから2秒後に動けなくなり、さらに2秒経過すれば動けるようにします。

非表示にしたBoxColliderを、エリア外に出れば、再び表示できるようにしています。

関連記事:
エリア内にn秒間滞在すれば実行
特定エリアに近づくと追いかけてくる
エリアに入れば自動で移動(ムービングウォーク)
特定エリアに入った時は実行不可にする
エリアに入れば飛び上がる
領域に入っている間と離れたときに発生
触れた相手のコライダーを削除(無効にする)
オブジェクトの半分まで入れば実行
エリア内でランダム移動する
エリアに入れば音量を上げる

オブジェクトの用意

PlaneとSphereを作成して、色をつけます。

Sphereにはリジッドボディを追加し、中心からずらして地上に配置します。

シーンビューではこのように見えています。

続いて、空のオブジェクトを2つ作成します。

一つを「StayArea」、もう一つを「ExitArea」という名前に変更。

StayArea、ExitAreaともにボックスコライダーを追加し、トリガーにするにチェックを入れて、サイズを3倍にします。

同じ場所、同じサイズで、2つのボックスコライダーが重なっている状態です。

エリア内に留まっている時のスクリプト

まずは、ボックスコライダー内で2秒後に動けなくなり、さらに2秒経過すれば動けるように、プログラムを作成します。

SphereMove.csを作成し、Sphereに追加します。

SphereMove.csを記述します。

一番最後のAreaOn()は、エリア外に出たとき、再びボックスコライダー(StayArea)を表示させるために作成しました。

無効にしたColliderを再び有効に

StayAreaに入ってから2秒後に、ボックスコライダーは非表示になっています。

そのため、エリアの外に出たタイミングで、再びボックスコライダー(StayArea)をアクティブにしましょう。

AreaScript.csを作成して、ExitAreaに追加します。

AreaScript.csを記述します。

AreaScript.cs側から、SphereMove.csのAreaOn()を実行させるスクリプトです。

それでは、ゲームプレイして動きを確認しましょう。

エリアに侵入して2秒経過すれば、2秒間動かせなくなります。

動けるようになってエリア外に出れば、またボックスコライダーが表示。

再度エリアに侵入すれば、また移動不能になります。

関連記事:
エリア内にn秒間滞在すれば実行
特定エリアに近づくと追いかけてくる
エリアに入れば自動で移動(ムービングウォーク)
特定エリアに入った時は実行不可にする
エリアに入れば飛び上がる
領域に入っている間と離れたときに発生
触れた相手のコライダーを削除(無効にする)
オブジェクトの半分まで入れば実行
エリア内でランダム移動する
エリアに入れば音量を上げる