Unity4.3の2D機能を使い、2時間程でミニゲームを作ったので手順公開!(後編)
前回の続きです!
とりあえず、ステージ作ってキャラクターを動かせる段階まで来ました。
↓こんな感じ…。
あとは、敵を出現させて、スコアを表示させて…ゲームっぽくなるところまでひとまずやってみたいと思います。
敵を出現させる!
前回、Asset Storeでゲットした2D入門セットの中にある「Prefabs」フォルダ内に、敵を出現させるための「Spawner」というセットが入っているので、これを使ってみようと思います。
が、しかし…
敵は出現するものの、上から下へ「ストン!」と落ちたまま動かない…。
悩んだ結果、「Prefabs」→「Characters」フォルダに入っている敵オブジェクトを調べてみました。
「Enemy」というスクリプトが貼られているようなので、ちょっと見てみることに…。
基本的にJavascriptを少しかじっているだけなので、C#はほとんど分かりませんが、だいたいの命令は同じだろう…ということで調べてみたわけです。
結果…、初期設定の部分で「body」「frontCheck」「Score」オブジェクトを読み込んでいるようでした。
だけど、敵のオブジェクトには、「body」「frontCheck」はあるけど、「Score」オブジェクトが無い…。
この「Score」オブジェクトのコードを削除しても良かったけど、スコアを表示してくれるようなので、どうせならこのコードを活かせる方法を思案してみた。
恐らく、この「Score」オブジェクトは、自前のモノだろうと予想して、とりあえずデフォルトで用意されているプロジェクトを実行してみます。
(このプロジェクトは、あらかじめ「2D入門セット」に用意されているものです…。)
すると、やっぱりありました!
「UI」というオブジェクトにまとまっているので、これをそのままドラッグ&ドロップで頂くことにします。
そして、元のプロジェクトに戻してから、先ほどゲットした「UI」フォルダを追加します。
そして、実行すると…、
動きました〜!(しかも、スコア付き!)
ただ、このままだと、敵は右方向へ走っていくだけなのでした…。
敵がステージに滞留するようにする!
先ほど、敵のオブジェクトに貼られていた「Enemy」スクリプトを、もう少し調べてみます。
すると、「Obstacle」(障害物)というタグに接触すると、「Flip()」というプログラムが動くようになっているようです。
で、この「Flip()」はどんな内容なのか見てみると、どうやらX軸方向に動いている敵を反転させる処理のようです。
つまり、障害物に敵がぶつかると、クルッと反転して反対方向に進むようになっているみたいです。
なので、ひとまずステージの両端に障害物となるオブジェクトを追加してみます。
今回も、用意されているオブジェクトを使いましょう。
「Sprites」→「Environment」フォルダに入っている、タワーの画像を追加してみました。
前回学んだように、レイヤーは「手前の表示」となるように、今回は「Foreground」のグループに設定しておきます。
ついでに、当たり判定もいるので「Box Collider 2D」を貼り付けて調整します。
そして、忘れないように「Obstacle」のタグを両方に付けておきます。
そして、プロジェクトを実行すると…、しっかりと敵が反転して進むようになりました!
あとは、「Spawner」をいくつか配置すれば、敵の出現はOKでしょう。
今度は、プレイヤーの設定が必要です。
今の状態だと、敵に接触すると変な挙動になるので…。
プレイヤーの調整をする!
さて、プレイヤーの設定ですが、インスペクタをよく見てみると「Player Health」というスクリプトが貼り付けられているのが分かります。
名前からして、体力ゲージみたいな印象ですが、中身をちょっと見てみることに…。
で…、やはり、敵と接触するとダメージを受けて、体力メーターが減少していくような処理みたいです。
で、冒頭の初期設定を見ると「HealthBar」というオブジェクトを読み込んでいるのが分かります。
そこで、「Prefabs」→「UI」フォルダの中身にある「ui_healthDisplay」セットを追加します。(この中に「HealthBar」があります)
そして、実行するとプレイヤーの頭上付近に、体力メーターが表示されるようになりました。
ちなみに、体力メーターの位置は以下のように調整できるようになっているので、ちょうど良いところに配置するようにします。
これで実行すると、敵に触れる度に体力が減少していき、ゼロになると死んでしまうようになりました。
ゲームをループさせる!
このままでもゲームとしては遊べますが、プレイヤーの体力が無くなってしまうと、それ以降ゲームを続けることが出来ない状態です。
そこで、ゲームを繰り返し遊べるようにするスクリプトが、ゲットした入門セットに入っていると思ったので探してみました。
結果…、「Remover」というスクリプトが、ゲームをリロードする処理みたいなので、使ってみることにします。
で、このRemoverスクリプトを使用しているオブジェクトが、「Kill Trigger」というモノみたいでした。
なので、ヒエラルキーに追加します。
すると、当たり判定用の緑色の枠線が表示されるので、地面下に配置します。
ちなみに、この緑色の枠線はColliderなので、見えない場合はメニューの「Gizmos」から、「BoxCollider2D」にチェックが入っているかを確認しましょう。
そして、先程のRemoverスクリプトをもう少し確認すると、どうやらメインカメラに貼り付けた「CameraFollow」というスクリプトも関係あるみたいでした。
なので、メインカメラに「Camera Follow」スクリプトを貼り付けます。
これで、完成です!
プレイヤーの体力がゼロにったら、2秒後に一旦リセットされてもう一度最初からプレイできるようになりますよ!
そんなわけで、敵の出現位置・数を再度調整して、非常にザックリ作ったミニゲームを作ったわけですが、如何だったでしょうか?
今回、初めて2Dに挑戦しましたが、まだまだ使っていない機能がたくさんあって、勉強することも多い感じがしました。(特にスプライト関係)
ただ、今回Asset Storeから入手した「入門セット」が、非常に役に立つのでもうちょっと詳しく分析していこうと思います…。
さて、次は何を作ろうかな。
★前編の記事はこちら!
Unity4.3の2D機能を使い、2時間程でミニゲームを作ったので手順公開!(前編) - Unity不定期便
Unityのミニゲーム作りが載っているベスト書籍
Unityで作るスマートフォン3Dゲーム開発講座 Unity4対応 (SMART GAME DEVELOPER)
- 作者: 夏木雅規,寺園聖文
- 出版社/メーカー: 翔泳社
- 発売日: 2013/02/15
- メディア: 大型本
- 購入: 1人 クリック: 1回
- この商品を含むブログ (6件) を見る
Unity入門 ~高機能ゲームエンジンによるマルチプラットフォーム開発~
- 作者: 高橋啓治郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/10/01
- メディア: 大型本
- 購入: 15人 クリック: 609回
- この商品を含むブログ (22件) を見る