この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-06-11 07:07:02

タイトル: 地形
SEOタイトル: Unity Terrain (地形) 完全ガイド

この記事の要点
  • Unity の Terrain は山・谷・平原をブラシで彫れる地形システム
  • Hierarchy → 3D Object → Terrain で 1000m × 1000m の平地を生成
  • Raise/Lower / Set Height / Smooth / Stamp / Paint Texture の 5 大ツール
  • TreeDetail (草) で植生を描画
  • Resolution / Heightmap を上げすぎると重い → 軽量化必須

Unity Terrain とは

Unity の Terrain はゲーム内の地形 (山・丘・平原・河川) をブラシで描く専用システムです。Hierarchy → 3D Object → Terrain で 1000m 四方の平地が生成され、Inspector のツールバーから「持ち上げる」「平らにする」「テクスチャを塗る」「木を生やす」「草を植える」といった編集が直感的に行えます。

Unity Terrain 編集画面

Terrain 作成手順

  1. Hierarchy 右クリック → 3D Object → Terrain
  2. シーンビューに大きな白い平面が出現 (初期 1000m × 1000m × 600m)
  3. Inspector の Terrain コンポーネント → 山型ツールバーから各ブラシ選択
  4. シーンビューでドラッグして地形を彫る

5 大ツールバー

ツール機能主な用途
Raise/Lower Terrainマウスで持ち上げ/下げ山・盆地を彫る
Paint Holes地形に穴を開ける洞窟・崖の入口
Paint Textureマテリアルを塗る草・砂・岩を塗り分け
Set Height指定高さに揃える平坦地・湖底作り
Smooth Height地形をなめらかに急斜面の調整
Stamp Terrainハイトマップで「判子」同じ山を量産

各ブラシは Brush Size (大きさ) と Opacity (強さ) を調整できます。Brushes パネルから多様な形状を選べ、丸・四角・スプレー型などで微妙な凹凸を作れます。

Paint Texture (テクスチャ塗り)

  1. ツールバーで Paint Texture を選択
  2. Terrain Layers → Create Layer → 草テクスチャの Albedo (Diffuse) を割り当て
  3. 同様に「Sand」「Rock」「Snow」レイヤを作成
  4. 各レイヤをブラシで塗ると、ブレンドして自然な地表ができる

HDRP / URP で品質が変わります。URP の Terrain Lit シェーダはモバイルでも動くので推奨です。

Tree (木の配置)

Paint Trees ツールで森を描画:

  1. Edit Trees → Add Tree → SpeedTree や Asset Store の Tree Prefab を割り当て
  2. Brush Size を大きく、Tree Density を中程度に
  3. ドラッグで森を描く
  4. Shift+ドラッグで木を消去

木は Billboard として遠景は 2D 表示になり、軽量化されます。

Detail (草・小石)

Paint Details で草を植えます。Edit Details → Add Grass Texture で芝生テクスチャを登録し、ブラシで塗ります。Wind Settings (風) を有効にすると草が風で揺れます。

Terrain Settings (重要パラメータ)

項目初期値意味
Terrain Width / Length1000地形の縦横 (m)
Terrain Height600最大の高さ (m)
Heightmap Resolution513高度マップ解像度
Detail Resolution1024草・小石
Base Texture Resolution1024遠景テクスチャ
Pixel Error5LOD のしきい値 (大きいほど軽量)
Base Map Distance1000遠景テクスチャ切替距離

Heightmap Resolution を 2049 まで上げると細かな地形が作れますが、メモリと描画負荷が増えます。モバイル/Switch 等は 513 程度が無難です。

軽量化のコツ

  • Pixel Error を 5〜10 に → LOD で遠景三角形を減らす
  • Draw Instanced をオン → 草や木を GPU Instancing で描画
  • Terrain を複数の小さなチャンクに分割 → カリングが効きやすい
  • 不要なシーンでは Terrain.activeTerrain.drawTreesAndFoliage = false で草木描画オフ

ハイトマップ (Heightmap) インポート

Photoshop で作った白黒の高度マップ (RAW 16bit) を読み込めます:

  1. Terrain Settings → Import Raw...
  2. 解像度 (513 / 1025 / 2049) と Byte Order を指定
  3. 地形に反映

World Machine や Houdini で作った本格的な地形を Unity に持ってこられます。

Unity 6 の Terrain System

Unity 6 (2024 末リリース) では Terrain System に改善:

  • 新 Terrain Tools が標準搭載 (旧 Package 内蔵化)
  • GPU 駆動カリングで遠景が高速化
  • HDRP の Mask Map によるディスプレイスメント精度向上
  • Splatmap (テクスチャブレンド) のレイヤ数増加

スクリプトから Terrain を操作

using UnityEngine;

public class TerrainEdit : MonoBehaviour
{
    public Terrain terrain;

    void Start()
    {
        TerrainData data = terrain.terrainData;
        int w = data.heightmapResolution;
        int h = data.heightmapResolution;

        // 高度マップを取得
        float[,] heights = data.GetHeights(0, 0, w, h);

        // 中央を盛り上げる
        for (int y = 0; y < h; y++)
            for (int x = 0; x < w; x++)
            {
                float dx = x - w / 2f;
                float dy = y - h / 2f;
                float dist = Mathf.Sqrt(dx*dx + dy*dy) / (w * 0.5f);
                heights[y, x] = Mathf.Lerp(0.5f, 0f, dist);
            }

        data.SetHeights(0, 0, heights);
    }
}

FAQ

Q: 地形が見えないです
A: Terrain は Y=0 から始まる。カメラが Y < 0 にいると下にいるので見えません。Y を上げてください。

Q: 草が出ない
A: Detail Distance が短すぎる可能性。Terrain Settings → Detail Distance を 150 以上に。

Q: ParticleSystem の雨が Terrain を貫通する
A: Particle に Collision モジュールを追加し、Layer に Default を指定。Terrain も Default レイヤならぶつかります。