2018年12月4日火曜日

自作カラコロッタ18 あにまだまについて

これまで我はチェーンボンバーのようなゲームを作っており、その連鎖やマスが消えた後の落下の処理としては、とりあえず全変数を1段階下の位置の変数にシフトさせて下にマスがあれば中断、それまで有限回操作を続けて、全てのマスに対して変数シフトが起こらなくなればそこでループ終了、ということにしていた。

しかしこれ、非常にごくまれになんかの処理落ちかは知らないが、変数がうまくシフトされないことがあったり。あと都度ピクチャを移動させるので、6ゲームモードなどになると処理が多くなり、このモードではピクチャを常時ズーム機能を使っているので一瞬もとの場所に表示されてちょっと見映えが悪い。

今回あにまだまが動く様子を動画で見てみると、なんかそのような動作ではなく、上のものほどなんか早く落ちている気がした。これはつまり裏を返せば、落下時点で着弾位置が分かっている…?
その動作にヒントを得て、すぐさま思いついたのが、この着弾地点は計算できる、ということ。

たとえば自分自身より下にn個マスがあった場合、自分の着弾位置は下からn+1マス目である。
そして演出の問題としては、重なったりしないのか、ということだが、これはたぶん同じ処理時間で移動させれば問題ないと思われる。それはまあ、処理時間内の任意の時刻で座標を時刻でパラメータ表示してその大小を比較すればいいがうまく動けばそれでいいのでわざわざ計算する必要はない。

ということであにまだまの落下処理はこれでいくことにする。

あと細かいが、本当はあにまだまの各色はHITや消滅時に口を開き、そして落下中は若干つぶれている。ということでアニメパターンを使って状況ごとにそのパターンを描画するのがこのましいが、我一人では素材の扱いがかなり大変なのでそこのところは飛ばそうと思う。
ただつぶれている、というのは縦方向の縮小でなんとかなるのでそこはやるかも。

消しだまは普通に描画して、上にアニメーションをかさんで表示すればよい。落下処理のときはこれも一緒に。
頼むからズーム機能遅延とかでピクチャが一瞬真ん中に表示されるとかやめてや…