怒濤の日々が過ぎ、ようやく少し落ち着いたので、『天下御免!からくり屋敷』の制作を再開しました。
が、再開早々、バグに悩まされました。
蘇生魔法を使ってくる敵が出てくるのですが、生き返った敵のグラフィックが、なぜか表示されないという問題が…。気配はあれど、姿は見えず。攻撃でダメージを与えると、ようやく姿を現します。
エネミーの表示関係は特に手を着けていないはずなのに、おかしいなと思っていろいろスクリプトを追ってみたところ、ようやく原因が判明しました。
- Sprite_Battlerで、ダメージを受けた際に、20フレーム間、点滅エフェクトがかかる。
- @effect_duration変数で、19から0までカウントダウンしている。
- 点滅エフェクトを実装しているupdate_blinkメソッドでは、
self.visible = (@effect_duration % 10 < 5)
となっており、@effect_duration変数の下1桁が0〜4の時に表示、5〜9の時に非表示となる仕組み。 - ところで、戦闘高速化を施したため、ダメージを受けた際のウェイトを、30フレームから半分の15フレームにしていた。(Scene_Battleのdisplay_hp_damageメソッド)
- このため、点滅エフェクトの20フレームのうち、15フレーム目、すなわちvisibleが非表示の状態で、崩壊エフェクトに移ってしまう。
こんなの、そう簡単には気付かないよ!
というわけで、ダメージを受けた際のウェイトは20フレーム以上確保するか、あるいは出現エフェクトを実装しているSprite_Battlerのupdate_appearメソッドに、self.visible = true
を入れるかすればOKのようです。とりあえず、後者で修正しましたが、戦闘高速化もたまに高速すぎて、何が起こったのか把握できないことがあるため、ウェイトの値を一律半分にしている現在の高速化方法は、見直した方がいいのかも。
コメント