今回は、Unityで本格的な海を作成する際におすすめのアセット「Crest Ocean System URP」を紹介したいと思います。
とてもお手軽な設定でクオリティの高い海洋システムを実装することが出来るので、非常におすすめです。
【Unity】Crest Ocean Systemで本格的な海を作成する
今回紹介するアセットは、後ろに「URP」と付いている通りURPが対象となりますので注意が必要です。(HDRP版のCrest Ocean Systemアセットも用意されています。)
多少コンポーネントをいじっていくだけでリアルな海を再現することが出来るので、初心者でも使いやすいんじゃないかなと思います。
デモシーン
複数のデモシーンが含まれており、美しい海の様子を確認することが出来ます。
使い方
今回は、このシーン上に海を作成してみます。
まずは、空のオブジェクトを作成します。名前は「Ocean」に変更します。
Add Componentから「Crest Ocean Renderer」を設定します。
インスペクタからMaterialを「Ocean-UnderWater」に変更します。
シーンビューを確認すると、こんな感じで海が作成されると思います。
位置に関しては、OceanのTransformのPositionを微調整してください。
Sphereを浮かす
このままだとちょっと寂しいのでSphereオブジェクトを作成して海の上に浮かせてみましょう。
海の上に適当にSphereオブジェクトを作成します。
続いて、RigidbodyとCrest Simple Froating Objectコンポーネントをアタッチします。
この状態でゲームを実行するとこんな感じになりました。
デフォルトだとオブジェクトが沈んだように見えるのでインスペクタから「Buoyancy Coeff」の値を変更すると良いです。
その他にも色々なパラメータが用意されているので、お好みで設定してください。
波の作成
手っ取り早い方法として、OceanにAdd Componentから「Crest Shape Gerstner Batched」スクリプトをアタッチします。
ゲームを実行すると、波の動きが分かると思います。
より細かな設定を行いたい場合には、新たに波のスペクトルを作成します。
「Create」→「Crest」→「Ocean Wave Spectrum」をクリックします。
すると、「OceanWaves」という名前のスペクトルが作成されると思うので、OceanオブジェクトのインスペクタからSpectrumに設定します。
後は、先ほど作成されたOceanWavesスペクトルを選択して「Spectrum」のパラメータをお好みで変更すると良いです。
これが波の波長のような役割になるにで、各オクターブ毎に色々とバーを動かしてみることで波の変化を確認出来るようになります。直感的で凄くわかりやすいです。