読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【Unity5でレースゲーム】AE86をピカピカにして景色を映り込ませる

Unity オープンワールドレーシングゲーム

前回、高速化のためにライトマップを焼いて見ようなどと書きましたが、実際に秋葉原の街全体を焼いてみるとMacBook Proの4コアフル稼働で数時間かかりました。真夏にファン全開でうなるMacを見るのはつらいものがあります。
そして、ライトマップを焼いた結果、ビルの壁のテクスチャーが何故かボロボロの廃墟のようになってしまいました。
という訳で、ライトマップは一旦あきらめました。

さて、今回はAE86のボディに周囲の景色を映り込ませてみました。

Reflection Probeコンポーネントを付けたEmptyゲームオブジェクトをゲームシーンのあちこちに配置し、街のオブジェクトのReflection Probe Staticにチェックを入れれば準備OKです。
このゲームではコース上にマーカー用のゲームオブジェクトを置いているので、その子オブジェクトとしてReflection Probeコンポーネント付きのオブジェクトを配置しました。位置は地面から1mくらいに設定し、サイズは500m x 500mの範囲をカバーするようにしています。今回は固定ProbeなのでType はBakedにします。
ライトマップほどではありませんが、キューブマップ作成にしばらく時間が掛かります。

あとは、AE86のボディのマテリアルのSmoothnessを1に近づけるとボディに周囲の景色が映り込みます。
ボディが白だと反射がわかりにくいので今回はテスト用にMetallicの設定を1に上げてクロームメッキのようにしてみました。
f:id:takujidev:20150825211449j:plain

Metallicの設定が0だとこのように見えます。通常はこの設定で良いと思います。
f:id:takujidev:20150825211756j:plain

動画です。

冒頭の、止まっている車の回りをカメラが動く場合や、一番最後の動いている車を固定したカメラが追っているシーンでは何となくそれっぽく景色が反射しているように見えますよね。

ただ、ゲーム中の直線を走っているところではインチキ臭さが丸出しになってしまっています。
今回は、固定されたReflection Probeに映った景色を車のボディに映しているので、車の向きが変化しない直線ではほとんど映る景色が変化せず、前から後ろに流れて行きません。最初の直線で、高架になっている線路に付いている高さ制限ゲートの黄色と黒のシマシマがいつまでも同じ大きさでボディ後部に映っているシーンがわかりやすいと思います。
また、今回はProbeをまばらにしか置いていないので、Probeが切り替わるときにボディに映る景色が不自然に大きく変化してしまいます。本来はもっとたくさんProbeを置くべきなのでしょう。

敵車の反射をじっくり観察する事は無いので恐らくこの方式で問題ないと思いますが、自車はもう少し本物っぽく反射させたいところです。
次回はRealtime方式のReflection Probeを自車に載せる方法を試してみます。