【Unity】GameObjectメニューの3D Objectについて解説【初心者向け】
- 2019.05.21
- GameObject
- GameObject, Unity, メニューバー

メニューバーの『GameObject』から作成できるGameObjectの種類について解説するシリーズ第2弾。
今回は「3D Object」のメニューから作成できるオブジェクトについて解説を行います。
元から使える立方体、球体などがここに入っています。実際にゲームを作る際には自分で作ったモデリングデータを使うことが多いかもしれませんが、それまでの仮置きとして使うことも多いかもしれません。
環境
macOS 10.14 Mojave
Unity2018.3.14f1
Unity Hub 1.6.2
メニューバーの『GameObject』について
『GameObject』は画面左から5番目、『Assets』と『Component』に挟まれています。

個々のGameObject作成に関してはそれぞれ別記事として作成し、それ以外の項目については以下の記事で解説を行なっています。
この記事では以下の項目を解説していきます。

便宜のため区切り線で領域を分け、それっぽく名前を付けます。
上から、プリミティブなオブジェクト、TextMeshProのオブジェクト、ラグドール、Terrain系オブジェクト、3Dテキスト、と呼びます。この呼び方は私が勝手に呼んでいるだけのものなので注意。
プリミティブなオブジェクト
プリミティブなオブジェクトとは立方体や球体など、デフォルトで使えるモデルのことを指しています。
詳細な仕様についてはUnityのマニュアルをご覧あれ。
Cube
立方体のメッシュを持ったGameObjectを作成します。

作成時にはBox Colliderがアタッチされています。
床、壁、天井など使用用途は多く、テスクチャを貼ればそれなりに見えます。頂点数が多いオブジェクトはパフォーマンスにとって負荷が大きくなるため、このような単純なメッシュのオブジェクトを使って障害物や壁などにするのもありです。
例えばノーマルマップ付きテクスチャを貼るだけでも、デフォルトの真っ白箱よりはそれっぽくなります。TransformのScaleを0.1などにすれば薄い板の出来上がり。

Transformの位置、回転、スケールを変更するだけでも用途が広がるので、色々と試してみてね。
Sphere
球体のメッシュを持ったGameObjectを作成します。

作成時にはSphere Colliderがアタッチされています。
球体も何かと使えます。ボールとして使うこともできますし、半分だけ壁から出して球体の電源としても使えます。
例えば下の画像はCubeで囲った部屋をSphereが半分だけ出て照らしています。マテリアルのエミッションで光らせているのでほんわりと光っていますね。

裏側は明るいので白く光っています。カメラが裏側に回ってこないならこれでも。

単純な球体なので、色々と使ってみると「あ、これもいいんじゃない?」なんて思わぬ発見があったりします。
Capsule
カプセル型のメッシュを持ったGameObjectを作成します。

作成時にはCapsule Colliderがアタッチされています。
これ単体で使うことはあんまりないかも。人型オブジェクトの仮置きとして使うくらいでしょうかね。
ドクターマリオの3D版を作りたい場合は薬のカプセルにぴったりです。
Cylinder
円柱形のメッシュを持ったGameObjectを作成します。

作成時にはCapsule Colliderがアタッチされています。InspectorウィンドウでMesh RendererをDisableにすると分かりやすいです。

円柱は柱に使うと便利です。あとは横にして車のタイヤの仮置きにも。

Plane
平面のメッシュを持ったGameObjectを作成します。

作成時にはMesh Colliderがアタッチされています。これはメッシュの形に合わせたコライダーです。
PlaneはXZ平面に広がるオブジェクトで、それぞれUnity世界で10単位の長さを持ちます。床として使用するのに最適なオブジェクトとなっています。
厚さの概念はなく、ScaleのYが0より大きければ上記の画像の厚さを保ちます。
ただし、ScaleのYを[1e+17]のようにとてつもなく大きい数字にすると、なぜか回転した状態で表示されます。この辺は演算バグでしょうか? まぁPlaneにこんな大きな値を入れる人などごく僅かでしょうから影響はないんですけどね。


Planeは裏から見ると描画されません。表面しか描画されないので、向きには注意しましょ。

Quad
平面のメッシュを持ったGameObjectを作成します。

作成時にはMesh Colliderがアタッチされています。ここまでPlaneと共通していますね。
Planeとの違いは、大きさと向いている方向です。QuadはXY平面を向いており、大きさはUnity世界で1単位となっています。
Plane同様に裏側からだと描画されません。

今Sceneビューがどの方向を向いているのかを確かめるには、ビューの右上にあるシーンギズモを参照します。

色の付いている方向が各軸の正の方向です。上の画像の状態ならデフォルトのQuadが画面に描画されます。
Quadはライブ会場のスクリーンみたいなイメージで使えます。他にもUIのように情報を表示するためのパネルとして使うのもいいと思います。
下の画像はRender Textureを使って右奥のカメラの画像をテクスチャとして出力し、それをQuadに描画しています。ドットパターンのマテリアルを上から描画しているため、スクリーンっぽく使えてる……はず。Quadが厚みを持っているように見えますが、Quadの後ろにCubeを配置している点にご注意くださいな。

TextMeshProのオブジェクト
TextMeshProで文字、あるいはスプライトを表示するためのオブジェクトを作成します。
TextMeshPro – Text
3D空間に文字を表示するTextMeshProのオブジェクトを作成します。

文字を表示するだけではなく、タグを使うことで文中にスプライトを表示することもできますし、太字、斜体、打ち消し線などを表示することもできます。

テキストエリアで使用できるタグについてはコガネブログさんのところで日本語でまとまっています。
文字にはグラデーションをかけることも可能。下の画像では4色のグラデーションを適用しています。大昔に作られたホームページってこんな色合いのロゴとかありましたよね。

ラグドール
ラグドールは猫の品種……ではなくて「ぬいぐるみ」を意味する言葉。
キャラクターのモデルを使って、ぐったりとしたぬいぐるみを作りたい時に使います。やられ演出でも使えるかも。
Unityのマニュアルにも記載があるので、こちらもぜひ。
のたぐすさんのブログではSDユニティちゃんを使って解説してくれています。参考にさせてもらいました。
Ragdoll…
ラグドールウィザードを起動します。

体の部位を表すパーツ名が並んでいるので、対応するパーツを当てはめていきます。本当はMayaとかBlenderで作ったモデルをインポートして使うのがいいんだけど、せっかくGameObjectの回だし、プリミティブなオブジェクトを組み合わせて作ってみましょ。
Pelvis……骨盤
Left Hips……左の尻から太ももあたり
Left Knee……左の膝からすねあたり
Left Foot……左の足
Right Hips……右の尻から太ももあたり
Right Knee……右の膝からすねあたり
Right Foot……右の足
Left Arm……左の肩から肘にかけて
Left Elbow……左の肘から先
Right Arm……右の肩から肘にかけて
Right Elbow……右の肘から先
Middle Spine……背骨の中心
Head……頭とか首
これらに相当するパーツを作って当てはめていきました。セットしていない項目があると警告が出るので注意。

そして出来上がったのがこちらです。

この状態でゲームを実行すると以下のように倒れていきます。Ragdollウィザードが自動的にRigidbodyやCharactorJointをアタッチしてくれるので、それらを調整していくといい感じになります。今回はUnityの中で作れるパーツで突貫工事をしましたが、モデリングソフトで作ったキャラクターならボーンとかもしっかり入っているので、もう少し自然になります。

上でも書きましたが、力尽きて倒れる時の演出などに良さそうです。あとはかわいいキャラクターのモデルがあればそのまま人形として登場させるとか、UFOキャッチャーゲームの景品にもいいかも。
Terrain系オブジェクト
Terrainは地形オブジェクトで、Inspectorウィンドウからツールを選択して高低差をつけたり、地面にテクスチャを貼ったりとフィールド作りに最適です。
Terrainの読み方はテレインだったりテラインだったりと人によって異なります。マニュアルだとテレインなのでこっちがいいのかな? ブログで書くときは英語で書いちゃえばいいので楽ちんです。
Terrain
Terrainオブジェクトを作成します。

比較用に、画像の左下にCube(大きさ1)をオレンジの線で表示させています。とんでもなく広いですね。
Inspectorウィンドウに表示されるブラシを使って、このオブジェクトに高低差をつけ、テクスチャを貼っていきます。

実際に高低差を付けていく際には、Inspectorウィンドウの上部に表示されているStaticのチェックボックスを外してから編集を行うのをおすすめ。というのも、ブラシで一部をなぞるだけでもライトマップの再生成が走るため、Sceneビューでの見え方が頻繁に変わってしまい、高低差が分かりにくくなるんです。

Sceneビューでは、Terrainオブジェクトの上でブラシをドラッグすることで地面が盛り上がっていきます。フチの部分をしっかりと山のように囲っておくことで、それっぽいフィールドが出来上がります。

テクスチャを貼ってStaticをTrueに戻せば、フィールドっぽく見える……はず!

このTerrainはパフォーマンス面でちょっと重いというデメリットはあるものの、Unity内で地形を作れる点は大きなメリット。ぜひ手を動かして遊んでみてくださいな。
Tree
Treeオブジェクトを作成します。

最初は1本の枝だけが表示されている状態です。InspectorウィンドウのTreeツールでどんどん枝や葉っぱを足していきます。
以下の画像は枝を追加したものです。メインの木から枝が生まれ、その枝からさらに枝分かれして……と増やすことができます。それぞれの枝にはTree用のマテリアルを設定する項目もあります。

上の状態だとSceneビューでは以下のように表示されます。枝の出現頻度を設定することができるので、それを調節して枝分かれを作っていきます。

ここに葉っぱを追加していきます。葉っぱを追加したい枝を選択し、葉っぱ追加アイコンからどんどん葉っぱを追加していきます。こちらも出現頻度を設定することができます。

Sceneビューで見るとこうなっています。葉っぱもTree用のマテリアルを使って画像を表示しています。3分で作った葉っぱ画像ですが、それっぽく見えますね(自画自賛)

Tree用のマテリアルと書きましたが、これは専用のシェーダーが入っているので、それを選択してマテリアルを作ります。

Treeエディターについてはマニュアルにも記載があるので、こちらもご覧くださいな。
Wind Zone
風の効果を表現できるWindZoneオブジェクトを作成します。

上で紹介したTreeはPrefab化して、Terrainの上にまとめてインスタンス化することができます。それらの木に風が当たって揺れる様子を表現できるのがこのWindZoneです。
風の強さ、乱気流のような荒ぶり方、突風の頻度など、設定を変えることで木の揺れ方が変わります。
風の効果を確認するため、以下のようにTerrainに配置した木を使って揺れる様子を見てみましょうか。

ゲーム画面ではこのように表示されています。溶岩の上に配置した遠くの木については、詳細まで描画されません。これはパフォーマンスを考慮して、遠くのオブジェクトについては簡易的な描画に留めているためです。

WindZoneのモードは「Directional」と「Spherical」の2つです。
「Directional」は風の方向を示すもので、WindZoneのオブジェクトがどこにいてもその向きに風が吹いています。
「Spherical」は効果範囲が球状となっていて、WindZoneのオブジェクトからの距離(半径)を指定することで効果範囲を設定できます。
ここでは「Directional」を使って風を吹かせてみます。容量の関係で画像が小さくて申し訳ないのですが、手前の木を見ていただくと風に揺れている様子が分かるかと思います。

GIF画像ではWindZoneオブジェクトのアクティブ/非アクティブを切り替えています。WindZoneがアクティブだといい感じに風が吹いているようです。
また、画面奥の木については、風で揺れる様子は描画されません。カメラが近づいていくことで上の画像のように揺れる様子が描画され始めます。これもパフォーマンス面を考慮した動きですね。
風の動きはCubeなどにも影響を……与えないんです。残念。あくまでTerrainのTreeオブジェクトに対してのみ風の表現を付け加えてくれるのです。
3Dテキスト
3D空間にテキストを表示する機能です。TextMeshProと同じ役割ですが、メッシュのクォリティを考えると……。
3D Text
3D空間に文字を表示するTextMeshのオブジェクトを作成します。

ここで、上の方で解説したTextMeshProと比べてみましょうか。

うーん綺麗。TextMeshProの方が綺麗かつ多機能なので、こちらの3D Textを使うことは少ないかも。
こちらの3D Textを優先して使うケースがあるとすると、日本語を手っ取り早く表示する場合でしょうかね。というのも、TextMeshProの方はフォントアセットを作る必要があるため、ちょっと手間がかかるんです。
開発者自身がめんどくさいからとぼやけた文字を使うか、それともユーザーのことを考えて綺麗に表示できる機能を使うかはあなたにお任せします。
……TextMeshPro、使おう。
まとめ
このページではメニューバーの『GameObject』から作れる『3D Object』の項目について解説を行いました。
簡単に使えるものから、ちょっと手のかかるものまであります。一度に全部を使わなくても、何作かゲームを作っていくうちに1つずつ使いこなせるものを増やしていくと成長を実感できると思います。
という訳で、早速Unityを開いてGameObjectを作り、Sceneビューで見てみよう!
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】GameObjectメニューのCreate Emptyについて解説【初心者向け】 2019.05.20
-
次の記事
【Unity】GameObjectメニューの2D Objectについて解説【初心者向け】 2019.05.23
コメントを書く