Unity不定期便

Unityエンジンを使って、いろいろ勉強したことをメモ代わりにまとめてます。

Unity4.3の2D機能を使い、2時間程でミニゲームを作ったので手順公開!(後編)

f:id:masatolan:20131214181715j:plain

前回の続きです!

とりあえず、ステージ作ってキャラクターを動かせる段階まで来ました。

↓こんな感じ…。

f:id:masatolan:20131214234005j:plain

あとは、敵を出現させて、スコアを表示させて…ゲームっぽくなるところまでひとまずやってみたいと思います。

 

敵を出現させる!

前回、Asset Storeでゲットした2D入門セットの中にある「Prefabs」フォルダ内に、敵を出現させるための「Spawner」というセットが入っているので、これを使ってみようと思います。

f:id:masatolan:20131216114142j:plain

 

が、しかし…

敵は出現するものの、上から下へ「ストン!」と落ちたまま動かない…。

f:id:masatolan:20131216114155j:plain

 

悩んだ結果、「Prefabs」→「Characters」フォルダに入っている敵オブジェクトを調べてみました。

「Enemy」というスクリプトが貼られているようなので、ちょっと見てみることに…。

f:id:masatolan:20131216114204j:plain

でも、このスクリプトC#で書かれているみたい…。

 

基本的にJavascriptを少しかじっているだけなので、C#はほとんど分かりませんが、だいたいの命令は同じだろう…ということで調べてみたわけです。

結果…、初期設定の部分で「body」「frontCheck」「Score」オブジェクトを読み込んでいるようでした。

f:id:masatolan:20131216114211j:plain

 

だけど、敵のオブジェクトには、「body」「frontCheck」はあるけど、「Score」オブジェクトが無い…。

f:id:masatolan:20131216114218j:plain

この「Score」オブジェクトのコードを削除しても良かったけど、スコアを表示してくれるようなので、どうせならこのコードを活かせる方法を思案してみた。

 

恐らく、この「Score」オブジェクトは、自前のモノだろうと予想して、とりあえずデフォルトで用意されているプロジェクトを実行してみます。

f:id:masatolan:20131216114226j:plain

(このプロジェクトは、あらかじめ「2D入門セット」に用意されているものです…。)

 

すると、やっぱりありました!

「UI」というオブジェクトにまとまっているので、これをそのままドラッグ&ドロップで頂くことにします。

f:id:masatolan:20131216114233j:plain

 

そして、元のプロジェクトに戻してから、先ほどゲットした「UI」フォルダを追加します。

f:id:masatolan:20131216114241j:plain

 

そして、実行すると…、

動きました〜!(しかも、スコア付き!)

f:id:masatolan:20131216114251j:plain

ただ、このままだと、敵は右方向へ走っていくだけなのでした…。

 

敵がステージに滞留するようにする!

 先ほど、敵のオブジェクトに貼られていた「Enemy」スクリプトを、もう少し調べてみます。

f:id:masatolan:20131216115641j:plain

 すると、「Obstacle」(障害物)というタグに接触すると、「Flip()」というプログラムが動くようになっているようです。

 

で、この「Flip()」はどんな内容なのか見てみると、どうやらX軸方向に動いている敵を反転させる処理のようです。

f:id:masatolan:20131216115647j:plain

 つまり、障害物に敵がぶつかると、クルッと反転して反対方向に進むようになっているみたいです。

 

なので、ひとまずステージの両端に障害物となるオブジェクトを追加してみます。

今回も、用意されているオブジェクトを使いましょう。

「Sprites」→「Environment」フォルダに入っている、タワーの画像を追加してみました。

f:id:masatolan:20131216120912j:plain

前回学んだように、レイヤーは「手前の表示」となるように、今回は「Foreground」のグループに設定しておきます。 

 

ついでに、当たり判定もいるので「Box Collider 2D」を貼り付けて調整します。

f:id:masatolan:20131216120918j:plain

 

そして、忘れないように「Obstacle」のタグを両方に付けておきます。

f:id:masatolan:20131216120925j:plain

 

そして、プロジェクトを実行すると…、しっかりと敵が反転して進むようになりました! 

f:id:masatolan:20131216120936j:plain

あとは、「Spawner」をいくつか配置すれば、敵の出現はOKでしょう。

今度は、プレイヤーの設定が必要です。

今の状態だと、敵に接触すると変な挙動になるので…。

 

プレイヤーの調整をする!

 さて、プレイヤーの設定ですが、インスペクタをよく見てみると「Player Health」というスクリプトが貼り付けられているのが分かります。

f:id:masatolan:20131216145724j:plain

 名前からして、体力ゲージみたいな印象ですが、中身をちょっと見てみることに…。

 

で…、やはり、敵と接触するとダメージを受けて、体力メーターが減少していくような処理みたいです。

で、冒頭の初期設定を見ると「HealthBar」というオブジェクトを読み込んでいるのが分かります。

f:id:masatolan:20131216145731j:plain

 

そこで、「Prefabs」→「UI」フォルダの中身にある「ui_healthDisplay」セットを追加します。(この中に「HealthBar」があります)

f:id:masatolan:20131216145736j:plain

そして、実行するとプレイヤーの頭上付近に、体力メーターが表示されるようになりました。 

 

ちなみに、体力メーターの位置は以下のように調整できるようになっているので、ちょうど良いところに配置するようにします。

f:id:masatolan:20131216145743j:plain

 

これで実行すると、敵に触れる度に体力が減少していき、ゼロになると死んでしまうようになりました。

f:id:masatolan:20131216150559j:plain

 

ゲームをループさせる!

このままでもゲームとしては遊べますが、プレイヤーの体力が無くなってしまうと、それ以降ゲームを続けることが出来ない状態です。

 

そこで、ゲームを繰り返し遊べるようにするスクリプトが、ゲットした入門セットに入っていると思ったので探してみました。

結果…、「Remover」というスクリプトが、ゲームをリロードする処理みたいなので、使ってみることにします。

f:id:masatolan:20131216152453j:plain

 

で、このRemoverスクリプトを使用しているオブジェクトが、「Kill Trigger」というモノみたいでした。

なので、ヒエラルキーに追加します。

f:id:masatolan:20131216152428j:plain

 

すると、当たり判定用の緑色の枠線が表示されるので、地面下に配置します。

f:id:masatolan:20131216152514j:plain

 

ちなみに、この緑色の枠線はColliderなので、見えない場合はメニューの「Gizmos」から、「BoxCollider2D」にチェックが入っているかを確認しましょう。

f:id:masatolan:20131216152525j:plain

 

そして、先程のRemoverスクリプトをもう少し確認すると、どうやらメインカメラに貼り付けた「CameraFollow」というスクリプトも関係あるみたいでした。

f:id:masatolan:20131216152542j:plain

 

なので、メインカメラに「Camera Follow」スクリプトを貼り付けます。

f:id:masatolan:20131216152821j:plain

これで、完成です!

プレイヤーの体力がゼロにったら、2秒後に一旦リセットされてもう一度最初からプレイできるようになりますよ!

 

そんなわけで、敵の出現位置・数を再度調整して、非常にザックリ作ったミニゲームを作ったわけですが、如何だったでしょうか? 

今回、初めて2Dに挑戦しましたが、まだまだ使っていない機能がたくさんあって、勉強することも多い感じがしました。(特にスプライト関係)

ただ、今回Asset Storeから入手した「入門セット」が、非常に役に立つのでもうちょっと詳しく分析していこうと思います…。

 

さて、次は何を作ろうかな。

 

★前編の記事はこちら!

Unity4.3の2D機能を使い、2時間程でミニゲームを作ったので手順公開!(前編) - Unity不定期便

 

Unityのミニゲーム作りが載っているベスト書籍
Unity4入門   最新開発環境による簡単3Dゲーム製作

Unity4入門 最新開発環境による簡単3Dゲーム製作

 

 

Unityで作るスマートフォン3Dゲーム開発講座 Unity4対応 (SMART GAME DEVELOPER)

Unityで作るスマートフォン3Dゲーム開発講座 Unity4対応 (SMART GAME DEVELOPER)

 

 

Unity入門 ~高機能ゲームエンジンによるマルチプラットフォーム開発~