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

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

【Unity5でレースゲーム】神田川に水を張ったらアキバが洪水に・・・

前回プロジェクトファイルが壊れたなどと書きました。

tf.hateblo.jp

仕方がないのでもう一度イチからやり直したのですが、他のUnityプロジェクトファイルをいじくった後に戻ってくるとまた全てのオブジェクトが消えていました。

絶望しかかったのですが、やっと気がつきました。シーンが開いていない事に。
Open Sceneでシーンを開くと無事に全てが元通りに。

一つのプロジェクトファイルだけで作業している場合は毎回Unityを立ち上げる度に自動的にシーンを開いてくれるのですが、他のプロジェクトファイルで作業した後だと開かない事があるようですね。

さて、前回気になっていた自車に影が落ちない問題をまず修正します。

f:id:takujidev:20150709201237p:plain

自車のSkyCarBodyゲームオブジェクトのReceiveShadowsがチェックされていないのでチェックを入れると影が落ちるようになりました。

次に、敵が遠く離れていてもエンジン音が良く聞こえる問題の修正です。
CarAudio.csスクリプトのSetUpEngineAudioSourceの中でオーディオソースのspatialBlendを1にします。

        // sets up and adds new audio source to the gane object
        private AudioSource SetUpEngineAudioSource(AudioClip clip)
        {
            // create the new audio source component on the game object and set up its properties
            AudioSource source = gameObject.AddComponent<AudioSource>();
            source.clip = clip;
            source.volume = 0;
            source.loop = true;
            source.spatialBlend = 1f; // 3D効果をONにする。

            // start the clip from a random point
            source.time = Random.Range(0f, clip.length);
            source.Play();
            source.minDistance = 5;
            source.maxDistance = maxRolloffDistance;
            source.dopplerLevel = 0;
            return source;
        }

次に、神田川がのっぺりした青色で味気ないのでスタンダードアセットのWater4Advancedを使って水を貼ってみました。
水面が足りなかったので適当にX,Zのスケールを調整して川全体に水が行き渡るようにしました。
Yのスケールを大きくすると海のような荒波になるので、Yは1のままです。
f:id:takujidev:20150709203623j:plain

敵車を4台に増量し早速レースをしてみます。

どうやら秋葉原は少し傾斜があるようで、首都高1号線のあたりから東側が大洪水になっていました。
f:id:takujidev:20150709205620j:plain

動画です。途中から洪水ゾーンに突入します。

Unityエディタ上で試した限り、水面の処理はかなり重いです。
実際にゲームの他の要素を入れた状態で十分なフレームレートが出ないようであればWater Qualityパラメーターで品質を調整するか、思い切って外してしまう必要がありそうです。