前回はクレーンゲームを作りました。今回はクレーンゲームを配置するゲームセンターについてです。
ゲームセンターを作る
ゲームセンターを作っていきます。
作ったクレーンゲームを複数設置。何かこれだけでもゲームセンターっぽくなりました。ゲームセンターを構成する要素にクレーンゲームって凄いある気がする。人のイメージとして。
ついでにゲームセンターといえばやっぱり夜なので、SkyLightは削除して、DirectionalLightを上向きにします。
真っ暗になるので、光源を大量に設置します。ライトは全てスタティックライトです。ここまで追加するとビルド時間がかなり長くなります。
光源を設置してビルドしたらゲームセンターの雰囲気が出てきたように思えます。
エディターだけ自動露光を削除する
夜のゲームセンターの演出のために、太陽光を無くして店内の明かりをいっぱい設置したために、店内から店の外に視線を移動させると、自動露光の効果によって真っ暗になります。
店の外に視線を変えたところ。真っ暗です。
この自動露光の効果自体は人間の目の視覚効果と同じで、ゲームの雰囲気作りに一役買っている。なので実行時は自動露光をオンで、エディタ上でだけ自動露光を切りたい。調べてみるとビューポートのライティングのところにありました。
露出がAutomaticになっているところを、固定にすれば解決です。
モブを配置する
自分しかいないゲームセンターは寂しいので、モブとしてデフォルトのマネキン(ブルーマン)を配置します。
このままではさすがに違和感バリバリなので、推理モノに出てくる黒い人のようにしてみたいと思います。
マテリアルのシェーディングをUnlitにして単色で塗りつぶします。
ついでに肩書きを表示するために、ビルボードを作ります。
CustomDepth Passを有効にして、常に前面に表示できるようにします。
ゲームセンター内にいる客…のような正体不明の人ができました。
吹き出しも「客」肩書きテキストと同じように、ビルボード+CustomDepth Passによる常に前面にレンダリングしています。
モブを動かす
モブができたらゲームセンター内を徘徊するようにします。AIについては公式ドキュメントに詳しく書かれています。ドキュメントにあるようなBehaviorツリーを使わなくても、ランダムで徘徊させるぐらいなら簡単にできます。
NavMeshBoundsVolumeを追加して、動ける範囲を設定
後はGetRandomReachablePointInRadiusでランダムに移動できる点を取得、SimpleMovetoLocationでその地点まで動かすことができます。
これを定期的に行えばモブのランダム徘徊は可能です。全く賢くはないですが。
ゲームセンターの小物を配置
説明不要ですが、小物を配置していきます。
両替機、ゲームセンターに必須ですね。動かないけど。
ポスター。ゲームセンターに貼ってあるポスターは欲しくなります。椅子はスターターコンテンツのものです。でもサンプルのメッシュを使っていいというのも中々オツですね。
こっちはエレベーター。ドアが開閉するようになってます。
デモサンプルにも自動ドアがありましたが、ドアの開閉はタイムラインを使うといい感じにできます。開ける時はPlayに接続してタイムラインから出てくる数値に従ってドアのlocationを操作する。閉める時はReverseに接続だけでOK。
できたゲームセンターがこちら。
ゲームセンターの外も作る
入り口はガラス製のドアで外が見えるので、店の外も見える範囲で作ります。
画像はスカイライトで明るくした状態でのスクリーンショットです。
道路に通行人や車をスポーンさせる
こちらも明るくした状態での動画です。店の前を車と通行人が通るようにして喧騒な感じを出します。
やり方はブルーマンをスポーンさせた後、移動させると同時に、
SetLifeSpanで寿命を設定します。これで自動でDestroyされるので後は適当な間隔でスポーンさせればランダムな通行人が完成です。
車の方も同じようにしていますが、こちらはランダムで色を変える処理とリボントレイルによるテールランプの尾を引くようなエフェクトを入れています。AnsqweHubのココが参考になりました。
ポーズとゲームのやり直し
ポーズはSetGamePausedだけで動作します。超楽。ポーズ画面を表示して、解除やゲームのやりなおしを選択するので、ShowMouseCursorでカーソルを表示します。
ポーズ画面
ゲームをやりなおす際はRestartGameを呼び出すだけで各種設定がリセットされてリスタートできます。ポーズとリスタート共々非常に楽です。
これクレーンゲームが大体完成しました。後はエンディング画面です。
ではでは。