マルチバレルエネルギーシステムの実装方法は?

横スクロールアクションゲームで、以下のようなシステムを実装するにはどうすればよいでしょうか?

エネルギーは3本あり、キャラクターが特殊攻撃を行うたびに1本消費します。システムは時間をかけてエネルギーを徐々に回復させ、1本目が満タンになったら次に2本目、その後に3本目と順に回復していきます。また、キャラクターの攻撃が命中した際には、追加でエネルギーが回復する仕様も追加したいと考えています。

このようなシステムはどのように実装すればよいでしょうか?

私の設計思路を説明します(もちろんGDスクリプトを使えばより簡単に実装できますが、VSでも実現可能だと思います)。

1:3つのプログレスバーを作ります。名前を「プログレスバー1」「プログレスバー2」「プログレスバー3」とします(つまり、あなたの3つのエネルギーバーです)。エネルギーが並列に配置されていれば簡単ですが、重なり合っている場合はさらに細かな処理が必要になるかもしれません。

  プログレスバーの設計:(1)プログレスバーの画像を表示する。
                          (2)数値を設定する。例えば、最大値を100に設定し、値はGDまたはVSのプロパティで制御できる。(VSのプロパティでプログレスバーを制御できるかどうかはここでは確信が持てません。試したことがないので。)

2:この3つのエネルギーバーを管理するグローバル変数を使う。例えば「総エネルギー」と名付ける(総エネルギーの範囲は0〜300)。

3:フレームワークを構築し、具体的な機能を実装する。
(1)特殊攻撃で1つのバーを消費:特殊攻撃——【総エネルギー】から100を減算する(【総エネルギー】が100以上のときのみ)。
(2)エネルギーの自動回復:一定時間ごとに【総エネルギー】に1を加算する(GDのprocessを使っても、VSの時間ループを使っても可能)。
(3)追加回復:追加回復をトリガー——【総エネルギー】に相当する数値を加算する。
(4)【数値のバインド】(このステップが非常に重要で、エネルギーバーの表示に直接影響します。これはGDスクリプトで行うのが便利ですが、VSでは少し検討が必要です)
(ちょうど簡単な方法を思いつきました:(フレームごとの数値設定)
プログレスバー3の値 = 総エネルギー - 200(プログレスバー3の値が0未満の場合、プログレスバー3 = 0)
プログレスバー2の値 = 総エネルギー - 100(プログレスバー2の値が0未満の場合、プログレスバー2 = 0)
プログレスバー1の値 = 総エネルギー(プログレスバー1の値が0未満の場合、プログレスバー1 = 0)
総エネルギーについてもフレームごとの数値制限を忘れないでください:総エネルギーが300を超える場合は300に、0未満の場合は0に設定)
(5)これで、プログレスバーは自身の数値に基づいて進行状況を表示するため、数値をバインドすれば自動的に視覚的な増減が行われます。)

「いいね!」 2

私の提案としては、いったんこのシステムを置いておいて他のことをし、2.0のサブレイヤーシステムがリリースされたら、サブレイヤーを使って3つの条件で返信を完結させることです。

現在、スクリプトを使わない場合、ビジュアルスクリプトではサブスクリプトをアタッチするのがこの機能の限界ですが、サブレイヤーが実装されれば自由に作成できるようになります。