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」に置き換えます。
これで完成です。