ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity - Terrain 機能の基本的な使い方①

初めに

 Unity では、Terrain 機能を使うことで、地形や草、木、岩などのゲームオブジェクトを効率的に作成することができます。本記事では、Terrain 機能を使って、地形を作成、編集する方法をまとめます。

Terrain の作成と編集

Terrain オブジェクトの作成

 Hierarchy で右クリック > 3D Object > Terrain をクリックすることで、Terrain オブジェクトを作成できます。

 Terrain オブジェクトには、Transform コンポーネントのほかに、Terrain コンポーネント、Terrain Collider コンポーネントがアタッチされています。

Terrain の編集の概要

 Terrain コンポーネントを使って、編集をしていきます。

 次の編集ツールを使うことができます。

ツール 説明
Create Neighbor Terrains 隣接する Terrain タイルを作成する
Paint Terrain Terrain をスカルプトしてペイントする
Paint Trees 木を追加する
Paint Details 草、花、岩などのディテールを加える
Terrain Settings 選択した Terrain の一般設定を変更する

※スカルプト:現実世界における粘土造形のように、自分の手で自由な形に造形すること

サンプルアセットのダウンロード

 ゼロから作ることも可能ですが、本記事では Unity Technologies が出している「Terrain Sample Asset Pack」というアセットを使っていきます。

assetstore.unity.com

 Asset Store から Unity に入れ、Package Manager からダウンロード、インポートしてください。

 Asset Store の使い方については、過去の記事を参考にしてください。
fineworks-fine.hatenablog.com

Create Neighbor Terrains:隣接する Terrain タイルを作成する

 Create Neighbor Terrains ツールを使うと、自動的に隣接する Terrain (地形) タイルを簡単に作成できます。

 Fill Heightmap Using Neighbors を有効にすると新しい Terrain タイルのハイトマップを隣接する Terrain タイルのハイトマップをもとに調整して塗りつぶします。

Paint Terrain の共通プロパティ

 Paint Terrain では6つの機能を使うことができます。

機能 説明
Raise or Lower Terrain 高さを変更する
Paint Holes Terrain の一部を非表示にする
Paint Texture Texture を貼る
Set height エリアの高さを特定の値に調整する
Smooth Height Height マップを滑らかにする
Stamp Terrain 地形ブラシのスタンプを使う

 どの機能でも共通のプロパティは次の2つです。

プロパティ 説明
Brush Size ブラシの大きさ
Opacity(不透明度) ブラシを Terrain に適用するときの強さ

 Opacity(不透明度)は、ブラシを Terrain に適用するときの強さを決定します。Opacity の値を 100 に設定すると、ブラシの強度が最大になり、値が 50 の場合にはブラシの強度が 1/2 になります。

Paint Terrain:Stamp Terrain を使って、地形の概形を作る

 Paint Terrain を選択し、地形を編集していきます。はじめは、Stamp Terrain を選び、地形のブラシを使って、地形を作成していきます。

 Stamp Height で地形の高さ、Brush Size でブラシのサイズを選択し、Scene ビューで地形をクリックすることで、地形を編集できます。


Paint Terrain:Paint Texture を使って、Texture を貼る

 Paint Texture を使って、地形に Texture を貼ってみます。Terrain Layer を使い、Texture を貼っていくことになります。Edit Terrain Layers をクリックすると、Create Layer か Add Layer を選択できます。今回は、Create Layer で新規作成せず、「Terrain Sample Asset Pack」アセットにある Terrain Layer を使用するために、Add Layer をクリックします。

 Grass_A_Terrain Layer を選択すると、下の画像のように Texture を貼ることができたと思います。

 他の Terrain Layer を追加し、ブラシを使って複数の Texture を貼ることができます。Scene ビューでクリックまたはドラッグをすることで塗ることができます。


Paint Terrain:Paint Holes を使って Terrain の一部を非表示にする

 Paint Holes ツールを使用して、Terrain (地形) の一部を非表示にします。洞窟や断崖などの地形のために Terrain の開口部をペイントすることができます。

 ブラシを選択し、Scene ビューで編集できます。

(非表示の解除方法)
 Paint Holes で非表示に下部分を解除するには、Shift キーを押した状態でブラシで塗ると、その部分の非表示が解除されます。

Paint Terrain:Raise or Lower Terrain を使って高さを変更する

 Raise or Lower Terrain ツールを使用すると、Terrain タイルの高さを変更できます。

 Scene ビューで、クリックアンドドラッグして高さを上げます。Shift キーを押しながらクリックアンドドラッグすると、Terrain の高さを下げます。


Paint Terrain:Set Height を使ってエリアの高さを特定の値に調整する

 Set Height を使うと、高さを特定の高さに合わせることができます。

 Space では、World と Local を選択できます。

World World 座標を Height の値に合わせる
Local Local 座標を Height の値に合わせる

Paint Terrain:Smooth Height を使い、滑らかにする
使用前 使用後

 Blur Direction の値を調整して、どの領域をなだらかにするかを制御します。

Blur Direction の値 説明
–1 Terrain (地形) の外側の (凸状の) エッジをなだらかにする
0 Terrain (地形) のすべての部分を均等にスムージングする
1 Terrain (地形)の内側の(凹状の) エッジをなだらかにする

補足

 2D プロジェクトで Terrain を作成すると、うまく Game ビューに表示されませんでした。おそらく、なにかパッケージを入れ損ねているだけだと思いますが、2D プロジェクトで Terrain 機能を使うことはあまりないと思いますので、初めから3D プロジェクトを使うことをおすすめします。

今後の展望

 本記事では、Paint Terrain のことをまとめました。Paint Trees や Paint Details などは別の記事でまとめますので、そちらをご覧ください。