ダークモード
第2回 自機を置く
この回でつくるもの:Kenney Space Kit の宇宙船モデルを使って、右を向いた自機を画面の左側に置きます。弾が出る場所の目印「Muzzle」も作ります。
この回で学ぶこと
- 空のゲームオブジェクトと「親子関係」の考え方
- FBX モデルをシーンに置いて、向きと大きさを調整する方法
- マテリアルを作って色を変える方法
- 目印用の空のオブジェクト(Muzzle)の作り方
- プレハブ(Prefab)の考え方
前回までのふりかえり
第1回では、シーンを Game に名前を変え、カメラを Orthographic(Size 5)にして、背景を暗い紺色にしました。 見える範囲は x がおよそ -8.9〜8.9、y が -5〜5 で、ゲームの物はすべて Z = 0 に置くというルールを決めました。
1. 自機の「親」を作る
1-1. 親子関係とは
Unity では、ゲームオブジェクトを別のゲームオブジェクトの「子」にできます。 親を動かすと、子もいっしょに動きます。 子だけを動かしたり回したりすることもできます。
自機は、次のような3段の親子にします。
Player … 親。動かすプログラムや当たり判定を付ける(回転はいつも 0)
├ Bank … 機体を傾けるための空のオブジェクト(第4回で使う)
│ └ Model … 見た目の3Dモデル(向きはここで直す)
└ Muzzle … 弾が出る場所の目印なぜ分けるのでしょう? 3Dモデルは、作った人によって最初に向いている方向がバラバラです。 見た目(Model)の向きは子で直して、親(Player)はいつも回転 0 のままにしておくと、プログラムで動かすときに迷いません。
1-2. 空のオブジェクト Player を作る
- Hierarchy の何もないところで右クリックし、Create Empty(空のオブジェクトを作る)を選びます。
- GameObject という名前のオブジェクトができます。すぐに名前を
Playerに変えて Enter キーを押します。 - Player を選んだまま、Inspector の Transform の右はしにある ︙(3つの点)を押し、Reset を選びます。位置・回転が 0、大きさが 1 になります。
- Transform の Position を X
-6、Y0、Z0にします。(画面の左のほうです)
ヒント
名前を変えそこねたときは、Hierarchy でオブジェクトを選んで F2 キー(Macは Enter キー)を押すと、名前を変えられます。Inspector のいちばん上の欄でも変えられます。
1-3. タグを Player にする
タグ(Tag)は、ゲームオブジェクトに付ける「名札」です。あとで「これは自機かな?」と見分けるのに使います。
- Hierarchy で Player を選びます。
- Inspector のいちばん上の Tag の Untagged と書かれたところを押します。
- 一覧から Player を選びます。
2. Bank と Model を作る
2-1. Bank を作る
- Hierarchy で Player を右クリックし、Create Empty を選びます。
- Player の下に少し右にずれて GameObject ができます。これが「子」です。
- 名前を
Bankに変えます。 - Bank を選んだまま、Inspector の Transform の Position が (0, 0, 0)、Rotation が (0, 0, 0) になっていることを確認します。ちがったら ︙ > Reset を選びます。
2-2. モデルを選ぶ
- Project ウィンドウで
Assets/ThirdParty/KenneySpaceKitを開きます。 craft_speederAというモデルを探して、クリックします。- Inspector のいちばん下にプレビューが出ます。マウスでドラッグすると、ぐるぐる回して見られます。
ヒント
この教材では自機の例として craft_speederA を使います。名前が違ったら、プレビューを見て好きな宇宙船を選んでOKです。 敵(第7回)やボス(第17回)にも別の宇宙船を使うので、ちがう形のものを選んでおくとよいでしょう。
2-3. モデルを Bank の子にする
- Project ウィンドウの
craft_speederAを、Hierarchy の Bank の上までドラッグして離します。 - Hierarchy で、Player > Bank > craft_speederA の順に並んだことを確認します。(▶ を押すと中が開きます)
- craft_speederA を選んで、名前を
Modelに変えます。 - Model を選んだまま、Inspector の Transform の Position を (0, 0, 0) にします。
よくあるまちがい
モデルを Scene ビューにドラッグすると、Player の子ではなく、ばらばらの場所にできてしまいます。必ず Hierarchy の Bank の上 にドラッグしましょう。まちがえたら、Hierarchy でモデルを Bank の上へドラッグしなおせば子になります。
2-4. 機首を右に向ける
グラディウスのように、自機は 右(X のプラス方向) に向かって進みます。機首(宇宙船の先っぽ)を右に向けましょう。
- Hierarchy で Player を選び、Scene ビューの上で F キーを押して、自機にズームします。
- Scene ビューと Game ビューを両方見られるように、Game タブを Scene ビューの横にドラッグして、2つを並べておくと便利です。(並べなくても、タブを切りかえて確認すればOKです)
- Hierarchy で Model を選びます。
- Inspector の Transform の Rotation の Y を
90にします。 - Game ビュー で見て、機首が右を向いているか確認します。
- 機首が左を向いていたら、Rotation の Y を
-90にします。
注意
向きの確認は、必ず Game ビュー(カメラから見た画面)でしましょう。Scene ビューは見る向きを自由に変えられるので、右と左が逆に見えていることがあります。
ヒント
真横から見ると、宇宙船がうすっぺらく見えることがあります。Model の Rotation の Z を -20 や 20 くらいにすると、少し上の面が見えて立体的になります。かっこいいと思う角度をさがしてみましょう。(いじるのは Model だけ。Player の回転は 0 のままです)
2-5. 大きさを調整する
自機の横幅が 約 1.5 になるくらいにします。(画面の横幅は約 17.8 なので、その 1/12 くらいです)
- Hierarchy で Model を選びます。
- Inspector の Transform の Scale を X
1.5、Y1.5、Z1.5にしてみます。 - Scene ビューの方眼(グリッド)の1マスが 1 です。自機が横に1マス半くらいになっているか見ます。
- 大きすぎたり小さすぎたりしたら、3つの数字を 同じ数 にそろえたまま変えて、調整します。
注意
Scale は Model で変えます。Player の Scale は (1, 1, 1) のままにしておきましょう。親の大きさを変えると、あとで付ける当たり判定や弾の位置もいっしょにずれてしまいます。
2-6. 保存する
- Ctrl+S(Macは Cmd+S)で保存します。
3. マテリアルで色を変える
3-1. マテリアルとは
マテリアル(Material)は、物の「色」や「つや」を決める設定です。 Kenney のモデルには最初から色が付いていますが、自分だけの色にしてみましょう。
ヒント
Kenney の色のままが好きなら、この 3 はとばしてもかまいません。
3-2. マテリアルを作る
- Project ウィンドウで
Assets/_Game/Materialsを開きます。 - 右側の何もないところで右クリックし、Create > Material を選びます。
- 名前を
Mat_PlayerBodyにして Enter キーを押します。 - Mat_PlayerBody を選んだまま Inspector を見ます。いちばん上の Shader が Universal Render Pipeline/Lit になっていることを確認します。
3-3. 色を決める
- Mat_PlayerBody を選んだまま、Inspector の Surface Inputs の中にある Base Map の右の白い四角を押します。
- 色を選ぶウィンドウで、好きな色(例: 水色)を選びます。
- 色のウィンドウを閉じます。
- Metallic(金属っぽさ)を
0.5、Smoothness(つるつるさ)を0.6くらいにすると、宇宙船らしい光り方になります。
3-4. モデルにマテリアルを付ける
- Hierarchy で Model の左の ▶ を押して、中を開きます。
- Hierarchy で Model を選び、Inspector に Mesh Renderer があるか見ます。なければ、Model の子のオブジェクトを順に選んで、Mesh Renderer を持っているものを探します。
- Mesh Renderer の Materials を開くと、
Element 0、Element 1……のように、モデルの部分ごとのマテリアルが並んでいます。 - Project ウィンドウの Mat_PlayerBody を、変えたい部分の Element の欄にドラッグして離します。
- Game ビューで、色が変わったことを確認します。
- 他の部分も変えたいときは、マテリアルをもう1つ作って(例:
Mat_PlayerWing)、別の Element にドラッグします。
ヒント
モデルによっては、マテリアルが1つだけのものも、いくつもあるものもあります。どの Element がどの部分かは、1つずつ入れかえてみるとわかります。
よくあるまちがい
Kenney のモデルに最初から付いているマテリアルは、Inspector で色を変えようとしても灰色で変えられません。(モデルのファイルの中に入っているため)色を変えたいときは、この手順のように 自分でマテリアルを作って入れかえ ましょう。
3-5. 保存する
- Ctrl+S(Macは Cmd+S)で保存します。
4. Muzzle(弾が出る場所)を作る
4-1. Muzzle とは
Muzzle(マズル)は「銃口」という意味です。 第5回で弾を撃つとき、弾はここから出てきます。見えない「目印」なので、空のオブジェクトで作ります。
4-2. Muzzle を作る
- Hierarchy で Player を右クリックし、Create Empty を選びます。
- 名前を
Muzzleに変えます。 - Hierarchy で、Muzzle が Player の子(Bank と同じ段)になっていることを確認します。
- Muzzle を選んだまま、Inspector の Transform の Position を X
1、Y0、Z0にします。
注意
Muzzle は Bank の子ではなく、Player の子にします。Bank の子にすると、第4回で機体を傾けたときに、弾が出る場所までずれてしまいます。
4-3. 目印を見えるようにする
空のオブジェクトは Scene ビューで見えにくいので、アイコンを付けます。
- Muzzle を選んだまま、Inspector のいちばん上、名前の左にある立方体のアイコンを押します。
- 出てきた色つきの形の中から、好きなもの(例: 赤いひし形)を選びます。
- Scene ビューで、Muzzle の場所に印が出たことを確認します。
4-4. 機首の先に合わせる
- Hierarchy で Muzzle を選びます。
- Scene ビューで、Muzzle の印が自機の機首の先っぽにあるか見ます。
- ずれていたら、Inspector の Position の X を
0.8や1.2のように変えて、機首の少し前にくるように調整します。(Y は 0、Z は 0 のまま)
4-5. 保存する
- Ctrl+S(Macは Cmd+S)で保存します。
5. プレハブとは
5-1. プレハブの考え方
プレハブ(Prefab)は、ゲームオブジェクトを「型(テンプレート)」として保存したものです。 クッキーの型のように、1つの型から同じものをいくつでも作れます。 型を直すと、そこから作ったものが全部いっしょに変わります。
| 使い道 | 例 |
|---|---|
| 同じものをたくさん出す | 弾(第5回)、敵(第7回)、爆発(第9回) |
| 別のシーンでも使う | タイトル画面の星空(第12回) |
自機は1機しかいないので、今回はプレハブにしなくてかまいません。 ここでは、練習としてプレハブを作ってみましょう。
5-2. 練習:プレハブを作ってみる
- メニューの GameObject > 3D Object > Cube を選びます。
- Hierarchy で Cube の名前を
PracticeBoxに変えます。 - Inspector の Transform の Position を X
0、Y0、Z0にします。 - Project ウィンドウで
Assets/_Game/Prefabsを開きます。 - Hierarchy の PracticeBox を、Project ウィンドウの右側(Prefabs フォルダの中)にドラッグして離します。
- Project ウィンドウに青い箱のアイコンの PracticeBox ができたことを確認します。これがプレハブです。
- Hierarchy の PracticeBox の文字も青くなります。「プレハブから作られたもの」という意味です。
5-3. 練習:型から増やしてみる
- Project ウィンドウの PracticeBox プレハブを、Hierarchy の何もないところにドラッグします。もう1つ増えます。
- 増えたほうを選んで、Inspector の Position の X を
3にします。 - Project ウィンドウの PracticeBox プレハブをダブルクリックします。プレハブを編集する画面に切りかわります。
- Inspector の Transform の Scale を X
2、Y2、Z2にします。 - Hierarchy の左上にある <(戻る)の矢印を押して、シーンに戻ります。
- Scene ビューで、2つの PracticeBox が 両方とも大きくなった ことを確認します。
5-4. 練習のあとかたづけ
- Hierarchy で、2つの PracticeBox を Ctrl(Macは Cmd)を押しながらクリックして、両方選びます。
- Delete キー(Macは Cmd+Backspace)を押して、シーンから消します。
- Project ウィンドウの
Assets/_Game/Prefabsにある PracticeBox プレハブを右クリックし、Delete を選びます。 - 確認の画面が出たら Delete を押します。
5-5. 動作確認
- Ctrl+S(Macは Cmd+S)で保存します。
- ▶ ボタンを押して、Game 画面の左側に、右を向いた自機が映っていればOK。
- もう一度 ▶ ボタンを押して止めます。
チャレンジ課題
- KenneySpaceKit の中から、別の宇宙船を Bank の子に入れて、見くらべてみましょう。気に入ったほうを残して、もう1つは消します。(残したほうの名前は
Modelにします) - マテリアルを2つ以上作って、機体の部分ごとに色分けしてみましょう。
- Model の Rotation の Z を変えて、いちばんかっこよく見える角度を見つけましょう。
つまずきポイント
| こんなときは | ここを確認 |
|---|---|
| 自機が Game ビューに映らない | Player の Position が (-6, 0, 0)、Model の Position が (0, 0, 0) か |
| 自機が点のように小さい・画面いっぱいに大きい | Model の Scale を調整したか。Player の Scale は (1, 1, 1) か |
| 機首が手前や奥を向いている | Model の Rotation の Y を 90 または -90 にしたか |
| モデルが Player の子になっていない | Hierarchy で Model を Bank の上にドラッグしなおす |
| マテリアルの色が変えられない | モデルに入っていたマテリアルではなく、自分で作ったマテリアルを使っているか |
まとめ
- 自機は Player(親)→ Bank → Model と、Player → Muzzle の親子にしました。
- 向きと大きさは Model で直し、Player の回転は (0, 0, 0)、大きさは (1, 1, 1) のままにします。
- マテリアルで色を変えられます。プレハブは「同じものをたくさん作るための型」です。