今回はUnityのTerrainを使って地形にペイント(色を塗る)をしてみます。

地形の造形を作ったりしてきましたが、草原や土の色を塗る事でゲームなどでも活用できる地形が完成します。ここまで来ればゲームの素材としても使える様なものになるかもしれません。

では実際にTerrainの地形に木の色や土の色などを塗ってみましょう!

Unityの基本操作についてはこちらを参考にして下さい。

Terrainでペイントする(色を塗る)

ではTerrainゲームオブジェクトの地形上にペイントをしてみましょう。

地形にペイントできる様になると一気に雰囲気が変わります。

ペイントの準備&一つ目のTexture読み込み

まずは以下の様なペイントされていない地形を準備します。

■地形を準備

Terrainコンポーネントの「 PaintTerrainアイコン > Paint Texture 」を選択します。

■「Paint Texture」を選択

選択後、Terrain Layersの「Edit Terrain Layers… > Create Layer」を選択します。

■「Edit Terrain Layers…」ボタンを押下

■「Create Layer」を選択

「Select Texture2D」ウィンドウが開きますので、対象にしたい素材をクリックします。
※ここでは本来Tree素材で使用するはずのTextureをそのまま使いまわして素材を選択します。実際は地表などのTextureを使用するのが良いはずです。

■対象にしたい素材をクリック

木のTextureを選択した所、Terrainの地形の色が全て木のTexture色(緑色)に変更になりました。ペイントで好きな個所だけ色を塗りたかったのですが。。。最初に選択したTextureを基に全体に適用される様です。
※一度Textureを選択した後、部分的に色を塗る方法があるのかもしれませんが、ここではこのまま進めていきます。

■地形が選択したTexture色(緑色)に変更になる

自分で操作してペイントしてみる

自分で操作してペイントするために、さらにもう一つのTextureを選択してみます。

ここでは切り株の断面の様なTextureを選択してみます。このTextureを土の色として使用する事にします。

■切り株の断面の様なTextureを選択

「Terrain Layers」に2つめのTextureが読み込まれました。

■2つめのTextureが読み込まれる

2つめに読み込んだTextureを選択してみます。

■2つめに読み込んだTextureを選択

切り株の断面の様なTextureでペイントをしてみます。

左クリック&ドラッグでTerrain地形上にペイントする事が可能になります。

■選択したTextureでペイントしてみる

山は緑色、平地は茶色(実際は切り株の色)で塗り分けてみました。

■山と平地

さらに、TreePaintを使用して、そこに森も作ってみました。

■山に森を作成する

ペイントを削除する

ついでに、設定したペイントを削除する方法も覚えておきましょう。

大体は想像が付くかもしれませんが。Terrainで作成した以下の様な地形を使います(先ほど作成した地形から山や木を取り除いたもの)

■Terrainの地形(緑と茶色のTextureが設定されている)

この時、Terrain Layersを確認すると以下の様になっています。

緑と茶色の元になるTextureが確認できます。

削除したいTexture(ここでは木のTexture)を選択して、「Edit Terrain Layers… > Remove Layer」を選択します。

■Terrain Layersで「Edit Terrain Layers…」を選択

■Remove Layerを選択

木のTextureが削除されて、茶色のTextureだけが残りました。

■茶色のTextureだけが残る

使用しているTextureが一つだけの場合は、そのTextureが全体に適用される用ですね。

Terrainの地形に自分で色を設定してみる

自分作成した色をTerrainゲームオブジェクト上の地形に適用したい場合も、手順は簡単です。

まずは自前のTextureを作成します。ここでは青と赤だけのTextureを用意しています。

青と赤のTextureをUnityのProjectウインドウに取り込みます。
※Unity内で素材を使える状態にする

■UnityにTextureを取り込む

すでに紹介していますが、以下の手順で作成したTextureをTerrainで使用できる様にします。

  • Terrainコンポーネントで「 PaintTerrainアイコン > Paint Texture 」を選択
  • Terrain Layersの「Edit Terrain Layers… > Create Layer」を選択

■「 PaintTerrainアイコン > Paint Texture > Edit Terrain Layers… > Create Layer 」を選択

■「Create Layer」を選択

次に「Select Texture2D」ウィンドウで、作成した青と赤のTextureを選択します。

■青と赤のTextureを選択

以下はPaint Textureを適用前のTerrainゲームオブジェクトの地形になります。

この地形に対して、上記の手順を行うと、地形に色が設定されます。

■Paint Textureを適用前

Select Texture2Dウィンドウで青のTextureを読み込みます。

■Terrain Layersに青のTextureが読み込まれる

以下の様にTerrainゲームオブジェクトの地形に青のTextureが設定された事が分かります。
※こんな地形の色はありえないですが

■青のTextureが設定される

さらに、Select Texture2Dウィンドウで赤のTextureも読み込みます。

■Terrain Layersに赤のTextureも読み込まれる

Terrainゲームオブジェクトの地形をペイントしてみると、青地に赤の色が塗られている事が分かります。

■青地に赤の色が塗られる

ちなみに、特に意識しなくても良いですが、Projectウインドウを見てみると、「NewLayer1」「NewLayer2」といったファイルが作成されています。

基本的に一度Textureとして読み込むとLayerという名称の付いたファイルが作成される様です。

■「NewLayer1」「NewLayer2」も作成される

Unity公式ページの「TerrainLayer」の項も参考にすると理解が深まると思います。

※URL:https://docs.unity3d.com/ja/2018.4/Manual/class-TerrainLayer.html

おまけ(キャラクターを操作して地形の上を歩いてみる)

実際に地形を作成したら、キャラクターを操作して歩いてみたいと思いますよね。

ただ、地形を作成するだけでは面白くありません。

Terrainで自分が作った地形の上を歩ける様になって初めてゲームを作っているという実感が沸きます。

まずはキャラクターを準備しましょう。Unity公式のStandard Assetsの中にある「ThirdPersonCharacter」を使用してみます。

Unity2019でStandard Assetsが使用できない場合

Unity2019以降だと正常に動作しない事がある様です!

その場合は以下の対応を行うと「ThirdPersonCharacter」が使える様になるかもしれません。

Assets > Standard Assets > Utilityを選択

以下のファイルを削除

  • ForcedReset.cs
  • SimpleActivatorMenu.cs

本来は必要となるはずのファイルを削除しているので、他機能の動作で何かしら影響が出てしまう可能性がありますが、とりあえず「ThirdPersonCharacter」は使えると思います。

■ThirdPersonCharacter

これをTerrainゲームオブジェクト地形上に配置してみます。

■地形上に配置(かなり小さいですが真ん中に配置しています。)

TerrainにもThirdPersonCharacterにも予めコライダーが設定されているので、これだけで基本的な操作はできるはずです。

Unityエディターで実行ボタンを押して、ThirdPersonCharacterを操作してみます。

そうすると地形上を歩くことができます。

■地形上を歩くことができる(画像がちょっと荒いですが。。。)

実際にキャラクターを配置したり、動かしたりしてみると、Terrainの地形がいかに大きいかが分かると思います。

Terrainのサイズ変更などをして、必要なサイズの地形を作ってみましょう。

まとめ

今回はTerrainで作成した地形にペイント(色を塗る)をしてみました。

少しおさらいをします。

記事のおさらい

  • Terrainで作成した地形を用意
  • Paint Textureで1つ目のTextureを読み込むと全体に適用される
  • 2つ目以降のTextureを読み込むと自分で操作してペイント可能
  • Remove LayerでTextureを削除できる
  • 自分で作成したTexture(青と赤)を使ってペイントもしてみた

自分でTextureを用意してペイントできる様になると、作成できる地形が無限に増えます。

これで3Dのフィールドも自在に作成できる様になると思います!