【Unity】横スクロール2Dゲームの地形を自動生成しよう!

Endless-2D-Terrain-Generator. Unity

横スクロール2Dゲームの地形を自動生成しよう!

ランゲームやジャンプゲームのような2D横スクロールゲームのステージを自動生成するAssetとその使い方を解説します。

自動生成することで、実行するたびに別のステージになるので何度でも遊べるゲームを作ることが可能です。

Endless-2D Terrain Generator

今回使用するAssetは、Endless-2D Terrain GeneratorというAssetになります。

このAssetは

  • コーディングの必要がなく、すべての地形生成は、エディターに入力したルールに基づいて作成されます。
  • 退屈で平凡な地形だけでなく、動的に生成されたメッシュは、キャラクターに丘や谷を走らせることができます。
  • 完全にコメントされたC#コード。
  • モバイル対応。地形は必要なときにのみ生成され、画面上になくなると破棄されます。これにより、モバイルデバイスでのパフォーマンスがスムーズに保たれます(Android HTC EVO 3Dでテスト済み)

それでは、使い方を説明します。

Endless-2D Terrain Generatorをインポート

Assets StoreでEndless-2D Terrain Generatorと検索します。

Downloadをクリックすると、

Possible incompatibility with Unity 2019
This package was published using Unity 4 and contains asset types which may not upgrade cleanly to Unity 2019:
  • Scripts
While Unity will generally attempt to upgrade assets to work, problems may still occur. For more information about upgrading projects to Unity 2019, please refer to the Unity 5.0 Upgrade Guide.
For more information about the compatibility of this specific package, please contact the publisher directly.
                                      Cancel                                                                         Access

とでますが、Accessを押してダウンロードし、インポートしてください。

簡単な作り方

画面上部のComponentをEndless 2D Terrain→Create Terrainの順番に選択してください。

Create-Terrain

HierarchyにEndless 2D Terrainオブジェクトが追加され、単純な波形の地形が出来上がります。

Endless-Terrain

作成した地形を確認するために、CameraオブジェクトにChaseCameraスクリプトを追加します。このスクリプトは、カメラが右に移動し、必要に応じて生成される地形を確認できます。
実際のゲームでは、カメラはキャラクターを追跡します。

ChaseCamera

後は、このオブジェクトにマテリアルや生成のためのパラメーターを設定することで、思い通りの地形データを作成することができます。

Endless 2D Terrainの設定

Front、Top、Detailのマテリアルの設定ができます。地面は、Front、Topの二層構造となっており、それぞれの、マテリアルや高さを設定できます。

TeerrainDisplayer

ここでは、基本的な設定を行い、次に丘の角度やコイン等のオブジェクトの設定を行います。

今回は画像のように設定しました。

 

Terrainの生成ルールやプレハブの追加

Terrain Generation Rulesでは各種のパラメータの設定を行うことができます。

丘の高さやその出現間隔を最小値と最大値にて設定することができ、Terrain StyleをRandomにしておくことで、設定した間隔でランダムに生成されます。

]

Terrain Generation Rulesの詳細

Terrain Style
Random – 地形ポイントは、最小地形高さと最大地形高さの間にランダムに生成されます。
Repeated – 地形ポイントが最小地形高さと最大地形高さの間で交互になり、丘が作成されます。
Terrain Length
Fixed – ルールの長さのユニット数が生成された後、次のテレインルール(存在する場合)に移動します。
Infinite – 次の地形ルールに移動することはありません。 地形は引き続きこのルールに従って生成されます。
Min Terrain Height
地形生成の最小の高さ。 最小と最大の地形の高さを同じ値に設定すると、平坦な地形が作成されます。
Max Terrain Height
地形生成の最大の高さ。 最小と最大の地形の高さを同じ値に設定すると、平坦な地形が作成されます。
Key Vertex Spacing
キー頂点が離れているほど、地形は滑らかになります。それらが近いほど、起伏の多い地形になります。
地形の一貫性を高めるために、最小キー頂点と最大キー頂点の間隔を同じ値に設定します。これらを異なる値に設定すると、地形が滑らかと丘陵の間で切り替わることがあります。
Calculated Vertex Spacing
計算された頂点は、キー頂点間で計算されたポイントです。これらが多いほど、地形は滑らかになります。少ないほど、地形はギザギザになります。これを1に設定することをお勧めします。
Rule Length
ルールが実行される期間。
Mesh Length
このルール内の各メッシュピースのサイズ。
Angle
地形が生成される角度。
このルールで許可されるプレハブ
プレハブ生成ルールを追加する場合、特定のルールのみで生成し、他のルールでは生成しないようにすることができます。プレハブ名のチェックボックスをオンにすると、プレハブが特定のルールで生成できるようになります。デフォルトでは、これらはすべてチェックされています。

Prefab Generation Rulesでは、コイン等のオブジェクトの設定が可能で使いたいプレファブを設定し、出現間隔や1グループに表示する個数などの設定ができます。

Prefab Generation Rulesの詳細

Prefab To Clone
ルールの基準が満たされたときに生成された地形に沿って複製されるプレハブ。
Offset
地形に沿ったデフォルトのプレハブ位置からのx、y、zオフセット量。
Min Repeat Distance
プレハブが再び生成される前の最小距離
Max Repeat Distance
プレハブが再び生成されるまでの最大距離。
Min Group Size
これは、プレハブが生成されるたびに複数のプレハブを複製したい場合に使用されます。たとえば、木や茂みの塊をすべて同じ場所に生成したい場合は、グループサイズを設定できます。
Max Group Size
グループ内で複製するプレハブの最大数。
Min Group Spacing
グループ内の複製されたプレハブ間の最小間隔。
Max Group Spacing
グループ内の複製されたプレハブ間の最小間隔。
Min Slope Placement
プレハブは、この数より大きい傾斜面にのみ配置されます。この数を-90に設定すると、プレハブはすべての下り坂に配置されます。 0に設定すると、下り坂に配置されません。その間にあるものは、プレハブをその数より大きい下り坂のみに配置します。
Max Slope Placement
最小勾配配置と同じですが、上り坂に適用されます。
Match Ground Angle
プレハブを回転させて、プレハブの傾斜角と一致させるかどうかを確認します。
Use Min Distance
これをチェックして、最小距離値を入力します。プレハブは、最小距離に達した後にのみ生成されます。最小距離を無視するかどうかをオフにします。
Use Max Distance
これをチェックして、最大距離値を入力します。プレハブは、最大距離に達するまで生成されます。最大距離を無視するかどうかをオフにします。

実際にGame画面でどう映るのか見ながら調節しましょう。

今回は画像のように設定しました。

これで一通りの設定が終わりました。最後にPrefabsフォルダのKoalsをHierarchyにドラックアンドドロップして実行してみてください。地形が自動生成されます。

まとめ

このAssetを使うことで、横スクロールのステージを自動生成することができました。あとは、スコア表示やゲームオーバー、キャラクターをコントロールできるように設定するだけでゲームを作ることができます。

 

 

 

コメント

タイトルとURLをコピーしました