見出し画像

Unityやってみる10:美しい山や森や海を作ってみる

 こんにちは、Unity素人おじさんです。ただしプログラミング歴は結構長いです。

 ピンク色問題とか、バージョン問題とか、色々脱線しましたけどようやく本題に戻ってきました。

※前回はこちら:

 今日は山や森や海などを作ってみます。

 Unityには「Terrain(テレイン、地形)」という3Dオブジェクトがあって、標高0メートルに置かれた1kmx1kmの正方形を、盛り上げたりへこませたりして山や盆地を作り、そこに木をはやしたり、草を植えたり、水をはったりして、いろんな地形を作ることが出来ます。また上空に、きれいな空を配置したりできます。と、知った風に言ってますけど一週間ほど前には私も何も知りませんでしたから、大丈夫です(笑。

※こんな感じで作っていけます↓

 で、実際に作っていく前に、確認しておきたいのが、現在使っているUnityエディターのバージョンと、それに合った、木や草のプレハブ(3Dモデル)、地面のテクスチャー、水のプレハブ、空(スカイボックス)、など。
 本格的にシーン作りを始める前に、それを確認しておいた方がいいです。

今回のプロジェクトで使用しているUnityエディターのバージョン

アセットストアで、このバージョン用のアセットがないか、確認してみましょう。アセットストアへはエディター上部のメニューから「Window」→「Asset Store」でアクセスするのが本来のやり方ですけど、閲覧だけなら、url指定で直接アクセスも可能ですね。

 上記サイトの「アセットの検索」という所に、例えば「tree grass」という文字をいれて検索してみます。するとページの右に、詳細な検索条件を指定するフレームが表示されるので、そこで条件を入れていきます。

 まず無料であること。

 Unityバージョンは、私が使っている2021.3系の場合は、「Unity 2021.x」を選べばいいんでしょう、たぶん。

 検索されたものから、ポリゴン数が少なそうな、これを選んでみました。風になびくような「ウィンドシミュレーション」も、売りのようです。

 詳細は省略しますが、Terrain(地形)オブジェクトの「Paint Trees」機能をつかって、木をペイントしてみました。

 さらにPaint Detail機能を使って、草を配置してみます。高さの調整が不明で見栄えがイマイチですが、今回はお試しなので良しとしましょう。茶色い地面のテキスチャも欲しいですが、今回は草だけで我慢しましょう。

 インポートしたアセットの、プレハブが保存されているフォルダを見ると、青い花のプレハブもありました。これをシーンビューにドラッグ&ドロップすると、花を植えることが出来ました。ちょっと小さいのでサイズ調整。

 山と森と草原は、以上で表現可能ですね。ほんとは茶色い地面も欲しいですけど、また今度にしましょう。

 次は海を作るための、水を探します。アセットストアで「water」で検索してみました。タイトルにURPとかHDRPとか書かれているものは、「レンダーパイプライン」の対応の仕方が私には不明なのでパス。結果、ひとつよさそうなのが見つかりました。こちらもローポリなので、PCへの負担が少なそうです。

 どうやって使えばいいか、よくわからなかったのですが、インポートしたアセットの中に、Documentationというフォルダがあり、その中に使い方の説明(pdfファイル、英語)が入っていました。英語が苦手な人は、こういう所で挫折しそうですね💦
 結果、なんとか理解できて池を作ることが出来ました。地形の盛り上げは、Terrain(地形)の「Paint terrain」の「Raise or Lower Terrain」という機能を使えば、割と簡単に実現できます。

 木、草、地面(下草)、水のアセットが見つかりました。最後に空(スカイボックス)を探します。

 アセットストアで検索した所、下記が見つかりました。無料であることを確認してダウンロードし、インポート。

 スカイボックスの設定は、Terrainとは無関係の所にあります。またちょっと厄介なことに、その設定のメニュー階層が、Unityエディターのバージョンで違うようです。「Window」→「Lighting」→「Setting」→「Environment」と説明している解説サイトがありますが、私の環境では「Window」→「Rendering」→「Lighting」→「Environment」にありました。ちょっとした違いですが、こういう違いもUnityを難しくしている理由のひとつですね💦

 色々な空が選択できるようです。美しいです。

 夕日(FS013_Sunset.mat)を選択してみました。すっご(笑。

 上のスクショはシーンビューなのですが、メインカメラの位置を、上記の位置に合わせてみます。ヒエラルキーパネルで「Main Camera」を選んだ状態で、上部メニューから、「GameObject」→「Align with View」。※ここ間違えやすいです💦

 結果、ゲームビューもこうなりました。いやー美しいですねー。静止画だとわからないのですけど、水がすごい勢いで上限に揺れています。サイズ感がおかしいのでしょう。その辺は調整が必要なのでしょうね。

 以上、使用するアセットの準備は整ったので、いったん終了して新規プロジェクトを作成し、「Low Poly Wind」と、「LowPoly Water」と、「Fantasy Skybox FREE」の3つのアセットをインポートします。

 一度ダウンロードしておいたアセットは、Package Managerでインポート処理をするだけでいいのが、便利ですね。

 で、ここで気づいたんですけど巨大な島など、超遠景が必要な場合、プレハブやテクスチャなどがうまく表示されず、Terrainが灰色むき出しになってしまうんですね。

 これを回避するために、Terrainの「Paint Texture」というの機能で、デフォルトの色を設定しておいた方がいいようです。


 Terrainを「Raise or Lower Terrain」機能で盛り上げて島を作り、上記の緑と褐色のテクスチャー(Terrain Layer)でデフォルトの色を塗り、木を植え、水のプレハブを配置し超大きくして海にし、最後にスカイボックスをセットして、完成。今回はちゃんと保存してバックアップを取り、次回の作業まで大事に保存しておきます💦

 色々苦労しましたが、これでUnityで、「簡単なゲームのステージを作る」、「Terrainを使って地形を作る」、「オブジェクトに重力を働かせる」、「マウスのクリックイベントを処理する」、「プレハブを使ってオブジェクトを動的に生成する」、という技を覚えました!

 今回は記事が煩雑になってしまうのを避けるために、Terrainを使った景色の作成だけにしておきます。次回こそはこの景色に、上空からモンスター(立方体)を降り注がせてみたいと思います。毎回やるやる詐欺ですみません💦

次回はこちら:

この記事が気に入ったらサポートをしてみませんか?