プログラミング日誌9~細かい追加・修正点~

前回ほとんど完成したと書きましたが、バグがあったのでそれをここに記します
それに加え追加点が何個かあるのでそちらもまとめて報告します

まずバグについて
これはかなりとんでもないバグでした
モンスターは倒されたら透明=ステージから消えるという感じになっているのですが、透明になった後も当たり判定がそこに残されるというバグです
これは見た目は描画しないというプログラムは働いているのですが、当たり判定の処理がまだ残っているため起きていました
そこで
if (pmonster.dead || pmonster.life <= 0) return;
このコードを当たり判定を判断するコードの中に組み込みました
これはこのモンスターはもう存在しないものとして扱うという宣言をするコードです
ifは中の文がtrueなら実行されます
pmonster.deadはfalseだと生きている、trueだと死んでいるの二つを判断しています
pmonster.lifeはモンスターの体力を判断しておりlife<=0はモンスターが死んでいる状態を表します
そして||これはAまたはBのどちらかがtrueならtrueを表してます
でreturnはこの関数をすぐに終わらすという意味になります

これを当たり判定のプログラムの先頭に置くことで
1、この関数が呼ばれる
2、死んでいるか判断する
YES→即return
NO→当たり判定処理に向かう

モンスターが倒されるたびにこの関数が働くので当たり判定がなくなります
倒しても当たり判定が残るなんてゲームとひては致命的なミスなので早めに気づけて良かったです

続きまして追加点です
        var talkTexts = [];
        var talkone = false;
        var talkgolem = false;
        var talkend = false;
グローバル変数を3つ追加しました
talkTextsは前回から形を変更しました
まずはtalkTextsから
今までは一つしか会話が発生する場面がなかったのでここに会話の内容を入れてました
しかし内容が増えていくにあたってさすがに会話が一つだけになるはずもなく会話をするたびにtalkTextsを呼び出してそこに会話の中身を入れる使用にしました
次にtalkoneは一回だけ表示される会話ということです
これが呼び出されると今後その会話が出てこなくなります
お次はtalkgolemです
これはゴーレムをとしたときだけ会話が出るようになってます
なんで追加したかよく覚えてないのですがとりあえず追加しました
そして最後にtalkendです
これは会話の最後にファイルを変更するためのコードです
if (
            stage === 1 &&
            golemDead() &&
            !talkEvent &&
            !talkgolem
            ) {
            talkTexts = [
            "……ゴーレムを倒したか",
            "道が開かれたようだ"
            ];
            talkEvent = true;
            talkIndex = 0;
            talkgolem = true;
            talkend = false;
            }
こんな感じで使います
stageの次に座標を入れるとその座標に行く時だけ会話が出るようにもできます

今回はこれで終わりです
次回は
1体力バーの追加
2モンスターの最終調整
3seの追加
までできたらと思います
いよいよ終わりが見えてきました!
それではまた

コメント

このブログの人気の投稿

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

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

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