Unity++blog.

UnityやC#とかについて学習したことを書いてます

赤信号になると自動的に止まり、青信号で歩く

通行人が赤信号になると自動的に止まり、青信号で歩き出すように作ってみました。

 

 

 前回記事の続きです↓

nabesi777.hatenablog.com

 

 前回作成したスクリプトを利用して、赤信号の時には動きを止めるColliderを出現させ、青信号の時には出発をさせるColliderを出現させるというやり方で、信号の色を通行人へ通知させました。

 

信号機の子要素へ空オブジェクトを2つ作成して、それぞれ「StopCollider」「GoCollider」と名前を付けました。

f:id:nabesi777:20190207221839p:plain

 

 この空オブジェクトへBoxColliderをアタッチして、下のように赤信号の時には通行人を止めたい場所へ設置します。

f:id:nabesi777:20190207221153p:plain

 

 

この時「StopCollider」も「GoCollider」も同じPosition・Sizeで設置します。

 また、タグをそれぞれStop、Goと変更しました。

 

f:id:nabesi777:20190207222347j:plain

 

f:id:nabesi777:20190207222318p:plain

 

 Positionなどを素早く為に、コンポーネントの右上の歯車よりCopyComponentして

数値を写したいオブジェクトのコンポーネントでPasteComponentValueをすると便利です。

 

f:id:nabesi777:20190207222705p:plain

 

f:id:nabesi777:20190207222730p:plain

 

 次に前回作成したスクリプトにコードを加えていきます。

まずは信号機を制御するスクリプトを変更します。今回作成したColliderを取得できるように変数を宣言して、if文内の信号の色に合わせて有効・無効を切り替えます。

 

 

 次は通行人のスクリプトへコードを加えていきます。

こちらの記事で作成したもの↓

nabesi777.hatenablog.com

 

 OnTriggerEnterメソッドを使用してStopタグに当たった場合は歩くスピードを0にして、Goタグに当たった時はスピードを上げるという内容を追加しました。

また、アニメーションも切り替えできるようにしました。

 

 

 アニメーションコンポーネントへIdleステートも設定しておきます。

f:id:nabesi777:20190207224506p:plain

 

これで信号の色に合わせて止まったり、歩き出したりする動きを表現することができました。