Unityでゲームなどを制作するにあたって、土台となる地形の生成は欠かせません。

でも広大な土地をゼロから作っていくのは大変…

そんなときに便利なのが「Terrain(テレイン)」機能です。

Terrainを使えば、手軽にフィールドを作り上げることができますよ。

ただし、慣れるまでは設定が難しかったり、見栄えが良くなかったり…と思うようにいかないことがあると思います。

そこで本記事では、Unityの標準機能であるTerrainについて解説します。

Unityについて詳しく知りたいという方は、弊社の過去記事をご覧ください。

Unityとは?特徴や作品事例、価格など徹底解説!
Unityとは?特徴や作品事例、価格など徹底解説!

|Terrainとは

出典:https://docs.unity3d.com/ja/2021.1/Manual/terrain-UsingTerrains.html

Terrainとは、地形をモデリングすることに特化したUnityの機能です。

Terrainを生成すると、まず1枚のまっさらな地面が現れます。

そこに、凹凸をつけて山や川となる部分を作ったり草木を生やしたりして、ペイント感覚で地形を作っていきます。

このように、Terrainはマウスひとつでフィールド作成ができる非常に便利な機能です。

また、Terrainのレンダリングは高度に最適化されているため、大量のオブジェクトを個別に配置するよりも、Terrainを用いて配置する方がパフォーマンスは良好となります。

Terrainを利用すれば、広大な地形でも短時間で制作することが可能です。

|Terrainの使い方

さて、Terrainがどういったものであるかお話したところで、ここからはTerrainの基本的な使い方について説明していきます。

0.事前準備

Terrainを作成する前に、まずTerrainに割り当てるためのテクスチャを準備しましょう。

テクスチャは、Unity Aseet Storeなどから入手することができます。

無料のものも多数あるので、「Terrain Texture」や「Terrain asset」といったキーワードからイメージに合うテクスチャを探してみてください。

色々ありすぎてわからない…という方は、Unity Asset Storeで無料入手できるUnity公式の『Terrain Sample Asset Pack』をインポートしておけばまず間違いありません。

こちらのアセットにはTerrain用のブラシやテクスチャなどが含まれているので非常に便利ですよ。

1.Terrainを作成する

さて、テクスチャの準備が完了したところで、Terrainを作成しましょう。

画面上部のメニューバーからGameObjectをクリックあるいはHierarchy内で右クリックし、3D Object>Terrainを選択します。

すると、Scene内に1枚の板が表示されます。これがTerrainです。

Terrainのサイズは、InspectorのTerrainコンポーネント内にある5つの項目の1番右「Terrain Settings」を選択し、Mesh Resolution中のTerrain WidthおよびTerrain Lengthの値を変更することで調整できます。

TransformコンポーネントのScaleをいじるのではないので、気を付けてくださいね。

2.地形を作成する

続いて、地形を作成しましょう。

Terrainコンポーネント内の5項目の左から2番目「Paint Terrain」を選択します。

プルダウンメニューから「Raise or Lower Terrain」モードを選び、Scene内のTerrain上で左クリックすると、地面を隆起させられます。

また、Shiftキー+左クリックで盛り上がった部分を低くできます。

BrushesやBrush Sizeではブラシの種類や大きさを、Opacityでは隆起の程度(0~100)を指定できます。

さらに、「Set Height」モードでは指定した高さまで隆起させることができ、「Smooth Height」モードでは起伏を滑らかにすることができます。

3.テクスチャを設定する

いくら凹凸をつけても、真っ白では面白くないですよね。

そこで、作成した地形にテクスチャを貼り付けていきましょう。

まず、Paint Terrainより「Paint Texture」モードを選択します。

次に、「Terrain Layers」の「Edit Terrain Layers…」より「Create Layers…」を選択し、適当なテクスチャを追加します。

最初に選択したテクスチャは、Terrain全体に反映されます。

同様の手順でテクスチャを追加し、Terrainに塗ることで草原や土、岩肌などを表現することができます。

4.オブジェクトを配置する

ここまでの手順で、作りたいフィールドの土台となる部分ができました。

ここからは、木や石などのオブジェクトを配置して、理想のフィールドになるよう肉付けしていきましょう。

Terrainコンポーネントの5項目の真ん中「Paint Trees」を選択します。

「Trees」の「Edit Trees…」より「Add Tree」をクリックすると、Add Treeというウインドウが表示されるので、Tree Prefab欄の右端にある◎を押します。

すると、Select GameObjectウインドウが表示されるため、任意の木のオブジェクトのPrefabを選びます。

これで、「Trees」に選択した木が追加されていれば準備は完了です。

Sceneにカーソルを持っていき左クリックすると、木を生やせます。

Tree Densityは最低値にしておくと、思い通りに生やしやすくおすすめです。

草花、石

Terrainコンポーネント内の5項目の右から2番目「Paint Details」を選択します。

「Details」の「Edit Details…」より「Add Grass Texture」をクリックします。

すると、Add Grass Textureというウインドウが表示されます。

以降は、木の場合と同様の手順で行うことで、草花や石を配置することができます。

この手順で生やした草は、デフォルト状態ではゆらゆらと揺れています。

川を作る際には、水面として使用したいMaterialをUnity Asset Sotreなどから入手しておき、地底の底上げを行う必要があります。

地底を底上げするには、Paint TerrainのSet HeightモードでHeightに任意の値を入力し、「Flatten」をクリックします。

そして、Raise or Lower Terrainモードに切り替えてShiftキー+左クリックしながらドラッグをし、好みの形にくぼみを作ります。

続いて、Hierarchy内で右クリックし、3D Object>Planeから生成したPlaneを選択した状態で、任意の水面用MaterialをInspectorにドラッグ&ドロップすると、PlaneのMaterialが変更され水面が出来上がります。

最後に、作成したワールドに動きを付けましょう。

Hierarchy内で右クリックし、3D Object>Wild Zoneを選択し、InspectorよりWild Zoneの詳細設定を変更します。

Wild Zoneについては、以下が変更できます。

・Mode:風が吹く範囲を指定でき、DirectionalはScene全体、Sphericalは指定した範囲に影響する。

・Main:全体的な風の強さを指定する。

・Turbulence:Mainで指定した強さにランダムな変化を加える。

・Pulse Magnitude/Frequency:揺れの大きさや頻度を調整し、脈打つ風を表現する。

|Terrainの注意点

Terrainはとても便利な機能ですが、使用する際には以下の3点に注意する必要があります。

①地形が複雑だと重くなりやすい

Terrainを使うと簡単に地形を作成できますが、入り組んだ地形を作ったり大量のオブジェクトを配置したりすると、データが大きくなり処理が遅くなることがあります。

②裏面には当たり判定がない

Terrainの裏面には当たり判定がないため、裏からだと物体がすり抜けてしまいます。

③洞窟やトンネルは作れない

TerrainはHeight Mapを使用しているため、横向きに穴を開けるなどの操作はできません。

トンネルなどを作りたい場合は、アセットの使用を検討する必要があります。

|まとめ

今回は、Terrainの基本的な使い方と使用上の注意について解説しました。

いかがでしたか?

Terrainを上手に使えば、数時間でリアルなフィールドを作ることが可能です。

Terrainを使いこなすためには、まずご自分の手で設定をいじりながら色々と触ってもらうのが1番だと思います。

今回の記事を通じてTerrain機能を使いたいと思ってくれた方は、様々なアセットも試しながらぜひご自分の理想のフィールドを作ってみてくださいね。