Developer

【Unity実践】#3 プロトタイプ編 ~ 壁・床・天井の作成 ~【Boxゲーム】
2020.11.30
Lv2

【Unity実践】#3 プロトタイプ編 ~ 壁・床・天井の作成 ~【Boxゲーム】

今回の内容

今回は壁と床、天井の配置を行います!

※初めての方はこちらから
【第1回記事】この連載について

Canvasの設定

まずは 「3D Object > Cube」 を置いてみましょう。

とりあえず配置は「0,0,0」となるようにします。

ここでゲームシーンを見てみると、キューブが表示されていません。
これは Canvas の設定によって隠れてしまっているのが原因で、Canvas を一旦非表示にするとキューブが表示されます。


Canvas が原因だということはわかりましたが、非表示のままでは当然ダメなので設定を変更します。

変更するのは Canvas の「Canvasコンポーネント」の値で、

Render Mode : Screen Space -Camera
Render Camera : Main Camera

となるように変更します。

以下の様に、Canvasを表示していてもキューブが表示されていれば成功です。

(関連記事)
【Unity連載】uGUIのCanvasとRenderModeについて詳しく解説

壁・床・天井のプレハブを作成

ここからが今回の本題で、壁・床・天井の作成を行います。
完成イメージは以下のようなステージです。

まずは先ほど配置したキューブの名前を「Floor」に変更して、以下の様に設定しましょう。

(関連記事)
【Unity連載】ゲームオブジェクトとは

ここで Floor をプレハブ化しておきます。
プロジェクトビューで「Assets > Prefabs」フォルダを作成して、その中に作成してください。
ヒエラルキービューの Floor を、作成した Prefabs フォルダにドラッグ&ドロップするとプレハブ化は完了です。

※プレハブ化って・・?
プレハブはゲームオブジェクトの設計図のようなものです。
作成したプレハブをシーンに配置することで、プレハブの元となったオブジェクトを複製することができます。
今回のFloorのような、何度も似たような設定で配置するオブジェクトをプレハブ化しておくことで、
その後の作業効率を上げることができます。

ちなみにプレハブ(prefab) は prefabricated(あらかじめ作られた、既成の) の略です。

(関連記事)
【Unity連載】プレハブの使い方①(作成・複製)

同様にして天井のプレハブを作成しましょう。
3D Object > Cube を新規配置して名前は「Ceiling」とします。
設定を以下にして、Floorと同様にプレハブ化してください。

Floor とほぼ同じ設定なので、わざわざ Ceiling としてプレハブ化しなくても Floor で十分では・・?
と思われるかもしれませんが、後々設定を分けて行くので今のうちに別で作成しています。

最後に壁のプレハブを作成しましょう。
3D Object > Cube を新規配置して名前は「Wall」とします。
設定を以下にして、プレハブ化してください。

ここまでで今回必要なプレハブが揃いました。
現状、ゲームビューとプロジェクトビューは以下の様になっています。

あとは作成したプレハブを使って残りの壁と床を配置し、目標のステージとなるようにします。

残りの壁・床の配置

① 壁の追加
先ほど作成した「Assets > Prefabs > Wall」をシーンに配置してください。

Transform の設定を以下にして、右に配置します。

↓このような感じになります。

② 床の追加
「Assets > Prefabs > Floor」をシーンに配置してください。

Transform の設定を以下にして、中段に配置します。

ここまでできると一通りの配置は完了で、以下の様になります。

以下に改めて、各オブジェクトの設定を記載しますので、上手く配置されていない場合は確認してみて下さい。

設定一覧


ライティングについて

ここまでで今回のメインの内容は完了していますが、最後にライティングについて軽く触れておきます。

先ほど配置した各オブジェクトがグレーに表示されていたと思いますが、インスペクタービューで見ると白色のマテリアルが設定されています。

ではなぜグレーで表示されているかと言うと、光源が反映されていないためです。
反映するには大きく3つの方法があり、とてもザックリと整理すると以下の通りです。

Realtime リアルタイムでの描画
Mixed RealtimeとBakedの間
Baked ある時点の光、影の状態をシーンに焼き付ける(ベイクする)

見た目的に理想的なのは Realtime の描画ですが、光と影の描画はかなり負荷の高い処理となるので、
実行環境によってはゲーム全体の動作に影響が出てしまいます。

一方で Baked は、事前にある時点での光や影の計算を行い、そのデータを使って描画をするので負荷は少なくて済みますが、動きのあるオブジェクトの影が描画できないデメリットがあったりします。

最終的には他の細かい設定なども組み合わせて、ゲームや実行環境に合わせた調整を行うこととなりますが、
現段階では動くオブジェクトは存在しないので、ひとまず Baked の処理を行って結果を見てみましょう。

設定は Lightingビューで行いますが、デフォルトでは表示されていないかと思いますので、
「Window > Rendering > Lighting Settings」から表示してください。

Baked のライティングを生成するには、このウィンドウの下部「Generate Lighting」をクリックします。

少し待つとライティングデータ(ライトマップ)が生成され、ゲームビューが以下の様になります。

光が反映されたことで、壁や床が本来の色である白に見えるようになりました。
ちなみに、Assets > Scenes を見ると「GameScene1」というフォルダが生成されており、この中にライティングデータが格納されています。

このフォルダを削除してからシーンを再生すると、また元の様に壁や床はグレーで表示されることとなります。

今回は触りということでこの程度にしておきますが、また随時ライティングに関しては調整を入れて行くかと思います。

おわりに

今回は壁と床、天井の配置がメインと言うことでしたが、ついでに Canvas や Lighting の設定も行いました。
どれも大事な内容ではありますが、初心者の方は特に、プレハブ化とプレハブからのオブジェクト作成の流れを押さえておきましょう。

次回からはプレイヤー(キャラクター)の作成を進めていきますのでお楽しみに!

 
 

連載目次リンク

実践Unityゲームプログラミング 連載目次
 

関連する連載リンク

「初心者のための」Unityゲーム制作 目次
 

© Unity Technologies Japan/UCL