UnityのツールTerrainで作ったフィールドに草や木を生やす

前回Terrainを使ってゲーム用のフィールドを作成したので、今回はそこに草や木を生やしてみます。

まずは草をAsset Storeからダウンロードしてきます。

3Dモデル→植物→草木→Yughues Free Bushes

これを草のテクスチャとして指定します。

草のブラシを選択する


草のマークをクリックし、Edit Details→Add Grass Textureをクリックする。

草のテクスチャを設定する

Detail Textureの右のマークをクリックしインポートしてきた草のテクスチャを指定します。
検索窓にbushと入れると探しやすいです。

テクスチャの設定が終わったら地面を盛り上げた時と同じように筆のサイズ等を変更し地面に塗ります。
草の幅と高さを最小と最大で設定しNoise Spreadで変化の度合いを指定します。

ブラシのサイズを調整する

ブラシサイズ等を調整し地面に塗っていきます。
地面と草のテクスチャの色が近い場合は実際に塗られてるのかどうか分かりづらいです。
塗り終わったら実行ボタンを押して確認してみます。

キャラクターをフィールドの中ほどに移動する

「masasi」君がfieldから外れた状態から始まるといけないので上のように少し中ほどに移動しておきます。

草のテクスチャが貼られる

実行すると上のように草が表示されているのが確認出来ます。
実際のプレイ画面では草が揺れているのも確認出来るかと思います。

地面の枠を作ってキャラクターが枠外へ行かないようにしていなかったので、地面の端に行くと「masasi」君はどんどん何もない空間に落ちていきます。

普通であれば枠を盛り上げキャラクターが登れない角度にして到達出来ないエリアとしておかなければいけません。
または透明な通れない壁を作っておくといった方法もあります。
とりあえずこれはサンプルなので無視していきます・・・・。

スポンサーリンク

フィールドに木を生やす

次は木を生やしてみます。

Asset Storeから

3Dモデル→植物→木→Forester Pro Sycamore

をインポートしました。
草の時と同じように草のアイコンのとなりの木を選択し、Edit Tree→Add Treeを選択します。

気のオブジェクトを設定する

木のプレハブを選択したら、Treesから生やす木を選択します。すると下にパラメータが表示されます。

Brush Sizeで生やす範囲、Tree Densityで木の密度を調整出来ます。
Brush Sizeを1にすると1本ずつ生やす事が出来ます。

Tree Heightを左右に伸ばせるバーを動かして、高さが違う木のバリエーションを増やせます。
TreeWidthも変更出来ますが、チェックボックスで高さを合わせる事も出来ます。

ある一定の範囲毎に木を生やしたい場合はこれでOKですが、とりあえずTerrain全体に木を生やしたい場合は、

Terrain全体に気を生やす設定をする

上のようにMass Place Treesをクリックします。

木を何本生やすか設定をする

Number Of Treesで何本生やすかの数を指定します。

今回はとりあえず100本生やしてみます。
Keep Existing Treesのチェックを入れておくとすでに生やした木に追加する形で増やせます。

チェックを外すとまっさらな状態に生やす感じになります。
あまり木を生やし過ぎると動作が重くなってしまいます。(特に古い機種のパソコン)

それではUnityの実行ボタンを押して木がちゃんと生えているか確認してみます。

キャラクターが木にめり込んでしまう

↑のように実行されました。
木はちゃんと生えているんですが、「masasi」君が木をすり抜けていきます・・・・(+_+)

この原因は木にコライダ(当たり判定の機能)が設定されていない為です。
せっかく木を生やしたのに100本も無駄になりました・・・。

というわけで木にコライダを設定します。

木にコライダを設定しキャラクターがすり抜けないようにする

選択していた木を見つけます。今回は「sycamore」なのでProjectsタブのAssetsエリアの検索窓に「sycamore」と入力するとすぐに見つかります。

コライダを設定する木のプレハブを探す

見つかったらその木を一旦ヒエラルキー上にドラッグ&ドロップし、インスペクタから

Add Component→Physics→Capsule Colider

とします。

木のコライダに設定する値

調整値を上のようにすると

木にコライダが設定される

このようにコライダ(当たり判定範囲)を設定出来ました。

出来上がったらヒエラルキーにある木を今度はProjectウインドウのAssetsエリアにドラッグ&ドロップします。
それがプレハブ(木を量産する時の元となるオブジェクト)としてAssetsエリアに保存されます。シーン上に配置した木のインスタンス(元のオブジェクトから作成した量産品)はいらないので削除します。

Assetsエリアのプレハブを間違って削除しないよう気を付けてください。

コライダを設定した木をプレハブにする

上のようにAssetsエリアにコライダを持つ木のプレハブが出来ました。それではTerrainの「field」を選択し、木のアイコンを選択してください。

Edit Trees→Edit Treeを選択しTree Prefabの所に今作った木のプレハブを指定します。

Terrainで生やす木を設定する

そうすると先ほど地面に生やした木がコライダを設定した木に変更されます。
生やした木が無駄になりませんでした・・・(^。^)
さっそくUnityの実行ボタンを押して確認してみましょう。

キャラクターが木にめり込まなくなった

今度は「masasi」君が木にめり込むことはなくなりました!
これでゲームのフィールドに草や木を生やす事が出来るようになりました。

わたしのように古いパソコンですと、草や木を生やしすぎると処理が重くなるので、密林を作るのはやめたほうがいいかもしれません。(リアルタイムシャドウの影響だと思いますが)

Terrainに生やした草が風でなびく為の設定

草が風になびくようにする

Terrainで生やした草はTerrainの設定で風になびかせる事が出来ます。
Speedは風のスピード、Sizeは風の波のサイズ、Bendingはしなる角度です。
それぞれ0~1の間の数値を指定します。

木をなびかせるにはWind Zoneというコンポーネントを追加する事で実現出来ます。

Unityで木が風になびく機能を追加する
Unityに設置した木が風で揺れるようにします
を参照してください。

終わりに

だんだんゲームっぽくなってきましたが、主人公「masasi」君のみ存在する世界なので、次回は敵キャラクターを登場させようかと思います。

あとはいらなくなったシーン上に配置しているオブジェクトは整理していかないとなぁ・・・・・ブツブツ