プログラミング日誌10~修正・追加の山~

 前回からかなり修正と追加を加えてもはやどこをいじったかすべて把握するのが難しくなってしまいました...
できる限り思い出してお伝えできればと思います


まずは前回からの目標①の体力バーです
左上のバーがそうです
player変数に現在の体力だけでなく最大の体力を指定しました
そしてライフバーを描画するための関数を設定し、そこに変数から体力を呼び出しています
ダメージを受けると現在体力を参照にゲージも減ります

体力に関連して回復スポットまで作っちゃいました
        var healUsed = false;//回復を使ったかどうか
        var healStage = 2;
        var healX = 1;
        var healY = 18;
まずグローバル変数に回復に必要なものを入れました
書いてある通り回復を使ったかどうかを判断する変数と回復する座標です
            //回復の関数
            if (
                !healUsed &&
                stage === healStage &&
                syujinnkou.px === healX &&
                syujinnkou.py === healY
            ) {
                syujinnkou.life = syujinnkou.maxLife;
                healUsed = true;
            }
指定した座標に入ると体力バーで使った最高体力を参照し主人公のライフを最高体力に変更します
そしてhealused変数をfalseからtrueにすることで今後使えない一回だけの回復スポットにしています

次に目標②だったモンスターの最終調整です
モンスターの体力に関してはまだ調整したいところがあるので倒しやすいように1にしたままです
以前からガーゴイルやゴーレムにあたるとゲームがフリーズする、主人公が透明化して動かせなくなるというバグに遭遇しました
これが厄介で前回の投稿から時間が空きました
ここがもうよくわからないんですよ
AIに聞きつつ、自分で調べつついじくりまわしてたら気づいたら直ってました
一つ確かなのは当たり判定の部分でおかしくなっていたということです
エラーが消えたうえに特に不具合もなくなったのでよしとしましょう
ガーゴイルとゴーレムの他に悪魔がいるんですけどこいつをかなり進化させました
真ん中の悪魔を倒さないと左右の悪魔が永遠に復活するという感じにしました
RPGじゃおなじみですね
このプログラムを解説します
まず
var devil1Killed = false;
個の変数を追加して悪魔が倒されたかどうかを判断します
            //悪魔のための関数
            function devilRespawn(devil) {
                if (!devil.dead) return;//死んでいるか
                if (!devil.canRespawn) return;//復活していい状態か
                devil.respawnTimer--;   //復活までの残り時間
                if (devil.respawnTimer <= 0) {
                    devil.dead = false;
                    devil.canRespawn = false;
                    devil.life = devil.maxLife;
                     // 初期位置に戻す
                    devil.px = devil.startX;
                    devil.py = devil.startY;
                }
            }
まず上二行で生きているかどうか判断してこの関数を進めるかどうか判断します
そして死んでいたら復活までのカウントダウンが始まります
    if (pmonster === 悪魔1) {devil1Killed = true;}
    if (
        (pmonster === 悪魔2 || pmonster === 悪魔3) &&
        !devil1Killed
    ) {
        pmonster.canRespawn = true;
        pmonster.respawnTimer = 120;
    }
そして当たり判定の部分にこのコードがあります
悪魔1が倒されたかどうかを記録・悪魔2、3は条件付きで復活可能にするという処理を行っています
悪魔1が倒されない限りdevillkilledはtrueにならないので悪魔2、3条件が満たされ復活できるというわけです

まだなんか触ったところがあったような気がしますがいったん今回はこれぐらいにします
次回は他のファイルと連結させて一つのゲームにします
またこのファイルとのストーリーでのつながりを出すために、以前作った研究ノートでのプログラムをもっと改良していきます
それではまた

コメント

このブログの人気の投稿

プログラミング日誌1~卒論に向けて~

プログラミング日誌3~マップの解説~

プログラミング日誌2~ストーリーの変更~