作ろうとした機能
トルネコとかのローグライクゲームは、起きてランダムに動き回っている敵と眠っていて近づくまで動かない敵がいます。
それにならって、プレイヤーが一定範囲内まで近付かないと敵が気付いて襲ってこない機能を作ろうと思いました。
今までは、敵はずっとこちらに気付いていて一直線に走ってくる状態だったんで、それが嫌だったんです。
バグ
上記の機能を付け足すとバグりました。
移動キーを一回入力するだけで壁にぶつかるまで移動してしまいます。
その上、マップスクロールすら行われず、画面外に出てしまいます。
このバグですが、何回検証してもバグの動作が確定しなくて、ソースコードのどの部分が原因なのかすら分からずにいました。
付け足した機能を消せば元に戻りますが、それではいつまで経っても完成しないので、新しい機能がソースコードのどの部分に干渉しているのかを突き止める必要があります。
いろいろ探し回っているうちに1ヶ月くらい経ったのですが、今日とうとう見つけました。
この映像見たときピンときましたね。
- 最初はマップスクロールしたのにその次はしてない。
- マッピングのバグと入力バグがあるのに、通路の途中で止まる。
あっこれプレイヤーのTweener処理終わる前にキー入力入っちゃってる!
たったこれだけのことでした。
バグの動作が安定しないのは、入力のタイミングがバラバラだからです。Tweener処理が終わった後コンマ数秒遅延が発生することがあるのですが、その遅延が一定じゃないんです。CPUの状態でだいぶ変わります。遅延することもあればしないこともあって、そのせいで動作が安定してませんでした。
クソみたいなバグです。
気が狂いそう。
マジでなんで気がつかなかったんだろう。
なにはともあれやっとできました。
プレイヤーは行動してますが、左上の敵は移動してません。敵がプレイヤーを見つけられていないからです。
これが作りたかった。
残り1週間もないですが、10月で完成させる予定なので階層を10層減らしてなんとか完成まで漕ぎつけようと思います。