今回はUnityのTerrainを使って地形にペイント(色を塗る)をしてみます。
地形の造形を作ったりしてきましたが、草原や土の色を塗る事でゲームなどでも活用できる地形が完成します。ここまで来ればゲームの素材としても使える様なものになるかもしれません。
では実際にTerrainの地形に木の色や土の色などを塗ってみましょう!
Unityの基本操作についてはこちらを参考にして下さい。
UnityのTerrainの基本的な使い方を紹介していきます。 Unityに標準で装備されているTerrainは、ゲーム等で活用するための地形(3Dフィールドマップ)を簡単に作成するためのツールです。本来は3Dのマップを …
コンテンツ
Terrainでペイントする(色を塗る)
ではTerrainゲームオブジェクトの地形上にペイントをしてみましょう。
地形にペイントできる様になると一気に雰囲気が変わります。
ペイントの準備&一つ目のTexture読み込み
まずは以下の様なペイントされていない地形を準備します。
Terrainコンポーネントの「 PaintTerrainアイコン > Paint Texture 」を選択します。
選択後、Terrain Layersの「Edit Terrain Layers… > Create Layer」を選択します。
「Select Texture2D」ウィンドウが開きますので、対象にしたい素材をクリックします。
※ここでは本来Tree素材で使用するはずのTextureをそのまま使いまわして素材を選択します。実際は地表などのTextureを使用するのが良いはずです。
木のTextureを選択した所、Terrainの地形の色が全て木のTexture色(緑色)に変更になりました。ペイントで好きな個所だけ色を塗りたかったのですが。。。最初に選択したTextureを基に全体に適用される様です。
※一度Textureを選択した後、部分的に色を塗る方法があるのかもしれませんが、ここではこのまま進めていきます。
自分で操作してペイントしてみる
自分で操作してペイントするために、さらにもう一つのTextureを選択してみます。
ここでは切り株の断面の様なTextureを選択してみます。このTextureを土の色として使用する事にします。
「Terrain Layers」に2つめのTextureが読み込まれました。
2つめに読み込んだTextureを選択してみます。
切り株の断面の様なTextureでペイントをしてみます。
左クリック&ドラッグでTerrain地形上にペイントする事が可能になります。
山は緑色、平地は茶色(実際は切り株の色)で塗り分けてみました。
さらに、TreePaintを使用して、そこに森も作ってみました。
ペイントを削除する
ついでに、設定したペイントを削除する方法も覚えておきましょう。
大体は想像が付くかもしれませんが。Terrainで作成した以下の様な地形を使います(先ほど作成した地形から山や木を取り除いたもの)
■Terrainの地形(緑と茶色のTextureが設定されている)
この時、Terrain Layersを確認すると以下の様になっています。
緑と茶色の元になるTextureが確認できます。
削除したいTexture(ここでは木のTexture)を選択して、「Edit Terrain Layers… > Remove Layer」を選択します。
■Terrain Layersで「Edit Terrain Layers…」を選択
木のTextureが削除されて、茶色のTextureだけが残りました。
使用しているTextureが一つだけの場合は、そのTextureが全体に適用される用ですね。
Terrainの地形に自分で色を設定してみる
自分作成した色をTerrainゲームオブジェクト上の地形に適用したい場合も、手順は簡単です。
まずは自前のTextureを作成します。ここでは青と赤だけのTextureを用意しています。
青と赤のTextureをUnityのProjectウインドウに取り込みます。
※Unity内で素材を使える状態にする
すでに紹介していますが、以下の手順で作成したTextureをTerrainで使用できる様にします。
- Terrainコンポーネントで「 PaintTerrainアイコン > Paint Texture 」を選択
- Terrain Layersの「Edit Terrain Layers… > Create Layer」を選択
■「 PaintTerrainアイコン > Paint Texture > Edit Terrain Layers… > Create Layer 」を選択
次に「Select Texture2D」ウィンドウで、作成した青と赤のTextureを選択します。
以下はPaint Textureを適用前のTerrainゲームオブジェクトの地形になります。
この地形に対して、上記の手順を行うと、地形に色が設定されます。
Select Texture2Dウィンドウで青のTextureを読み込みます。
■Terrain Layersに青のTextureが読み込まれる
以下の様にTerrainゲームオブジェクトの地形に青のTextureが設定された事が分かります。
※こんな地形の色はありえないですが
さらに、Select Texture2Dウィンドウで赤のTextureも読み込みます。
■Terrain Layersに赤のTextureも読み込まれる
Terrainゲームオブジェクトの地形をペイントしてみると、青地に赤の色が塗られている事が分かります。
ちなみに、特に意識しなくても良いですが、Projectウインドウを見てみると、「NewLayer1」「NewLayer2」といったファイルが作成されています。
基本的に一度Textureとして読み込むとLayerという名称の付いたファイルが作成される様です。
Unity公式ページの「TerrainLayer」の項も参考にすると理解が深まると思います。
※URL:https://docs.unity3d.com/ja/2018.4/Manual/class-TerrainLayer.html
おまけ(キャラクターを操作して地形の上を歩いてみる)
実際に地形を作成したら、キャラクターを操作して歩いてみたいと思いますよね。
ただ、地形を作成するだけでは面白くありません。
Terrainで自分が作った地形の上を歩ける様になって初めてゲームを作っているという実感が沸きます。
まずはキャラクターを準備しましょう。Unity公式のStandard Assetsの中にある「ThirdPersonCharacter」を使用してみます。
Unity2019以降だと正常に動作しない事がある様です!
その場合は以下の対応を行うと「ThirdPersonCharacter」が使える様になるかもしれません。
Assets > Standard Assets > Utilityを選択
以下のファイルを削除
- ForcedReset.cs
- SimpleActivatorMenu.cs
本来は必要となるはずのファイルを削除しているので、他機能の動作で何かしら影響が出てしまう可能性がありますが、とりあえず「ThirdPersonCharacter」は使えると思います。
これをTerrainゲームオブジェクト地形上に配置してみます。
■地形上に配置(かなり小さいですが真ん中に配置しています。)
TerrainにもThirdPersonCharacterにも予めコライダーが設定されているので、これだけで基本的な操作はできるはずです。
Unityエディターで実行ボタンを押して、ThirdPersonCharacterを操作してみます。
そうすると地形上を歩くことができます。
■地形上を歩くことができる(画像がちょっと荒いですが。。。)
実際にキャラクターを配置したり、動かしたりしてみると、Terrainの地形がいかに大きいかが分かると思います。
Terrainのサイズ変更などをして、必要なサイズの地形を作ってみましょう。
まとめ
今回はTerrainで作成した地形にペイント(色を塗る)をしてみました。
少しおさらいをします。
- Terrainで作成した地形を用意
- Paint Textureで1つ目のTextureを読み込むと全体に適用される
- 2つ目以降のTextureを読み込むと自分で操作してペイント可能
- Remove LayerでTextureを削除できる
- 自分で作成したTexture(青と赤)を使ってペイントもしてみた
自分でTextureを用意してペイントできる様になると、作成できる地形が無限に増えます。
これで3Dのフィールドも自在に作成できる様になると思います!