GameCreate

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

投稿日:2017年12月24日 更新日:

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

今日はクリスマスイヴですが、やっと制作もひと段落したので、

こんな日ですが「小さなタップゲーム開発Part4」更新していきます。

 

前回までで、ゲーム開始時に「ぽよたま」を5匹配置するよう命令し、

さらにタップすることで「ぽよたま」は倒され、魔王に経験値が入るようになりました。

 

タップで「ぽよたま」を倒したあとは、なんの設定もしていないので、

「ぽよたま」を5匹全部倒してしまうと魔王はもう経験値を得ることができません。

そこで、今回は「ぽよたま」を一定時間おきに新しく生成する仕組みを埋め込みます。

 

 DateTime機能を使い時間を取得

経過した時間を取得する為にデータタイムを使います。

まずは、定数と変数を定義します。

//定数
private const int RESPAWN_TIME = 1;
//変数
private int currentMob = 0;
private DateTime lastDateTime;

モンスターがリスポーンする時間を1秒、currentMobは現在のモンスターの数、

データタイム型で、ラストデータタイムを定義しておきます。

 

次に、スタート関数の中に先ほど定義した変数を入れます。

currentMob「0」に設定してありましたが、スタート時に「5」に変更します。

さらに、for文の中の記述をMAX_MOBからcurrentMobに変更します。

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

さらに、定義しかされていなかったlastDateTimeの初期設定をします。

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

 ★       lastDateTime = DateTime.UtcNow;
        
        RefreshScoreText ();
        
    }

これでゲームスタート時の初期設定は終了です。

 

新しいモンスターを生成するメソッドを追加

次に新しくモンスターを生成するメソッドを追加します。

この中で記述するのは、lastDateTimeを更新し、currentMobを1つ増やす。

そして、CreateMobメソッドを呼び出すことです。

    public void CreateNewMob(){
        lastDateTime = DateTime.UtcNow;
        if(currentMob >= MAX_MOB){
            return;
        }
        CreateMob ();
        currentMob++;
    }

実際にモンスターを生成するメソッドはあくまでCreateMobメソッドです。

さらに、currentMobを1つ増やしたので、モンスターをタップして倒した時に1つ減らしましょう。

モンスターをタップした時に呼ばれるメソッドはGetMobです。

 

    public void GetMob(){
        score += 1;
        RefreshScoreText ();
★        currentMob–;
    }

 

経過した時間をチェックし、モンスターを増やす

最後に、経過時間に応じてモンスターを増やす記述をします。

アップデート関数は一定おきに呼び出される関数なので、その中に記述をしていきます。

    void Update () {
        if(currentMob < MAX_MOB){
            TimeSpan timeSpan = DateTime.UtcNow  lastDateTime;

            if(timeSpan >= TimeSpan.FromSeconds(RESPAWN_TIME)){
                while (timeSpan >= TimeSpan.FromSeconds (RESPAWN_TIME)) {
                    CreateNewMob ();
                    timeSpan -= TimeSpan.FromSeconds (RESPAWN_TIME);
                }
            }
        }
    }

一見複雑な内容に見えますが、実際はそんなに難しくなく、

現在のモンスターの数が、MAX_MOBをこえていないかをチェックし、

現在の時刻と、lastDateTimeの時刻を比較して、

RESPAWN_TIMEをこえたらCreateNewMobを呼び出しています。

 

これでモンスターをタップで倒すと1秒後にモンスターがリスポーンするようになりました。

変数をいじることにより、ゲーム内の設定を色々いじれますので、やってみてください。

 

本日の目標は達成したので、以上です。

今回はスクリプトの記述ばかりで難しく感じたと思いますが、よければ今後もお付き合いください。

 

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

スポンサーリンク

-GameCreate

執筆者:


comment

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

関連記事

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

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

【制作】タップ × ノベルゲーム 「魔王の秘密」(製品版リリース)

こんにちは、PORTABLE SHELL ぽたぼぅ です。 ついに(2018/01/25)に「Android」版「魔王の秘密」をリリースいたしました。 1週間ほどたった(01/31)に1度目のアップデ …

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

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

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

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

【Unity】ジョーカースクリプトで簡単にノベルゲームは作れる

こんにちは、PORTABLE SHELL ぽたぼぅ です。 今回はノベルゲームの開発にぴったりのゲームエンジン、「ジョーカースクリプト」について記事を起こしていきます。 実は「魔王の秘密」のノベルパー …

プロフィール


プロフィール

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

カテゴリー

プライバシーポリシー

【著作権について】

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