1. HOME
  2. ブログ
  3. IT技術
  4. 【Unity】オブジェクトからTerrainの地形データを自動生成する

【Unity】オブジェクトからTerrainの地形データを自動生成する

Unity(ユニティ)でのマップ生成は大変!

ロールプレイングゲームやアクションゲームを作成する中で、最も大変な作業といっても過言ではないのが「マップ生成」です。

Unity では、マップ・地形を生成する際に「Terrain」という機能を使用します。

GUI(グラフィカル・ユーザ・インターフェース)で非常に使いやすい機能です。

しかし、直感的に使える反面、広大なマップを作ろうとすると、膨大な労力がかかってしまいます。

だからと言って、他のソフトで作成した地形を取り込んでも、Unity 上で草木や花などのアセットを敷くことは出来ません。

その対処法として、今回は、3D オブジェクトとして取り込んだデータから、Terrain の地形データを自動生成する方法を紹介したいと思います!

UnityEditor に Terrain 生成機能を付与する!

今回は、ゲームビューを起動すると Terrain が完成するのではなく、Editor 機能として、オブジェクトから Terrain を作成できるようにします

ソースコードを入れるフォルダを用意する

新しく「Editor」という名前のフォルダを、「Assets」フォルダの直下に用意します。

ここで作成した「Editor」フォルダにスクリプトを入れないと、ビルドや書き出しの際に、エラーが出てしまう可能性があります。

※注意※
「Editor」フォルダ以外の場所でも問題ありませんが、ビルドするときは、Unity のプロジェクトの外にバックアップを取り、削除するようにしてください。

ソースコードをフォルダに配置する

先ほど用意した「Editor」フォルダに、ソースコードを配置します。

そして、右クリックから「Create」→「C#Script」を選択し、名前は「Object2Terrain」にしてみましょう。

ソースコード

ソースコードは以下の通りです。

動作を確認する

下の画像のように、Editor の機能部分に、新しく「Terrain」というボタンが出来ていれば、成功です!

Terrain ウィンドウから、「Objetct to Terrain」を選択してください。

すると、以下のようなウィンドウが表示されます。

このウィンドウが出ている状態で、Terrain のもととなるオブジェクト選択します。

オブジェクトを選択したら、「Create Terrain」を押してください。

生成した結果

すると…

できました!!

今回は、タンスと同じ形の Terrain を生成しています。

これで、草木をはやしたり、花を咲かせることが可能となりました。

Terrain を生成する上での注意点

この機能を使う上で、いくつか注意点があります。

1つのメッシュを持つオブジェクトに適用させる!

2つ以上のオブジェクトが親子構造になっていて、それぞれにメッシュがついている場合は使用できません。

親子構造であっても、アセットに よくある形の一つのメッシュが親についていて、パーツごとに子がついている場合は問題ありません。

完成した Terrain はプレハブ化できない!

完成した Terrain をプロジェクトビューにドラッグ&ドロップしても、正しくプレハブが生成されません。

これは、「.meta」ファイルに対応した「.assets」ファイルが生成されないことが原因です。

また、元となったオブジェクトのメッシュファイルは削除しないようにしてください。

使いすぎるとプロジェクトの容量が大きくなる!

何度も試行錯誤を繰り返すと、どんどんプロジェクトの容量が大きくなっていきます。

これは、毎回「Resources」フォルダに一時ファイルが生成されることが原因です。

最終的に使うもの以外は、削除してください。

頂点の数が大きすぎると Terrain が生成されない!

パソコンの性能にもよりますが、2000がボーダーラインです。

あらかじめ、blender などで分割しておきましょう。

さいごに

今回は、オブジェクトから Terrain を自動生成する方法を紹介しました。

最も大変な作業といっても過言ではない「マップ生成」。

今回紹介した方法で、少しでも負担が軽くなればと思います。

ぜひ、今回紹介した「オブジェクトから Terrain の地形データを自動生成する」方法を試してみてください!

こちらの記事もオススメ!

書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア