NOOB UNITY

初心者がUnityでなんかしちゃうぞBlog

Unity初心者がクソゲーを作る その2 「ステージ作り」

さぁ、作ろう。クソゲーを。

前回までのあらすじ

unity-senpai.hatenablog.com

チュートリアルを終えただけの初心者が、なんかクソゲーを作ろうと思いたちウィザードリィーをすごく劣化させたダンジョン探索ゲームを作ろうとしていた。

f:id:yuu9048:20190120164902p:plain

しかし、壁を配置したつもりが透明になっていたのである。早くも頓挫の危機、どうなってしまうのか…!?

透明なのはShaderのせいだった

若干茶番感がありますが、これはUnityのデフォルトのShaderに原因があるそうです。

Unity「え…いや、基本的にFront(表面)だけテクスチャ貼っとけばいいっしょ… そっちのが負担減るし」

そう! つまり前だけテクスチャが貼ってある状態で裏は何もはってないのです。 びんぼっちゃまスタイルですね。これを解決するには、裏面にもテクスチャ貼っておくれよっていうShaderを作る必要があります。

Shaderってのはよくわかんないですが、3D Object を 描画するときの定義みたいなものらしいです。表と裏描画しといてーって書けば良いってことですね。なので、壁のために新しいShaderを作りましょう。

f:id:yuu9048:20190120173238p:plain

Project のところを右クリックして、Create > Shader > Standard Surface Shader をクリックします。

f:id:yuu9048:20190120173442p:plain

適当に名前をつけておきましょう。今回は「DoubleWall」と名付けました。わかればいいんです。 そのまま「DoubleWall」をダブルクリックしてエディタを開きましょう。

f:id:yuu9048:20190120173645p:plain

そしたら迷わず、「Cull Off」と記述しましょう。これは「カリング」という機能をオフにするための記述です。 カリングっていうのは、「Objectの前だけにテクスチャ貼るで~」っていう機能です。普通なら使うのですが今回ははあえてこれをオフにします。

さぁ、これでいけるか・・・と思うところですが、まだ駄目です。Shaderはあくまでもこういう感じでObject作ろうぜ~みたいなノリなので実際のテクスチャに紐付けないと駄目なのです。

f:id:yuu9048:20190120174311p:plain

Project のところを右クリックして、Create > Material をクリックします。

f:id:yuu9048:20190120174350p:plain

適当な名前をつけておきましょう。「WallMaterial」と直球ネームをつけてみました。 さぁ、いよいよShaderをMaterialにぶちこんでみましょう! これはすぐできますよ。

f:id:yuu9048:20190120174536p:plain

「DoubleWall」というShaderを「WallMaterial」にドラッグ&ドロップして適用します。右上のShaderが「Custom/DoubleWall」になっていればOKです。

壁なので色も変えてみましょう! カラーパレットをクリックして「」をクリックしてみます。

f:id:yuu9048:20190120175136p:plain

それでは、いよいよMaterialを適用してみましょう! f:id:yuu9048:20190120175238p:plain

作った「WallMaterial」を「Wall」にドラッグ&ドロップします。

すると…?

f:id:yuu9048:20190120175430p:plain

圧倒的…壁ッ! 壁がついに出現しました。 カメラを動かして裏面なんかもみてみましょう。両面にMaterial反映されているはずです。

f:id:yuu9048:20190120175552j:plain

ステージを作ろう

このまま配置していっても良いのですが、あとで変えたいときに大変なのでPrefab化したいと思います。 プレハブというのはObjectの設計図みたいなものをもっておいて、それをベースに作成していくという仕組みです。玉転がしのときにも使いましたね!

f:id:yuu9048:20190120182352p:plain

とりあえずGroundと、Wall1個だけ残して他のは一旦削除してしまいます。

f:id:yuu9048:20190120182430p:plain

Create > Folder で プレハブを入れるためのFolderを作っておきましょう。

f:id:yuu9048:20190120182634p:plain

あとは思うがまま、マップを作っていきたいと思います。

作業中…作業中…

f:id:yuu9048:20190120184505p:plain

すばらしいマップが出来上がりました…!! ちなみに本当は屋根も作ったほうがいいですが、作るとしたら最後に作ってのせれば見やすく作業できて良いでしょう。

今回、無事にステージが作り上がったので次回は移動をできるようにしたいと思います。ステージはもっと改造しても良いかもしれませんが、とりあえず今回はこれでいきましょう…!

今気づいてしまったこと

1マス単位で地面や壁を作ってしまいましたが、これってぶっちゃけ最初に作ったGroundを100x100とか、500x500とかで大きく作ってその上に壁を載せていく形で良かったですね…。
今回の1マス単位での作り方だと、マップエディタで書いてるみたいな感じでわかりやすいっちゃわかりやすいですが、Objectをその分造らないといけないのでめんどくさかったですね。次回以降は改善してみよう。