【Unity】アップデートされたTerrainでトンネルを掘ろう！

##初めに
この記事は「**[サムザップ #1 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/sumzap1)**」の12月7日の記事です。
昨日の記事は@shirai_suguruさんの「**[M1 Macでarm64のHomebrewとPHPBrewでPHP8.0の環境作ってベンチながす](https://qiita.com/shirai_suguru/items/894dc1e71cbc96f4a857)**」でした。

この記事ではUnity2019.3で新たに追加されたTerrainを用いたトンネル作成の手順について解説いたします。

Terrainの基礎は以前の[[Unity]60分で作るTerrainジオラマ地形](https://qiita.com/KoniroIris/items/e8ccba5aed995322927b)を参考にしてください。

### 作成するトンネルの地形

この記事で作成するトンネルはこちらです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/b16c1040-7f02-e97d-2369-b4f8a510ad3e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/edba674f-a8d4-a388-731c-d83368d9ac4b.png)

###環境
使用したアセットとバージョンは以下の通りです。
この記事をUnity上で実際に進める場合は、下のAssetをAsset Storeから導入しておいてください。

・**Unity　2019.4.10f1**
・**ProBuilder　4.4.0**
・**[NatureStarterKit2](https://assetstore.unity.com/packages/3d/environments/nature-starter-kit-2-52977)**　**1.0**
・**[Kajaman's Roads - Free](https://assetstore.unity.com/packages/3d/environments/roadways/kajaman-s-roads-free-52628)**　**1.0.1**
・**[Simple Cars Pack](https://assetstore.unity.com/packages/3d/vehicles/land/simple-cars-pack-97669)**　**1.1**

##Terrain作成
それでは早速、トンネルをあけるための山から作っていきましょう。

###地形の生成
空のシーンを作り、Hierarchyから右クリックで`3D Object > Terrain`を選択しTerrainを生成します。

![Create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/0026036b-e7d8-2f57-75d1-5be15c9bd327.png)

生成されたTerrainは以下のような平面の地形です。

![スクリーンショット 2020-11-30 006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/6c1addde-6be1-08dc-61a9-3aaf9b5f3372.png)

作成直後のTerrainのInspectorは下の画像のようになっています。
基本的な設定は、赤枠の部分から項目を選び、詳細UIに切り替えて操作をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/13401420-a53d-87d1-a701-4210e246fe8d.png)

作業前の初期設定として、Terrainの大きさを調整します。
Terrainが大きすぎると後であける穴が丸くならないため、ここでマップを小さくしておきます。

TerrainのInspectorから歯車アイコンの`Terrain Setting`を選択し、MeshResolutionから`Terrain Width`と`Terrain Length`の値を1000から100にしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/c76051d3-ede7-4b2e-edd4-5d7146e3a2f5.png)


![TerrainSettingWH.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/6c1cabe2-7d58-2cda-cb65-ea22a2824e9f.png)

それでは地形を想定している形に変えて行きましょう。
TerrainのInspectorから筆アイコンの`Paint Terrain`を選択し、ドロップダウンから`Raise or Lower Terrain`を選択します。

![TerrainSetting2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/ff2b9484-4249-07ba-712f-3fec78bae359.png)
![RaiseLowerTerrain.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/ed0031fb-9125-c748-fd67-3069b02e4c86.png)

これで地形編集の準備が完了しました。それでは実際に地形を編集していきましょう。

地形を編集するにはBrushesからブラシを選んで`Brush Size`でブラシの大きさを、`Opacity`でブラシの影響力を設定し、Scene上で地形を隆起させていきます。

操作としては、下のGIFのように左クリックを押すと地形が山となります。逆に谷を作りたい場合は、シフトと左クリックを同時に押すと地形が谷になっていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/def2de08-5427-d33d-d70e-7ff56c28132e.png)

![RD.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/92de82f1-1d80-d4ce-16f3-a7c74ddba25d.gif)

今回はトンネルを開通させるための一つの大きな山を作っていきましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/eadbf330-ad9c-8fe1-8aad-a83089910a89.png)


ここまでで地形の編集は完了です。

### テクスチャの設定

次は地形にテクスチャを塗っていきます。使用するテクスチャは[NatureStarterKit2](https://assetstore.unity.com/packages/3d/environments/nature-starter-kit-2-52977)のテクスチャを使用します。

それでは最初に、ドロップダウンから`Paint Texture`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/df49fad9-f500-773d-5dee-8bff29e35c41.png)

`Edit Terrain Layers > Create Layer`を選択し、テクスチャ選択ウィンドウを開いて緑のテクスチャの`ground01`を適応します。
再度`Edit Terrain Layers > Create Layer`を選択しテクスチャ選択ウィンドウを開いて、次は舗装された道路用に`ground02`を選択してください。
選択が終わったら下の画像のようになっているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/2ddf09ff-4828-63a0-aaf5-685b60356096.png)

最初に設定したテクスチャで一度全体が塗られるため、地形全部が緑色になっています。
そのため、道路を設置する予定の部分を`ground02`で塗りなおしていきます。

塗り方は地形編集で行った方法と同じくブラシを使って塗っていきます。
コツとしては、必要な部分を`Opacity`の値を100で塗ったあと、境界線を`Opacity`を2まで下げて薄く塗っていくとより自然に見えます。

下の画像はテクスチャ塗りの参考例です。1枚目は正面から撮った画像で、二枚目は横から撮った画像です。

![mount1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/b4e7d5f4-872f-328d-6166-d2a328e42976.png)

![mount2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/bbd3171e-ce25-5bdd-2c06-71260b251e8b.png)


## トンネルの作成

それではトンネルを作っていきましょう。

### 穴の作成

まずはトンネルの出入り口の部分に目印の穴をあけていきます。ドロップダウンから`Paint Holes`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/fd013bb6-1ea2-67d2-78d2-633564bdbdc2.png)

こちらも塗り方は地形編集やテクスチャで行った方法と同じく、ブラシを使って塗っていきます。

まずはトンネルの出入り口になる場所に穴をあけていきましょう。後でトンネルの壁部分を設置する際に調整するので、画像のようにある程度の位置さえ分かるようにあければ大丈夫です。

![CreateHole.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/d18a0f4e-f3d1-206c-f805-d1e3c1575a68.png)

### トンネルの壁の作成

今回はトンネルの壁を`ProBuilder`を用いてオブジェクトの作成と編集をしていきます。
Package Managerから`ProBuilder`を選択し、右下の`Install`から導入をしてください。

![probuilder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/f0441415-0366-ddd2-5759-061ff2f3d517.png)

導入が終わると上部のメニューにProBuilder用のボタンが増えているので、下の画像のように`Tools > ProBuilder > ProBuilderWindow`と選択してProBuilder用のWindowを開いてください。

![p.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/1d1f9a91-010b-60dd-66db-e0bedcca0ad1.png)

Window内で`New Shape`を選択し`Shape Tool Window`を開きます。

![probuilderWindow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/e1339777-a307-4814-af2b-4741f850d75d.png)

Shape Tool Windowの`Shape Selecter`でPipeを選び、Shape Settings内の項目は自分が作ろうとしているトンネルの壁の大きさに合わせて調整をしてください。

![shape.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/0e612977-5d28-bc6e-2b5c-df32e4927b4a.png)

それでは作ったトンネルを先程作った穴に合わせて配置してください。
画像のように隙間がある程度できてしまうと思うので、トンネルと合わせて穴の修正を行います。

![トンネル2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/40793e58-c9e1-72ce-5824-4f341fba0293.png)

穴の修正は、先程穴をあけた方法と同じくドロップダウンから`Paint Holes`を選択し、地形編集やテクスチャペイントと同じようにブラシを使って進めてください。

![トンネル3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/b9cbbdad-d481-12b8-267a-4275519dfe35.png)

これでトンネルの完成です。
しかし、トンネルだけでは道路も明かりもなく、味気ないですね。最後に装飾をして終わりにしましょう。

### 道路作成
道路はAsetStoreの[Kajaman's Roads - Free](https://assetstore.unity.com/packages/3d/environments/roadways/kajaman-s-roads-free-52628)
を使用することにしました。このアセット内のMaterialを道路の形にしたCubeオブジェクトに設定し、配置します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/afa21f8b-796d-55ba-aec7-7572eb3a3cbc.png)

次に追加でトンネル内に等間隔でPoint Lightを設置します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/35027e49-b588-ab8b-1794-b82508da74b4.png)

これでいつ車が来ても大丈夫なトンネルが完成しました。
雰囲気に合うように最後に装飾を付けて終わりにしましょう。

## 装飾
最後に装飾として、トンネルの周りに木や草を生やすのと、車を置いていきましょう。

### 木と草を生やす

木や草は以前の記事[[Unity]60分で作るTerrainジオラマ地形](https://qiita.com/KoniroIris/items/e8ccba5aed995322927b)の[草を生やす](https://qiita.com/KoniroIris/items/e8ccba5aed995322927b#%E8%8D%89%E3%82%92%E7%94%9F%E3%82%84%E3%81%99)と[木を生やす](https://qiita.com/KoniroIris/items/e8ccba5aed995322927b#%E6%9C%A8%E3%82%92%E7%94%9F%E3%82%84%E3%81%99)で書いています。こちらを参考にして作成してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/bff662e8-3e44-fcab-3255-113be68f0a64.png)

### 車を設置する

車は[Simple Cars Pack](https://assetstore.unity.com/packages/3d/vehicles/land/simple-cars-pack-97669)を使用します。
アセット内のPrefabを作成した道路に沿って配置していきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/3243949e-751c-093a-799f-a4564ed1f77d.png)

装飾が終わり、下の画像のようなトンネルが作成できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393006/b16c1040-7f02-e97d-2369-b4f8a510ad3e.png)

以上でTerrainでトンネルを作る解説を終わります。


## まとめ
Unity2019.3で追加されたTerrainのトンネル作成方法について紹介しました。
以前に紹介したTerrainの記事[[Unity]60分で作るTerrainジオラマ地形](https://qiita.com/KoniroIris/items/e8ccba5aed995322927b)と合わせて、地形生成の最初の一歩を踏み出せたら幸いです。

明日は@kanasaki_kenjiさんの「リソース管理効率化の話」です。