こんにちは。
訳あってゲーム制作が全然進んでません!(後述します)
しかし前回の記事の続きがまだなのでそれをやっていきましょう。
前回の↓
RPGツクールMZで勝手に数が増えていくアイテムを作るっていう内容でしたね。
そのために増やす数の根拠となる行動数や時間をカウントする必要があるので 例として歩数やイベントによってアイテム数を増やしていくっていうのを前回やりました。
今回は時間の経過によって数を増やすっていうのをやります。
※単純に思いついた方法を書いています。これだけが正しいとかそういうのではありません。
前回から残っている内容は以下の2つ。
A.常にカウントする方法
B.時間を取得する方法
A.が私が採用した方法で最もシンプルです。
前回 歩数によって数を増やす方法では並列処理を使って数秒毎に歩数計測をしましたが、これと同じようにして数秒毎に直接アイテム数を増やしてしまうっていうもの。
歩数計測・計算の部分をアイテム増にしてしまうだけ。
はい、完成。 例ではスイッチ1が入っている間ずっと 300フレーム(5秒)毎にアイテム数が1増えることになります。
私が制作しているゲーム内の回復するアイテムの数は変数で管理しているので実際は変数の処理(最大所持数の制御)が入ってます。
一応参考までに載せときます↓
こんな感じ。600フレーム毎に1増え、最大所持数は10。所持数が10のときは60フレーム毎に数え直す。
こういった変数の最大値の制御だったり並列処理の使い方だったりは「キー入力キング」でも身につくので興味がある方はぜひどうぞ↓
次にB.の時間を取得する方法。
A.ができりゃそれでいいじゃん、と思う方もいるかも知れませんが計測したい間隔が数十分や数時間など長時間になってくるとA.の方法ではかなりの誤差を持ってしまいます。端末の処理速度によって1秒が60フレームにならないからです。
例えば30分後に全回復、としたハズが35分経っても回復してなかったり、毎回時間が異なるというような不具合が想定されます。
なのでそういうケースは端末内の時間を取得するのが解決策の1つだと思います。ゲーム端末がPCならPCの時計の時間をゲームデータとして扱うってこと。
取得はスクリプトを使います。変数の操作、スクリプト代入で下のように書くと端末の現在日時を取得できます。
そして歩数の計算のときのように現在値から開始値を引いて経過時間を算出し、その値次第でアイテム数を増やすようにするのです。
期間算出の例。試してみたところ日時-日時はミリ秒が返ってくるっぽいので最後に1000で割ることで期間(秒)を算出、変数Termに格納しています。
このあと歩数のときと同様に期間の値次第でアイテム数が増加するようにし、次回の計算用に計測開始値を変数に格納。
例は10分(600秒)でアイテム1回復。期間が長いので余り計算は必須。これがないと計算間隔が10分以上でないと永遠にアイテムは回復しませんし、そうでなくても数分もの誤差を生むことになります。
あとはこれの呼び出し方。要所で呼び出すか、並列処理で定期的に呼び出すか。これまた歩数のときと同じですね。
この方法だとA.よりも長期間に対応できます。
もう1つ大きな違いはゲームを起動していなくても経過時間になるということ。あえてこの方法で現実時間とリンクしたゲームにするっていうのもアリですね。
但し端末の時間を弄るとゲームに影響してしまうのでその点はご注意を。
ネット上の時間(サーバータイム?)を取得するっていうプラグインもどうやらあるようです(ブラウザ版のみ)。
まとめ
自動で増えるアイテムの作り方で思いついた4つの方法です。
①イベントに応じて増やす
②歩数に応じて増やす
③フレーム毎に増やす
④経過時間で増やす
作る上で一番カンタンなのは③、それぞれの特性を踏まえゲーム内容によって①②④もアリ、って感じでしょうか。何かの参考になれば幸いです。
らくがきでおしまい。
何気なく描き始めたらくがきですが全然思うように描けず。
色塗る→「違うな…」→線を直す→色塗る→「違うな…」 を永遠と繰り返してました。
というわけでここ数日の制作の進捗はナシ!(∩´∀`;) らくがきは一旦置いとくか。