【第18回】斜方投射でボールの予想経路を示す・Prefab準備編

【第18回】斜方投射でボールの予想経路を示す・Prefab準備編

前回のチュートリアルでは、経路を表示するためのオブジェクトに設定するMaterialについてお送りしました。

今回は経路を表示するためのオブジェクトをPrefabにする方法を扱います。

手動でオブジェクトを作成して、そのオブジェクトを並べて、ボールに加わる力の強さに応じて動かす……なんて、とてもじゃないけどやってられません。

でもPrefabを使えば、スクリプトからインスタンス化できるし、その時に参照をリスト化すれば操作も簡単だしで、メリットがかなり大きいのです。

前回のチュートリアルはこちらから。

 

今回の目的

斜方投射で予想される経路を3Dの球を並べて表示します。

今回はその下準備として、経路を示すための3Dオブジェクトを作成する過程で使用するPrefabを作ります。

Materialの作成、Prefabの作成、スクリプトの作成と盛りだくさんなので、何回かに分けてやっていきます。今回はその中盤戦。

プロジェクトの準備

前回のチュートリアルで作成したプロジェクトをそのまま使います。

このページに先にたどり着いた方は、チュートリアルの初回から追っていただけるといいかもしれません。

今度も新キャラPrefabさん

また新しい単語かぁ……。

こんな時はやっぱり公式のマニュアルを見てみましょ。

Prefabとは

マニュアルの『プレハブ』を見てみます。

こっちもざっくり言うと、オブジェクトを作るためのテンプレートのようなもの。何よりの利点は、スクリプトからインスタンス化できることです。そう、Prefabはプレハブ小屋とかのPrefabなんです。

今回作ろうとしている斜方投射のガイドは、球をたくさん並べて放物線を作りたいのですが、これらをひとつひとつ手で作成するのは大変です。しかも、『Sphere』オブジェクトに加える力が変わるごとに動かしたいのに、全部のガイドへの参照を『Inspector』で設定しようものなら……考えたくない!

でもご安心ください。このPrefabなら、そんなめんどくさい作業ともお別れ。スクリプトから簡単にGameObjectが作れちゃうんです。

C#のリスト機能を使えば、オブジェクトへの参照だって簡単に保持できます(通販風)

Prefabを作成する

習うより慣れろの精神です。Prefabファイルを作ってみましょ。

Prefabファイルを作るには、まずScene内にオブジェクトを作ってしまうのが簡単です。実はそれを『Project』ウィンドウにドラッグ&ドロップするだけで作れちゃうんです。

まずは『Hierarchy』ウィンドウでコンテキストメニューを開き、[3D Object] -> [Sphere]を選択します。

ガイド用の球を作る
ガイド用の球を作る

 

作成したオブジェクトは[Guide]にリネームします。Transformコンポーネントの歯車アイコンから[Reset]を選択した後、値をセットしていきます。

ここでいじるのはScaleだけで、X, Y, Z全てに[0.25]を入力します。小さめの球が並んでガイドになるイメージです。

Transformの設定
Resetはエチケット

 

続いて、忘れてはいけないのが、Colliderコンポーネントを外すこと。

Colliderについては上の記事で扱いましたが、これがあると衝突しちゃうんですよね。なので[Remove Component]から外しておきます。

Remove Component
忘れるとガイドに衝突するので注意(1敗)

 

Mesh Rendererコンポーネントでは、今回作成したMaterialをセットしておきましょう。Materialをドラッグ&ドロップするか、丸ボタンから『Guide』マテリアルを選択します。

Mesh Rendererでマテリアルをセット
Mesh Rendererでマテリアルをセット

 

これでオブジェクトの準備ができました。あとは『Project』ウィンドウにドラッグ&ドロップで終了ですが、Prefabを格納するフォルダを先に作っておきます。

 

特別なフォルダResource

ここで、Unityの中で特別なフォルダであるResourcesをご紹介。なんで唐突に……と思われた方もいるかもしれませんが、Prefabをスクリプトから呼ぶために必要なんです。

詳しい話をすると地獄を見ることになるので割愛しますが、スクリプトからファイルを呼びたい時に使うフォルダと思ってもらえればいいかと思います。

逆にスクリプトで使わないファイルはResourcesフォルダに置かない、というのも併せて覚えておくと吉。

Resoucesフォルダの中身は全部ゲームに含まれるので、うっかりするとゲームファイルの容量がとんでもなく膨れ上がるなんてこともあります。過去やらかしたので同じ轍は踏んで欲しくないんです。

さて、そんなResourcesフォルダは使い方を間違えなければ便利な物なので、このチュートリアルでも作ってみましょ。

『Project』ウィンドウの『Asset』フォルダに、『Resources』フォルダを作成します。メニューを開いて[Create] -> [Folder]です。

Resourcesフォルダの作成
Resourcesフォルダの作成

 

続いて『Resources』フォルダを開いて、『Prefabs』フォルダを作成します。こっちもメニューを開いて[Create] -> [Folder]です。『Resources』フォルダは結構ごちゃごちゃしやすいフォルダなので、最初から整理しておくと便利です。

Prefabsフォルダの作成
Prefabsフォルダの作成

 

これで準備OK。『Prefabs』フォルダを開いたら、『Hierarchy』ウィンドウの『Guide』オブジェクトを『Prefabs』フォルダの中にドラッグ&ドロップします。

Prefab化する
Prefab化する

 

するとPrefabファイルが作られます。Prefab化するのは簡単ですね。画面下の青い立方体のようなアイコンがPrefabを表しています。

Prefabフォルダ
Prefabファイルが作られた

 

Prefab化されると、『Inspector』ウィンドウと『Hierarchy』ウィンドウでも変化が現れます。

『Inspector』ウィンドウではオブジェクトのアイコンがPrefabのものになり、『Hierarchy』ウィンドウでは文字が青色に変化します。

Prefabのアイコン
InspectorとHierarchyでも変化が

 

Prefabの使い方

Prefabファイルができたら、今度は逆に『Hierarchy』ウィンドウの方にドラッグ&ドロップしてみましょうか。

ドラッグ&ドロップ
『Project』ウィンドウからドラッグ&ドロップ

 

Prefabからオブジェクトを作ることができました。手動でもPrefabをインスタンス化できるのが嬉しいところ。この上スクリプトからも呼べるとは、なんと便利な。

Prefabからオブジェクト
Prefabからオブジェクトが作られた

 

今回作成した『Guide』をPrefabから作れることが分かったので、『Hierarchy』ウィンドウにいる『Guide』オブジェクトと『Guide (1)』オブジェクトを削除します。

オブジェクトの削除
オブジェクトの削除は慎重に

 

万が一間違えた時のために、Sceneを保存しておくと安心です。Sceneを読み込み直せば復活しますからね。

これでPrefabの準備ができたので、次はいよいよスクリプトを使ってPrefabをインスタンス化します。

 

Prefabのインスタンス化について単独でまとめた記事もあるので、こちらもご参照ください。

 

まとめ

今回は斜方投射の経路予測を表示するガイド、そのテンプレートとなるPrefabを作成しました。

Prefabは敵オブジェクトなどとしてよく使われるので、是非ともマスターしましょ。と言っても作り方は今回やったように簡単なので安心。

次回はスクリプトを使って、今回のPrefabをインスタンス化するとともに、ガイドとして軌道を描いてもらいます。

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!