「ポケモンのバトルフロンティアのようなレベル変化がしたい」という質問を多く見ています。
筆者はプレイ経験がないのですが、ヒアリングによると下記のような挙動を指すようです。
- イベント参加時に、決まった条件でレベルが変化する。
- イベント終了時には、イベント参加前のレベルに戻る。
とても初歩的な実装です。
質問者が多いため、まとめ記事化します。
サンプルプロジェクト
テスト用の新規プロジェクトを作成し、ダウンロードしたZIPを解凍したデータを上書きしてから起動してください。
変数の用意
下記3つの変数を用意します。
- イベント前経験値
- 経験値変化量
- レベル変化量
レベルを下げる処理
◆文章:なし, なし, ウィンドウ, 下 :文章:レベルを25に下げます。 ◆変数の操作:#0001 イベント前経験値 = リードの経験値 ◆変数の操作:#0003 レベル変化量 = 25 ◆変数の操作:#0003 レベル変化量 -= リードのレベル ◆条件分岐:レベル変化量 < 0 ◆レベルの増減:リード, + {レベル変化量} ◆ :分岐終了
レベル変化量の算出
◆変数の操作:#0001 イベント前経験値 = リードの経験値
これは、レベルを下げる前の状態を記録しておくために必要です。
レベルを戻す時に使用します。
◆変数の操作:#0003 レベル変化量 = 25
◆変数の操作:#0003 レベル変化量 -= リードのレベル
で同じ変数に2回の処理を行っています。
1つ目でイベント上限レベルを代入しています。
2つ目でイベント上限レベルからイベント前レベルを減算しています。
上記の例を、現在のレベルが29として説明します。
- 現在のレベルが29とする。
- イベント上限レベルを25とする。
- レベル変化量は 25-29=-4 となる。
この変数をレベルを増やす量に指定すると、レベルが下がります。
上記の例では上限の25に満たない場合、レベルが変化しない条件分岐をしています。
この条件分岐がなくすと、25未満のレベルが25に上がります。
レベルを戻す処理
◆文章:なし, なし, ウィンドウ, 下 :文章:レベルを戻します。 ◆変数の操作:#0002 経験値変化量 = リードの経験値 ◆変数の操作:#0002 経験値変化量 -= イベント前経験値 ◆条件分岐:経験値変化量 < 0 ◆経験値の増減:リード, - {経験値変化量} ◆ :分岐終了
レベルを戻す処理を行うのに、「経験値の増減」を使用します。
「レベルの増減」でレベルを上げると、そのレベルになるための経験値になってしまうためです。
つまり、レベル29にレベルアップした後の30までの間の経験値が無くなってしまいます。
これを防ぐために、「経験値の増減」を使用します。
「レベルを下げる処理」の時に記録していた「イベント前経験値」を使用します。
- 下げられたレベルの経験値を #0002 経験値変化量 に代入。
- #0002 経験値変化量 から #0001 イベント前経験値 を減算。
ここでマイナスの値が出ます。 - 「経験値の増減」で #0002 経験値変化量 を「減らす」にします。
変数の値がマイナスなので、減らすことで逆転させます。
コメントを投稿するにはログインしてください。