【解決済み】マップ上で決定ボタンを押したときに独自の回復を行いたい
Posted: 2020年12月13日(日) 20:05
こんにちは。私は現在ツクールMVで、アクションゲームのようなものを制作しております。
そのゲームでは主にマップ上の敵イベントに攻撃して倒していくような形で、
その戦闘の追加要素として、ツクール本来のものとは異なる、「スキル」というものがあります。
使い方は簡単で、マップ上で決定を押す、もしくは長押しすることでMPを必要数消費し、発動します。
そのスキルを制作する過程で、「回復」というスキルを制作しようと思い、
ある程度は形にしました。(下が回復スキルの説明です)
決定ボタンを押すとMPを消費し、プレイヤーを中心として判定が出現
判定内にいれば回復する
といった感じで、回復自体はできるのですが、問題は判定(緑の範囲内)で、本来3×3マスで合計9マスある
判定のうち、真ん中の1マス、スキル発動時にプレイヤーがいた場所でしか回復できないことです。
回復スキルの内容としては、
コモンイベント:回復 トリガー:並列処理 スイッチ:回復
◆ラベル:ループ終了
◆条件分岐:MP ≠ 0
◆条件分岐:ボタン[決定]が押されている
◆条件分岐:回復判定がOFF
◆変数の操作:#0001 回復判定座標X = プレイヤーのマップX
◆変数の操作:#0002 回復判定座標Y = プレイヤーのマップY
◆MPの増減:ハロルド, - 1
◆HPの増減:ハロルド, + 1
◆アニメーションの表示:プレイヤー, 回復
◆イベントの位置設定:EV001, ({回復判定座標X},{回復判定座標Y})
◆スイッチの操作:#0002 回復判定 = ON
◆
:分岐終了
◆
:分岐終了
◆
:分岐終了
◆条件分岐:回復判定がON
◆ラベル:ループ
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X += 1
◆コモンイベント:回復感知
◆変数の操作:#0002 回復判定座標Y -= 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X -= 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X -= 1
◆コモンイベント:回復感知
◆変数の操作:#0002 回復判定座標Y += 1
◆コモンイベント:回復感知
◆変数の操作:#0002 回復判定座標Y += 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X += 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X += 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X -= 1
◆変数の操作:#0002 回復判定座標Y -= 1
◆条件分岐:回復判定がOFF
◆ラベルジャンプ:ループ終了
◆
:分岐終了
◆ラベルジャンプ:ループ
◆
:分岐終了
コモンイベント:回復感知 トリガー:なし
◆変数の操作:#0003 回復プレイヤーX = プレイヤーのマップX
◆変数の操作:#0004 回復プレイヤーY = プレイヤーのマップY
◆条件分岐:回復待機 = 60
◆HPの増減:ハロルド, + 1
◆アニメーションの表示:プレイヤー, 回復
◆
:分岐終了
◆条件分岐:回復待機 = 120
◆HPの増減:ハロルド, + 1
◆アニメーションの表示:プレイヤー, 回復
◆
:分岐終了
コモンイベント:回復処理 トリガー:並列処理 スイッチ:回復判定
◆変数の操作:#0005 回復時間 += 1
◆条件分岐:回復時間 = 180
◆変数の操作:#0005 回復時間 = 0
◆変数の操作:#0006 回復待機 = 0
◆スイッチの操作:#0002 回復判定 = OFF
◆
:分岐終了
コモンイベント:回復待機 トリガー:並列処理 スイッチ:回復判定
◆条件分岐:回復判定座標X = 回復プレイヤーX
◆条件分岐:回復プレイヤーY = 回復プレイヤーY
◆変数の操作:#0006 回復待機 += 1
◆
:分岐終了
◆
:分岐終了
コモンイベント:回復判定 トリガー:並列処理 スイッチ:回復判定
◆アニメーションの表示:EV001, 回復判定
という5つのコモンイベントから構成されています。
また、大まかな処理の流れとしては
1.(すでにスイッチ「回復」がONのとき)コモンイベント:回復でMPが1以上あるときに決定ボタンを
押すことで、MPを1消費し、HPを確定で1回復後、アニメーション表示用にイベントを移動させ、
スイッチ「回復判定」をONにします。
2.スイッチ「回復判定」がONになったことで、コモンイベント:回復内のラベルジャンプを
使ったループ、そしてコモンイベント:回復処理、回復待機、回復判定の3つが起動し、
回復処理が約3秒を計測し、回復待機はプレイヤーが回復の判定内にいる限り、
変数「回復待機」を1加算し続け、回復判定は緑の判定画像を表示するためのアニメーションを
表示させ続けます。
3.コモンイベント:回復処理で約3秒を計測し終えるまでの間に、判定の中にいると、
コモンイベント:回復待機によって、変数「回復待機」に1加算され続けます。
この変数をコモンイベント:回復内にある、コモンイベント:回復感知で
チェックし、60かどうか、120かどうかを調べて、それぞれの数字になったタイミングで
1回復させます。スキルを発動した時点で、確定で1回復できるため、1回のスキル発動で
最大3回復できます。
4.コモンイベント:回復処理で約3秒を計測し終えたとき、スイッチ「回復判定」
がOFFになるので、すべての処理が終了し、スキル発動前の状態に戻ります。
5.1に戻る
回復スキルの流れはこんな感じになっています。
問題の判定については、処理的にはまず、スキル発動時にコモンイベント:回復内でプレイヤー
の現在地を一度だけ変数XYとして取得します。その変数XYを、コモンイベント:回復のループ内で
1ずつ変動させ、その直後に毎回コモンイベント:回復感知を挟み、そして最終的に
変数を元の数値に戻すことで、ループしたときに同じ処理が繰り返され、9マスの判定が
できると思っていました。
(下はわかりづらいかもしれませんが、処理のイメージ)
しかし、真ん中以外の判定では、一切、「回復待機」に加算されないため、コモンイベント:回復の
ループ内で、変数XYに加算、減算できていないのでは?となりましたが、対処法が全く分からなかったため、
今回質問させていただきました。
自分としては、回復スキルを当初予定していた、9マスで実装したいと思っており、
解決のため、ぜひ力をお貸しください…!
自分の説明で分からないところ、おかしなところがあれば、何でも聞いてください!
また、本編のプロジェクトファイルから、回復スキルのみを全く同じ処理で抜き出したプロジェクトファイル
を用意したので、協力して頂ける方に向けて、リンクを載せておきます。(Dropboxからダウンロード)
以下、ダウンロードリンク
https://www.dropbox.com/sh/3zpkky7lmlo6 ... FdkNa?dl=0
そのゲームでは主にマップ上の敵イベントに攻撃して倒していくような形で、
その戦闘の追加要素として、ツクール本来のものとは異なる、「スキル」というものがあります。
使い方は簡単で、マップ上で決定を押す、もしくは長押しすることでMPを必要数消費し、発動します。
そのスキルを制作する過程で、「回復」というスキルを制作しようと思い、
ある程度は形にしました。(下が回復スキルの説明です)
決定ボタンを押すとMPを消費し、プレイヤーを中心として判定が出現
判定内にいれば回復する
といった感じで、回復自体はできるのですが、問題は判定(緑の範囲内)で、本来3×3マスで合計9マスある
判定のうち、真ん中の1マス、スキル発動時にプレイヤーがいた場所でしか回復できないことです。
回復スキルの内容としては、
コモンイベント:回復 トリガー:並列処理 スイッチ:回復
◆ラベル:ループ終了
◆条件分岐:MP ≠ 0
◆条件分岐:ボタン[決定]が押されている
◆条件分岐:回復判定がOFF
◆変数の操作:#0001 回復判定座標X = プレイヤーのマップX
◆変数の操作:#0002 回復判定座標Y = プレイヤーのマップY
◆MPの増減:ハロルド, - 1
◆HPの増減:ハロルド, + 1
◆アニメーションの表示:プレイヤー, 回復
◆イベントの位置設定:EV001, ({回復判定座標X},{回復判定座標Y})
◆スイッチの操作:#0002 回復判定 = ON
◆
:分岐終了
◆
:分岐終了
◆
:分岐終了
◆条件分岐:回復判定がON
◆ラベル:ループ
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X += 1
◆コモンイベント:回復感知
◆変数の操作:#0002 回復判定座標Y -= 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X -= 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X -= 1
◆コモンイベント:回復感知
◆変数の操作:#0002 回復判定座標Y += 1
◆コモンイベント:回復感知
◆変数の操作:#0002 回復判定座標Y += 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X += 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X += 1
◆コモンイベント:回復感知
◆変数の操作:#0001 回復判定座標X -= 1
◆変数の操作:#0002 回復判定座標Y -= 1
◆条件分岐:回復判定がOFF
◆ラベルジャンプ:ループ終了
◆
:分岐終了
◆ラベルジャンプ:ループ
◆
:分岐終了
コモンイベント:回復感知 トリガー:なし
◆変数の操作:#0003 回復プレイヤーX = プレイヤーのマップX
◆変数の操作:#0004 回復プレイヤーY = プレイヤーのマップY
◆条件分岐:回復待機 = 60
◆HPの増減:ハロルド, + 1
◆アニメーションの表示:プレイヤー, 回復
◆
:分岐終了
◆条件分岐:回復待機 = 120
◆HPの増減:ハロルド, + 1
◆アニメーションの表示:プレイヤー, 回復
◆
:分岐終了
コモンイベント:回復処理 トリガー:並列処理 スイッチ:回復判定
◆変数の操作:#0005 回復時間 += 1
◆条件分岐:回復時間 = 180
◆変数の操作:#0005 回復時間 = 0
◆変数の操作:#0006 回復待機 = 0
◆スイッチの操作:#0002 回復判定 = OFF
◆
:分岐終了
コモンイベント:回復待機 トリガー:並列処理 スイッチ:回復判定
◆条件分岐:回復判定座標X = 回復プレイヤーX
◆条件分岐:回復プレイヤーY = 回復プレイヤーY
◆変数の操作:#0006 回復待機 += 1
◆
:分岐終了
◆
:分岐終了
コモンイベント:回復判定 トリガー:並列処理 スイッチ:回復判定
◆アニメーションの表示:EV001, 回復判定
という5つのコモンイベントから構成されています。
また、大まかな処理の流れとしては
1.(すでにスイッチ「回復」がONのとき)コモンイベント:回復でMPが1以上あるときに決定ボタンを
押すことで、MPを1消費し、HPを確定で1回復後、アニメーション表示用にイベントを移動させ、
スイッチ「回復判定」をONにします。
2.スイッチ「回復判定」がONになったことで、コモンイベント:回復内のラベルジャンプを
使ったループ、そしてコモンイベント:回復処理、回復待機、回復判定の3つが起動し、
回復処理が約3秒を計測し、回復待機はプレイヤーが回復の判定内にいる限り、
変数「回復待機」を1加算し続け、回復判定は緑の判定画像を表示するためのアニメーションを
表示させ続けます。
3.コモンイベント:回復処理で約3秒を計測し終えるまでの間に、判定の中にいると、
コモンイベント:回復待機によって、変数「回復待機」に1加算され続けます。
この変数をコモンイベント:回復内にある、コモンイベント:回復感知で
チェックし、60かどうか、120かどうかを調べて、それぞれの数字になったタイミングで
1回復させます。スキルを発動した時点で、確定で1回復できるため、1回のスキル発動で
最大3回復できます。
4.コモンイベント:回復処理で約3秒を計測し終えたとき、スイッチ「回復判定」
がOFFになるので、すべての処理が終了し、スキル発動前の状態に戻ります。
5.1に戻る
回復スキルの流れはこんな感じになっています。
問題の判定については、処理的にはまず、スキル発動時にコモンイベント:回復内でプレイヤー
の現在地を一度だけ変数XYとして取得します。その変数XYを、コモンイベント:回復のループ内で
1ずつ変動させ、その直後に毎回コモンイベント:回復感知を挟み、そして最終的に
変数を元の数値に戻すことで、ループしたときに同じ処理が繰り返され、9マスの判定が
できると思っていました。
(下はわかりづらいかもしれませんが、処理のイメージ)
しかし、真ん中以外の判定では、一切、「回復待機」に加算されないため、コモンイベント:回復の
ループ内で、変数XYに加算、減算できていないのでは?となりましたが、対処法が全く分からなかったため、
今回質問させていただきました。
自分としては、回復スキルを当初予定していた、9マスで実装したいと思っており、
解決のため、ぜひ力をお貸しください…!
自分の説明で分からないところ、おかしなところがあれば、何でも聞いてください!
また、本編のプロジェクトファイルから、回復スキルのみを全く同じ処理で抜き出したプロジェクトファイル
を用意したので、協力して頂ける方に向けて、リンクを載せておきます。(Dropboxからダウンロード)
以下、ダウンロードリンク
https://www.dropbox.com/sh/3zpkky7lmlo6 ... FdkNa?dl=0