2020/11/09
というわけで、今回のお題は「Terrainを使って背景っぽい地形を作る」です!
冒頭から見も蓋もないことを言うと、自分はTerrainがかなり苦手です。地形作成時のツールが使いにくく、なかなか思い通りの地形ができません。単体では洞窟状の地形が作れないのも痛いです。
ただUnity標準故に機能は豊富で、テクスチャペイントなど魅力的なものもあります。そこで「背景なら大雑把な地形でも大丈夫かも」と考え、Terrainで背景を作ってみます。
Terrain追加前の背景
Terrainを使用する前の背景はこちら。
殺風景どころか空しかありません。見た目は3Dでも中身はファミコンレベルです。このままではアクションゲームとしてあまりにも地味なので、Terrainでいい感じの背景を作ります。
背景に2D画像を使用することも考えましたが、やはり3Dオブジェクトで物があった方が現実味がある上、背景を描けるほどの絵心もないため実質一択だったりします。
地形作成
まず地形を作るわけですが、前述の通り思い通りの地形を作るのが苦手です。なのでQiitaの記事で紹介されていた自動生成ツールを使用します。
背景なのでそこまで凝った地形にするつもりはありません。なだらかな丘みたいなもので十分です。
https://code.google.com/archive/p/unityterraintoolkit/downloads
インポートすると、変数名に関していくつかエラーが出ていたので、適当に被らないような変数名に書き換えます。その後新規にTerrainを作成し、Terrain Toollotを設定します。
「Create」→「Perlin」と選択し、いい感じの地形ができるまで生成し続けましょう。なかなか上手くいかない場合はパラメータを変えて生成してみるといいかもしれないです。
生成後はTerrainの「Paint Height」や「Smooth Height」で形を整えます。
複雑な地形ではありませんが、自力で作ろうとすると結構難しかったりします。モデリングをスカルプト主体でやるような人は上手だったりするんですかね?
テクスチャ設定
作った地形にテクスチャを貼り付けます。
Terrainのペイント感覚でテクスチャを塗れる「Paint Texture」で付けていきます。
以前AssetStoreで購入したテクスチャがファンシーなタッチでいい感じです。
水辺にする部分は砂っぽく、丘の頂点付近はまた別のテクスチャにしたりします。背景なので難しく考えずに行きましょう。
オブジェクト追加
最後に木や建物などのオブジェクトを追加し、背景っぽくしていきます。
元々Terrainの機能で「Tree」や「DetailObject」等がありますが、いまいち使い方が分からず四苦八苦したので、素直に手動で配置しました。みっちりオブジェクトを敷き詰めるわけでもないので問題ないです。
これまた以前購入したアセットでいいものがあったので利用しております。フィーリングでコピペしまくります。
数が多くなってくると背景用オブジェクトでヒエラルキーが埋め尽くされてしまうため、空のGameObjectを1つ追加し、その子オブジェクトにしておきます。フォルダみたいなものですね。
ゲーム画面から見るとこんな感じに映ります。
横からの視点固定なゲームなので、細かいところは映す必要がない分、ちょっと楽だったりします。自由なカメラワークの3Dでは全方位作りこむ必要があるので大変そうですね。
あとがき
そんなわけで、Terrainで背景となる地形を作ってみました。
地形自体はBlenderでも似たようなものが作れますが、Terrainの場合は地形修正やテクスチャの設定・修正がUnityエディタ上で出来るので楽です。
ただ、地形の方も「森の中」とかを表現するにはTerrainがないと厳しいです。現在はブロックベースのステージを作成しておりますが、平坦な地形ならTerrainでもいけるかもしれないので、そのうち考えてみます。