開発日誌

すべての記事

[ 天下御免!からくり屋敷 ] [ テクニック ] 今週のハマり

2012-06-07 21:50:47

怒濤の日々が過ぎ、ようやく少し落ち着いたので、『天下御免!からくり屋敷』の制作を再開しました。

が、再開早々、バグに悩まされました。

蘇生魔法を使ってくる敵が出てくるのですが、生き返った敵のグラフィックが、なぜか表示されないという問題が…。気配はあれど、姿は見えず。攻撃でダメージを与えると、ようやく姿を現します。

エネミーの表示関係は特に手を着けていないはずなのに、おかしいなと思っていろいろスクリプトを追ってみたところ、ようやく原因が判明しました。

  • 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のようです。とりあえず、後者で修正しましたが、戦闘高速化もたまに高速すぎて、何が起こったのか把握できないことがあるため、ウェイトの値を一律半分にしている現在の高速化方法は、見直した方がいいのかも。

コメント
お名前
コメント
※ 確認画面はありません。