CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】地面をPlaneで簡単に作ってみよう

こんにちは!Unityで地面を作るときどんな方法で作っていますか?
Terrainを使ったり、アセットを使ったりなど色々な方法がありますが
Planeを使うと最も簡単に地面を作ることができます。
そこで本記事では地面をPlaneで作る方法を解説していきます!
地面を作る方法
ここでは、Unityで地面を作る方法について以下のような順番で解説していきます。
- Planeで地面を作る
- 地面に当たり判定をつける
- 地面にマテリアルを設定する
- 地面にテクスチャを設定する
- Terrainで地面を作る
それではまずはPlaneで地面を作る方法を紹介します。
Planeで地面を作る
平面を表示する機能である「Plane」で地面を簡単に作ることができます。
PlaneはGame Object→3D Object→Planeから作成できます。

このように平面が作成されます。

地面に当たり判定をつける
PlaneにはデフォルトでColliderのコンポーネントがつくので、当たり判定がついています。

試しにCubeを作成し実行してみると、Planeの位置でCubeの動きが止まり、
当たり判定がついているのが分かります。

なお、地面とオブジェクトとの摩擦や跳ね返りについては以下の記事で詳しく紹介しています。

地面にマテリアルを設定する
Planeの地面にマテリアルを設定し、色を変える方法を解説します。
Assetsフォルダ内で右クリック→Create→Materialから新しくマテリアルを作成しましょう。

作成したマテリアルのインスペクター内、Albedoからマテリアルの色を選択できます。
色が選択できたらマテリアルをPlaneにドラッグアンドドロップしましょう。

これで地面にマテリアルが設定でき、色を変更することができました。
地面にテクスチャを設定する
ここでは地面にテクスチャを設定する方法を解説します。
テクスチャは、下のリンクからダウンロードできるフリーのアセットを使います。

下のように、まずはPlaneにマテリアルを設定します。
その後マテリアルのインスペクターを開き、
Albedoの左側の四角のところに、テクスチャをドラッグアンドドロップします。
これで地面のPlaneにテクスチャが設定されました。

Terrainで地面を作る
ここまではPlaneで地面を作る方法を紹介しました。
平面の平らな地面ならPlaneで十分なのですが、凹凸のあるより複雑な地形の地面を作りたい場合は
Terrainで地面を作るのがオススメです。
Terrainの詳しい使い方については下の記事で詳しく解説しています。

地面の設定がうまくいかないとき
オブジェクトが地面に埋まる
下のように、キャラクターが地面に埋まってしまう時があります。
そんな時は、キャラクターのColliderの設定を確認してみましょう。

オブジェクトと地面との当たり判定はColliderによって行われるので、
下のようにColliderがキャラクターと合っていないと埋まってしまいます。

キャラクターのColliderは、インスペクターの内のEditColliderのボタンを押すことで表示、編集できます。

EditColliderを押した状態で、Colliderの頂点をドラッグすることで形を編集することができます。
キャラクターの上端と下端が一致するようにColliderを編集しましょう。

Colliderをキャラクターの形に合わせると、地面に埋まらなくなりました。

オブジェクトが地面をすり抜ける
下のように、キャラクターが地面をすり抜けてしまう場合があります。

そんなときは下の項目を確認してみましょう。
- キャラクターと床のColliderが設定されているか確認する
- ColliderのIsTriggerのチェックを外す
- Layer Collision Matrixでレイヤーの衝突設定を確認
IsTriggerについて

Colliderには「Is Trigger」というチェックボックスがあります。
「Is Trigger」は当たり判定自体は検出するが、それによる物理的な挙動は無視するという設定項目です。
ここにチェックが入っていると地面をすり抜けてしまうのでチェックを外しましょう。
Layer Collision Matrixについて
オブジェクトにレイヤーを設定している場合、Layer Collision Matrixの設定を確認してみましょう。
例えば下のように地面には「Ground」キャラクターには「Player」というレイヤーを設定している場合を考えます。


Project Settings→Physics内にあるLayer Collision Matrixを見てみましょう。
下の画像ではGroundとPlayerが交わるチェックボックスのチェックが外れています。
この状態では地面とキャラクターの衝突判定が無視されて、地面をすり抜けてしまいます。
衝突させたいオブジェクト同士はチェックを入れておくようにしましょう。

オブジェクトを地面に沿って移動させたい

オブジェクトを地面に沿って移動させたい場合があるかと思います。
Cinemachineという機能を使うと、自分で上の画像のようなパスを作成しそれに沿って移動させることができます。
Cinemachineの設定方法については下の記事が参考になります。

3Dで地面判定(接地判定)をつける方法

地面判定(接地判定)とはキャラクターが地面についているかどうかを判定することです。
これにより、地面についている時のみキャラクターを「ジャンプ可能」にするといったことができます。
この接地判定については下のような手順で行うことができます。
- 接地判定用オブジェクトをキャラクターの子オブジェクトとして足元に配置
- 接地判定用オブジェクトのColliderのIsTriggerにチェック
- 地面にタグを設定
- 接地判定用オブジェクトが地面に触れた時のみ処理を行うプログラムを作成
詳しい設定方法やスクリプトについては下の記事が参考になります。

おすすめアセット
Outdoor Ground Textures


Outdoor Ground Texturesは、地面のテクスチャが14種類入った無料アセットです。
テクスチャは並べた時に自然に繋がる作りになっています。
無料ながらクオリティが高く、非常に使い勝手の良いアセットです。
Cartoon Ground and Floor Textures


Cartoon Ground and Floor Texturesは、アニメ風の地面のテクスチャが31種類入ったアセットです。
草むらのような自然の地面から、木や石で作られた人工的な地面まで幅広く種類があります。
アニメ風のワールドを作る時にぜひ使いたいアセットです。
地面をPlaneで作る方法まとめ
以上、地面をPlaneで作る方法について解説してきました!
地面についてはどんなゲームでも必須になってくるので、扱い方をマスターしておきたいですね!