GameCreate

【Unity2D・ゲーム制作】適当に小さなタップゲームを作ってみる Part2

投稿日:

こんにちは、PORTABLE SHELL ぽたぼぅ です。

前回あまりキリが良くなかったので、さっそく続きを書いていこうと思います。

今回はモンスターPrefabを作り、自動で生成させるところまでやっていこうと思います。

 

モンスターのPrefabを作る

では、まず手始めに「スライム」さんを画面に生成します。

よくあるRPGゲームでは最初の雑魚敵としてよく使われるあのスライムです。

 

ゲームのキャンバスに「Image」を生成し、スライムの画像を割り当てます。

シーンビューでカメラとスライムの位置が被って見えにくいのでちょっとズラします。

サイズもちょっと小さいので「150×150」のサイズに変更しておきましょう。

現段階では、まだ画面に貼り付けられたただの「スライム」「イラスト」です。

次にこのモンスターに「Rigidbody2D」「Circle Collider2D」を与えてあげます。

この2つを実装することで、「スライム」は実体を持ち、当たり判定を得ることができます。

 

そして、使うのは先ですが、このスライムにスクリプトを適応させておきます。

C#スクリプトを作成し、名前を「MonsterController」に変更し、スライムに与えてあげます。

最後にこのスライムを「Prefab化」します。

ヒエラルキービューから、プロジェクトビューの「Prefabsファイル」ドラック&ドロップするだけです。

Rigidbodyって?

Rigidbodyをゲームオブジェクトに与えると、

そのオブジェクトは物理特性によって制御する事ができるようになります。

例えば、重力を受けたり、他のオブジェクトの外からの影響を受けるようになったりします。

※今回は重力を受ける必要がないため、「Gravity Scale」を「0」に設定しています。

Colliderって?

Colliderをゲームオブジェクトに与えると、

そのオブジェクトは物理衝突の為のオブジェクト形状を持ちます。

今回の場合は、スライムが丸い形をしているので「Circle Collider」を与えて、

丸い形の実体をスライムに与えてあげました。

Prefabって?

Prefabとは作成済みのオブジェクト複製させる機能です。

同じスライムを何個も作る場合に、1から何個もスライムを作るのはめんどくさい。

そんな時に、スライムを「Prefab化」させておけば、

出来上がった「スライム」何匹も生成させることができます。

 

ゲームマネージャーを作成する

次にゲーム全体を制御する為のゲームマネージャーを作成します。

「Scriptsファイル」の中にC#スクリプトを新しく生成し、名前を「GameManager」に変更します。

次に「空っぽのオブジェクト」を生成して、「GameManager」スクリプトを与えてあげます。

 

新しく生成されたスクリプト(台本)にどれだけ内容を書いても、

オブジェクト(役者)に与えてなければ、ゲームは動いてくれません。

 

スクリプトに記述をする。

次にスクリプトにゲームの内容を記述していきます。

最初は、定数の定義と、オブジェクト参照の定義をします。

//定数
private const int MAX_MOB = 5;
//オブジェクト参照
public GameObject monsPrefab;
public GameObject canvasGame;

publicがついている変数は外からオブジェクトを参照しなければなりません。

保存したら、「GameManager」のインスペクター「MonsPrefab」「CanvasGame」の部分に

先ほどPrefab化した「スライム」「CanvasGame」をドラック&ドロップします。

次に「Start」関数の中にモンスターを生成する記述をします。

void Start () {
//モンスター生成
for(int i = 0; i < MAX_MOB; i++){
CreateMob ();
}

モンスターが規定の数になるまで、「CreateMob ();」を呼び出すという記述です。

 

しかし、まだ「CreateMob ();」の関数は作っていません。

これでは、ゲームを開始した時点で「CreateMob ();」がありません。

という内容でエラーが起きてしまうので、「CreateMob ();」をさっさと作ってしまいましょう。

//モンスター生成
public void CreateMob(){
GameObject mob = (GameObject)Instantiate (monsPrefab);
mob.transform.SetParent (canvasGame.transform,false);
mob.transform.localPosition = new Vector3 (
UnityEngine.Random.Range (-300.0f, 300.0f),
UnityEngine.Random.Range (-100.0f, -500.0f),
0f);

記述はこんな感じです。

1から説明するとすごく長くなるので、今回は記述の詳細は省きます。

 

最後に、未だ画面上にいる「スライム」をデリートしてしまいましょう。

これで、モンスターを生成する記述は全て終わりました。

 

ゲームを再生すると画面にスライムが出現するようになりました。

 

Part2は以上です。

次回は「モンスターをタップで倒す」まで進めればと思いますが、

今回もだいぶ長くなってしまったので、次回からはもう少し小分けになるかもしれません。

よければ、今後もお付き合いください。

 

この記事が参考になれば幸いです、それではまた。

 

-GameCreate

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【中国語版】「ワタシノモノ」は無事ローカライズされました。

こんにちは、PORTABLE SHELL ぽたぼぅ です。   数ヶ月前より「Pujia8スタジオ」さまと、 アプリ「ワタシノモノ」の中国語ローカライズ計画がスタートしました。   …

ASALATO BATTLE TIMER 【アサラト】タイマーアプリ・リリース

こんにちは、PORTABLE SHELL ぽたぼぅ です。 ASALATO BATTLE TIMER というタイマーアプリをリリースしたのでご紹介します。     ASALATO …

【Unity2D・ゲーム制作】適当に小さなタップゲームを作ってみる Part3

こんにちは、PORTABLE SHELL ぽたぼぅ です。 私たちが作っているゲームの、今作・前作のシナリオは「いさ」が担当してくれたのですが、 私も将来ゲームのシナリオくらいかけるようになりたくて、 …

【中国語版】Pujia8スタジオで「ワタシノモノ」がローカライズされるお話

こんにちは、PORTABLE SHELL ぽたぼぅ です。 Android版をリリースしてから1週間ほどたった頃、「Pujia8スタジオ」様から1通のメールが届きました。 メールのタイトルには「中国語 …

【テックアカデミー】1ヶ月間みっちり「Unity」を勉強してみた

こんにちは、PORTABLE SHELL ぽたぼぅ です。 約1ヶ月ほど放置していましたが、私「勉強」してました。 ゲームをリリースする為にあらゆる事を勉強しなければならないのは必至でしたが、 まずは …

プロフィール


プロフィール

 管理人のぽたぼぅです。
1990年(平成2年)生まれ。
[趣味]ゲーム、アニメ、
ただのゲーム好きは独学で
どこまでゲームを作れるようになれるのか日々挑戦中。

カテゴリー

プライバシーポリシー

【著作権について】

当サイトは個人が運営している非公式サイトであり、運営企業とは異なります。また、当攻略記事のすべての画像や攻略データの著作権は、運営元に帰属します。著作情報の削除依頼に関しては、当サイトのお問い合わせからお願いします。著作者からの申請であれば、速やかに対応いたします。