【解決済み】マップ上で決定ボタンを押したときに独自の回復を行いたい

返信する
SIZUKU
記事: 17
登録日時: 2020年4月02日(木) 20:41

【解決済み】マップ上で決定ボタンを押したときに独自の回復を行いたい

投稿記事 by SIZUKU »

こんにちは。私は現在ツクールMVで、アクションゲームのようなものを制作しております。
そのゲームでは主にマップ上の敵イベントに攻撃して倒していくような形で、
その戦闘の追加要素として、ツクール本来のものとは異なる、「スキル」というものがあります。
使い方は簡単で、マップ上で決定を押す、もしくは長押しすることでMPを必要数消費し、発動します。
そのスキルを制作する過程で、「回復」というスキルを制作しようと思い、
ある程度は形にしました。(下が回復スキルの説明です)
回復テスト 1.png
決定ボタンを押すとMPを消費し、プレイヤーを中心として判定が出現
回復テスト 2.png
判定内にいれば回復する
回復テスト 03.png
といった感じで、回復自体はできるのですが、問題は判定(緑の範囲内)で、本来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マスの判定が
できると思っていました。
(下はわかりづらいかもしれませんが、処理のイメージ)
回復テスト 3.png
しかし、真ん中以外の判定では、一切、「回復待機」に加算されないため、コモンイベント:回復の
ループ内で、変数XYに加算、減算できていないのでは?となりましたが、対処法が全く分からなかったため、
今回質問させていただきました。

自分としては、回復スキルを当初予定していた、9マスで実装したいと思っており、
解決のため、ぜひ力をお貸しください…!

自分の説明で分からないところ、おかしなところがあれば、何でも聞いてください!
また、本編のプロジェクトファイルから、回復スキルのみを全く同じ処理で抜き出したプロジェクトファイル
を用意したので、協力して頂ける方に向けて、リンクを載せておきます。(Dropboxからダウンロード)

以下、ダウンロードリンク
https://www.dropbox.com/sh/3zpkky7lmlo6 ... FdkNa?dl=0
最後に編集したユーザー SIZUKU [ 2020年12月13日(日) 23:09 ], 累計 1 回
アバター
くろうど
記事: 318
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡する:

Re: マップ上で決定ボタンを押したときに独自の回復を行いたい

投稿記事 by くろうど »

こんばんは。
面白そうだったので試しに自分なりのやり方で作ってみました。
(申し訳ありませんが、SIZUKUさんのコモンイベントは無視して作りました)

やりたい事については以下と解釈しました。

決定ボタン入力で回復エリア決定

プレイヤーは移動可能

3秒後にプレイヤーが回復エリアに居たら回復する

【コモンイベント1】
まず、決定ボタンの入力待ちをします。
入力されたら、回復エリアの中心を決定します。
そして、回復待ちに処理を移します
com01.png
com01.png (21.12 KiB) 閲覧された回数 1616 回
【コモンイベント2】
こちらでは、回復待ちと回復処理を行います。
(ここではアニメーション表示のみ行っています)
エリアのチェックは、回復エリアの中心(-1~+1の座標)とプレイヤーの現在位置でチェックしています。
com02.png
com02.png (22.76 KiB) 閲覧された回数 1616 回
【回復エリアの中心イベント】
空っぽのイベントを用意しました。
分かりやすくするため画像を設定しています。
ev02.png
と、ココまで作ってから、改めて要件を確認したところ、
1秒ごとに1ポイント回復というのを見落としていました。
これについては、コモンイベント2に条件分岐を作って回数をカウントすれば出来るかと思います。

ひとまず、ご確認ください。
よろしくお願いします。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
SIZUKU
記事: 17
登録日時: 2020年4月02日(木) 20:41

Re: 【解決済み】マップ上で決定ボタンを押したときに独自の回復を行いたい

投稿記事 by SIZUKU »

返信ありがとうございます!教えて頂いたものをベースとして改造したところ、
完璧に動いてくれました!1秒で1回復するという仕様もうまくいきましたし、
そのほか自分が考えていた細かな仕様も問題なく盛り込めたので、もうこの上なく最高です!
ご協力頂き本当にありがとうございました!これにて解決とさせていただきます!
返信する

“MV:質問”に戻る