UIの作り方講座 自作メニュー編パラメータを変化させる

ステータス画面でパラメータを3段階で増減させる仕組みの作り方を紹介します。

まずは、先ほどのステータスを表示させるオブジェクトに、ATK、DEF、SPDへのカーソル移動を追加します。

アニメーションの作成

今回はこちらの画像を登録します。

オブジェクトの作成

図のようにアクション/リンクを追加します。

赤矢印 OKボタンを押した瞬間 and 共通変数/menu = 1、アクションを切り替え
緑矢印 CANCELボタンを押した瞬間 and 共通変数/menu = 1、アクションを切り替え
黒矢印 ↓ボタンを押した瞬間 and 共通変数/menu = 1、アクションを切り替え
白矢印 ↑ボタンを押した瞬間 and 共通変数/menu = 1、アクションを切り替え
[status_rubbit(ATK)][status_rubbit(DEF)][status_rubbit(SPD)] 共通変数/status = 1.00
[status_turtle(ATK)][status_turtle(DEF)][status_turtle(SPD)] 共通変数/status = 11.00

続いて、ATKの位置にカーソルがあるとき、→を押したら攻撃力が上がり、←を押したら攻撃力が下がる処理を作ります。ステータスを増減させるには、変数を使います。

変数

ステータスのランクをカウントする変数を作成します。

共通変数/rabbit_ATK ウサギの攻撃力ランクをカウントする変数
共通変数/rabbit_DEF ウサギの防御力/HPランクをカウントする変数
共通変数/rabbit_SPD ウサギの移動速度/ジャンプ力ランクをカウントする変数
共通変数/turtle_ATK カメの攻撃力ランクをカウントする変数
共通変数/turtle_DEF カメの防御力/HPランクをカウントする変数
共通変数/turtle_SPD カメの移動速度/ジャンプ力ランクをカウントする変数

シーン毎にプレイヤーオブジェクトを配置している場合、パラメータはリセットされます。 そのため、ステータスを記憶する変数を作成する必要があります。 変更したパラメータを維持したい場合や、弾の攻撃力を上げたい場合は、このように初期アクションで変数を変更する必要があります。

※今回は使いませんが、今回の場合、6つの変数を作る必要があります。

共通変数/[任意の名前] ウサギの攻撃力を記憶する変数
共通変数/[任意の名前] ウサギの防御力/HPを記憶する変数
共通変数/[任意の名前] ウサギの移動速度/ジャンプ力ランクをカウントする変数
共通変数/[任意の名前] カメの攻撃力ランクを記憶する変数
共通変数/[任意の名前] カメの防御力/HPランクを記憶する変数
共通変数/[任意の名前] カメの移動速度/ジャンプ力ランクを記憶する変数

アクション/リンクの追加

情報量が多いので先に画像をお見せします。

[status_rabbit(ATK+)]

こちらは、攻撃力のランクを1段階上げる処理になります。 共通変数/rabbit_ATKの値に1を足します。

共通変数/status = 1.00 カーソル位置把握用の変数
共通変数/rabbit_ATK += 1.00 パラメータのランク管理用変数

必要に応じて、プレイヤーオブジェクトの攻撃力を上昇させます。

(例)
プレイヤーのオブジェクト/最小攻撃力 += [変更したい数字] 攻撃力を増加させる
プレイヤーのオブジェクト/最大攻撃力 += [変更したい数字] 攻撃力を増加させる必要に応じて、初期値用に攻撃力の値を記憶します。
共通変数/[任意の名前] = プレイヤーのオブジェクト/最大攻撃力 ウサギの攻撃力を記憶する変数

[status_rabbit(ATK+)]

こちらは、攻撃力のランクを1段階下げる処理になります。共通変数/rabbit_ATKの値から1を引きます。 共通変数/status = 1.00、共通変数/rabbit_ATK -= 1.00 必要に応じて、プレイヤーオブジェクトの攻撃力を減少させます。

(例):プレイヤーのオブジェクト/最小攻撃力 -= [変更したい数字]
プレイヤーのオブジェクト/最大攻撃力 -= [変更したい数字]

必要に応じて、初期値用に攻撃力の値を記憶します。

(例):共通変数/[任意の名前] = プレイヤーのオブジェクト/最大攻撃力:ウサギの攻撃力を記憶する変数

[status_rabbit(ATK)]→[status_rabbit(ATK+)]

3段階なので、rabbit_ATKの最大値が3となるようにリンクの条件を作ります。 共通変数/rabbit_ATKの値が1、2なら遷移して、3なら遷移しないような条件にします。


[→が押された瞬間] and [共通変数/menu = 1.00]、[共通変数/rabbit_ATK < 3.00]
[status_rabbit(ATK)]→[status_rabbit(ATK-)]


3段階なので、最小値が1となるようにリンクの条件を作ります。 共通変数/rabbit_ATKの値が2、3なら遷移して、1なら遷移しないような条件にします。


[←が押された瞬間] and [共通変数/menu = 1.00]、[共通変数/rabbit_ATK > 1.00] [status_rabbit(ATK+)][status_rabbit(ATK-)]→[status_rabbit(ATK)]  無条件で切り替え

同様に、他の2つのステータスについてもアクションを追加します。

[status_rabbit(DEF+)] 共通変数/status = 1./rabbit_DEF += 1.00、(プレイヤーオブジェクトの変数を変更など)
[status_rabbit(DEF-)] 共通変数/status = 1.00、共通変数/rabbit_DEF -= 1.00、(プレイヤーオブジェクトの変数を変更など)
[status_rabbit(SPD+)] 共通変数/status = 1.00、共通変数/rabbit_SPD += 1.00、(プレイヤーオブジェクトの変数を変更など)
[status_rabbit(SPD-)] 共通変数/status = 1.00、共通変数/rabbit_SPD -= 1.00、(プレイヤーオブジェクトの変数を変更など)
[status_rabbit(DEF)]→[status_rabbit(DEF+)] [→が押された瞬間] and [共通変数/menu = 1.00]、[共通変数/rabbit_DEF < 3.00]
[status_rabbit(DEF)]→[status_rabbit(DEF-)] [←が押された瞬間] and [共通変数/menu = 1.00]、[共通変数/rabbit_DEF > 1.00]
[status_rabbit(DEF+)][status_rabbit(DEF-)]→[status_rabbit(DEF)] 無条件で切り替え
[status_rabbit(SPD)]→[status_rabbit(SPD-)] [←が押された瞬間] and [共通変数/menu = 1.00]、[共通変数/rabbit_SPD > 1.00]
[status_rabbit(SPD+)][status_rabbit(SPD-)]→[status_rabbit(SPD)] 無条件で切り替え

ステータス表示用のオブジェクト

statusの値が1と11で異なるアイコンを表示させ、さらに、ATKの値に応じてアイコンの表示数を増減させる条件を作成します。

[if status = ?,ATK = ?]→[status = 1.00,ATK=1.00] その他の条件:[共通変数/status = 1.00] and [共通変数/rabbit_ATK = 1.00]
[status = 1.00,ATK=1.00]→[if status = ?,ATK = ?] その他の条件:[共通変数/status ≠ 1.00] or [共通変数/rabbit_ATK ≠ 1.00]
[if status = ?,ATK = ?]→[status = 1.00,ATK=2.00] その他の条件:[共通変数/status = 1.00] and [共通変数/rabbit_ATK = 2.00]
[status = 1.00,ATK=2.00]→[if status = ?,ATK = ?] その他の条件:[共通変数/status ≠ 1.00] or [共通変数/rabbit_ATK ≠ 2.00]
[if status = ?,ATK = ?]→[status = 1.00,ATK=3.00] その他の条件:[共通変数/status = 1.00] and [共通変数/rabbit_ATK = 3.00]
[status = 1.00,ATK=3.00]→[if status = ?,ATK = ?] その他の条件:[共通変数/status ≠ 1.00] or [共通変数/rabbit_ATK ≠ 3.00]
[if status = ?,ATK = ?]→[status = 11.00,ATK=1.00] その他の条件:[共通変数/status = 11.00] and [共通変数/turtle_ATK = 1.00]
[status = 11.00,ATK=1.00]→[if status = ?,ATK = ?] その他の条件:[共通変数/status ≠ 11.00] or [共通変数/turtle_ATK ≠ 1.00]
[if status = ?,ATK = ?]→[status = 11.00,ATK=2.00] その他の条件:[共通変数/status = 11.00] and [共通変数/turtle_ATK = 2.00]
[status = 11.00,ATK=2.00]→[if status = ?,ATK = ?] その他の条件:[共通変数/status ≠ 11.00] or [共通変数/turtle_ATK ≠ 2.00]
[if status = ?,ATK = ?]→[status = 11.00,ATK=3.00] その他の条件:[共通変数/status = 11.00] and [共通変数/turtle_ATK = 3.00]
[status = 11.00,ATK=3.00]→[if status = ?,ATK = ?] その他の条件:[共通変数/status ≠ 11.00] or [共通変数/turtle_ATK ≠ 3.00]

同様に、DEF、SPDについても作成し、メニューシーンに貼り付けましょう。 画像調整のために、一時的に「出現時のアクション」を変更するのをオススメします。 戻し忘れにだけ注意しましょう。

実際に動かしてみましょう。 変数の増減は[F1]キーを押して、デバッグ機能から確認してみましょう。

[status_rabbit(ATK+)]

こちらは、攻撃力のランクを1段階下げる処理になります。共通変数/rabbit_ATKの値から1を引きます。 共通変数/status = 1.00、共通変数/rabbit_ATK -= 1.00 必要に応じて、プレイヤーオブジェクトの攻撃力を減少させます。

(例):プレイヤーのオブジェクト/最小攻撃力 -= [変更したい数字]
プレイヤーのオブジェクト/最大攻撃力 -= [変更したい数字]

必要に応じて、初期値用に攻撃力の値を記憶します。

(例):共通変数/[任意の名前] = プレイヤーのオブジェクト/最大攻撃力:ウサギの攻撃力を記憶する変数

スキルポイント範囲内でパラメータを変化させたい

まずはスキルポイント用の変数を準備します。 キャラクターごとにポイントを共通にする場合は変数を一つ、別々にする場合は複数の変数を作成してください。

  • 共通変数/rabbit_point
  • 共通変数/turtle_point

次に、攻撃力がランクアップしたときにスキルポイントを1消費し、ランクダウンしたときにスキルポイントを1回復するように作ります。

[status_rabbit(ATK+)] [共通変数/rabbit_point -=1]
[status_rabbit(ATK-)] [共通変数/rabbit_point +=1]

最後に、スキルポイントが0のとき、攻撃力をアップさせない条件を追加します。

[status_rabbit(ATK)]→[status_rabbit(ATK+)] [共通変数/rabbit_point > 0]を追加、[すべての条件が満たされていたら切り替え] に変更

DEF,SPDについても同様に追加します。尚、カメの方は「rabbit_point」の部分を「turtle_point」に置き換えます。

これで完成です。