「巨乳巫女痴漢電車」製作日記技術編 スクロール処理

電車が駅に停車したり発車したりするようになりました~。スクロール処理が非常に難儀で、さらにCF2.5にありがちな独自仕様のおかげで3日かかりました…

スクロール処理について

ここでは私の例として、電車がガタンゴトン動いている風にスクロールさせるやり方を紹介します。
CF2.5では、ある目的に対してのアプローチは複数取れます。これが正解とかでは無いのであくまで参考程度にお願いします1)ちなみにみんな大好きPythonは1つの目的に対しては1つのやり方だけがあるべきだという思想です

基本

スクロールさせたいフレームの仮想の幅を-1にする

最大でも画面幅までしかスクロールは出来ません。ですが仮想の幅を-1にすることで、無限大にスクロールさせることが出来るようになります。

距離を正確に測定して駅に停車させる…とかではなければ-1にして楽をしましょう。

スクロールさせたいレイヤのx係数を0.05とかに設定する

逆にスクロールさせたくないレイヤはx係数を0に設定しておきます。

これで、背景だけがスクロールするようになります。電車そのものを動かしてはいけません。奈落に落っこちますw

電車の減速 – 停止 – 待機 – 加速の処理

実装の前に

いよいよ本題に入ります。電車の減速や加速を制御するレイヤのx係数は直接値を弄るのではなく、グローバル変数を作成して、それを常に実行で代入することで管理します。
直接レイヤのx係数を減算してもいいのですが、x係数が0になるとアンダーフローを起こして変な動作しますので、グローバル変数で管理するようにしたほうが良いです。

気をつけてほしいのが、グローバル変数では小数を扱えません。この辺もCF2.5の不可解な仕様ですね。
なので初期値が0.05の場合はグローバル変数に5を初期設定しておきます。そして以下のような計算式で無理やり小数を表現しましよう。

x係数 = グローバル変数 * 0.01

で小数が求められますので、これでやり過ごしましょう。なぜか

x係数 = グローバル変数 / 100

だとバグって動かなくなりますw

減速の処理

徐々にx係数を減算していきましょう。
ですが直接弄るとアンダーフロー起こしますのでグローバル変数を変更するのを忘れないようにしましょう。

停止中

止まっている間に敵を出現させたりしましょう。gifアニメでドアの開閉を再現すると楽しいですよ!

加速

基本的に減速の逆です。加速が終わったら通常の処理に遷移させる処理を入れましょう。
変数の初期化など、お掃除の時間です。誤動作を起こしやすいので停車関連の処理を全てグループにまとめて、加速後に非アクティブにしときましょう。

今日のおかず

野上菜月のなまのおと!アドリブバイノーラル4つ

寝ながら聴きましょう!

    脚注   [ + ]

    1. ちなみにみんな大好きPythonは1つの目的に対しては1つのやり方だけがあるべきだという思想です

    “「巨乳巫女痴漢電車」製作日記技術編 スクロール処理” への2件の返信

    1. おお、どのような感じにスクロールするのかずっと気になってたのですが
      マップはこのような使用になったのですね!

      1. ひまさん
        コメントありがとうございます!

        正直スクロールに関しては、CF2.5では無理なのかな~と思っていた処理だったのですが、意外とこなしてくれますねw

        開発ツール毎に得手不得手があるので、慣れてきたらツールの良いところを活かしてそこを重点的に伸ばしていくような開発方針にしています。

    コメントを残す

    メールアドレスが公開されることはありません。