↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

Yukimura
記事: 26
登録日時: 2023年3月31日(金) 17:27

↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by Yukimura » 2023年5月11日(木) 17:57

条件分岐「スクリプト:Input.isTriggered('up')」
移動ルートの設定「1歩前進 × 2」

これで、「↑」を押した瞬間(長押ししなくても)
元々の移動歩数1と「1歩全身」の2歩を合わせ合計3歩進むようにしたのですが
3回に2回は設定どおり3歩進む者の、3回に1回は1歩しか進みません。

どうすれば、特定歩数のみ進むようになるでしょうか。
よろしくお願いいたします。

ー------------------------------------

(3マス進ませる理由)

現在プラグインMV3Dにて
昔の3Dダンジョンゲーム(ウィザードリーや女神転生)のような作品つくりを目指しています。

通路の広さをRPGツクールMVの5マス分にしており、進めるのは中央の1マス(3マス目)のみにし
他のマスは歩けないように設定しています。
空間を広く見せないと、狭く圧迫感を感じたり、画面に酔うためです。

その際、曲がり角や十字路で、プレイヤーが1~2マス目と4~5マス目に止まり
曲がり角などを曲がってしまうと、見た目は先に進めそうなのに
歩けないマスにぶつかり、先に進めないという現象が起こってしまいます。

もちろん、3マス目に移動しなおせば進めるのですが
おそらくプレイ中何度も進めなくなり3マス目に移動しなおすとストレスを感じると思います。
そのため、最初から3マス目にピッタリと移動させるために
「↑」を一回押すたびに、自動的に3マス進むように設定したいというのが理由になります。

なお、MV3Dを入れていない2Dのゲームファイルで試しても
3回に1回は、1歩しか進まない現象が起きているため
この問題は「MV3D」に関係なく、通常のRPGツクールMVでも起きるのだと思います。

ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by ミズナギ » 2023年5月12日(金) 18:55

こんばんは。
Input.isTriggeredがたまに取得できないときがある、という現象に私も悩んだことがあって、私はInput.updateで直にフラグを取得するプラグインを作って解決させたのですが、これ、どうやら、キー入力待ちの並列処理の中にウェイトを入れなければ普通に反応できるようです。

もしInput.isTriggeredの条件分岐を並列処理にしていて「ウェイト:1フレーム」なども入れている場合は、試しにウェイトを外してみてください。
(ループ処理と同じ感覚で並列処理にもウェイト入れないと固まるかと思ってたんですが、普通に動くっぽいので…)

※この方法で解決しない場合は、ご所望でしたら解決用に作ったプラグインをこちらに上げることも可能です。

私はツクールフォーラムのほうで質問して、反応くださったのが問題なく取得できていらっしゃる方だけだったので、たぶんこの現象はレアケースなんだろうと思うんですが、とりあえずInput.updateの部分では確実に取得できるので、キーが押されてから条件分岐コマンドで拾うまでのあいだにどこかでInput.isTriggeredのフラグがリセットされちゃう場合があるんでしょうね。


ところで一歩前進×2で本当に3歩進んでますか?
条件分岐コマンドと移動ルートの設定コマンドのあいだにウェイト入れるとかしないと「元々の移動歩数1」は飛ばされて、移動ルート分の2歩しか進まないような気が…
Yukimura
記事: 26
登録日時: 2023年3月31日(金) 17:27

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by Yukimura » 2023年5月12日(金) 20:16

ご回答、ありがとうございます。

「一歩前進×2」かどうかですが、もう一度確認したところ「一歩前進×3」に設定していました。
失礼いたしました。

自分以外にも同じ問題で悩まれた方がいると知ると励みになります。

おっしゃる通り、並列処理しているEV内にウェイトを入れていました。
それを外してみたところ、前よりは設定した歩数通りに動くようになったのですが
ある程度長く歩いていたり、↑ボタンを長押しすると、歩数がズレてしまったり
基本、歩行グラを「なし」あるいは「透明状態」にしてゲームを作りたいのですが
そうすると、歩行グラを「あり」にしていた時よりズレやすくなります。

もしよろしければ、プラグインの方、試させていただけたら嬉しく思います。
よろしくお願いします。
ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by ミズナギ » 2023年5月14日(日) 12:21

基本的に、並列処理の中にそのままやりたい処理を入れていると不具合が起きやすいので、並列処理は最低限のスイッチや変数の操作処理だけにして、ページを分けてトリガー「自動実行」のページに本来のやりたい処理を書く形にするのがおすすめです。
(マップイベントのほうがページ分けして作りやすいですが、コモンイベントでも一応、並列処理用と自動実行用を分けて作っておけば同様のことはできます)

…が、どうしてもタイムラグができるため、たとえば、連続で複数回キーを押すとかすると、3歩進み終わる前に次の「キーが押された」状態になる→2歩や1歩しか進めていない場合が発生して歩数がズレていく、ということになります。
長押しで歩数がズレるのも、おそらく長押しのほうの処理を入れていないせいではないでしょうか。
キーを1回押したときの処理だけを書いているなら、長押しされた場合は「キーを押したら3歩進む」という処理ではなく通常の1歩ずつ進むだけになってしまうはずです。

私の作った解決用のプラグインはあくまでも1回のキー入力を取得するためのものなので、連打や長押しまでは考慮してません。
なので、そのあたりも含めて解決するなら、「方向キーが押されたかどうかを取得して、コマンドを使って3歩進ませる」というやり方ではどうしても一定のラインで妥協するしかなくなるので、デフォルトの歩行処理そのものを変えてしまうほうが良さそうです。

ということで、こちらで試してみてください。
※念のため。これ単体で3歩ずつ歩行させるプラグインなので、「方向キーが押されたかどうかを取得して、コマンドを使って3歩進ませる」の並列処理は外してお試しください。
修正しましたので下げました

3歩ずつの歩行に変更する有効/無効をスイッチで切り替えられる形にはしてありますが、お使いのプラグインと競合が出る可能性は多分にあるので、その場合はまたお知らせしていただければ。
最後に編集したユーザー ミズナギ on 2023年5月16日(火) 22:34 [ 編集 1 回目 ]
Yukimura
記事: 26
登録日時: 2023年3月31日(金) 17:27

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by Yukimura » 2023年5月16日(火) 03:18

お時間を頂き、プラグインを作って下さり、どうもありがとうございます。

前進だけの時は問題なく3歩進めるのですが
一度横を向いて壁方向の進んで(といっても進めない壁にゴンゴンする感じ)から
また前方を向き、進むボタンを押しても一切反映されないトラブルが起こりました。
並列処理のイベントは無くしております。
ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by ミズナギ » 2023年5月16日(火) 22:30

修正してみました。
こちらでどうでしょうか?

修正しましたので下げました
最後に編集したユーザー ミズナギ on 2023年5月20日(土) 11:50 [ 編集 1 回目 ]
Yukimura
記事: 26
登録日時: 2023年3月31日(金) 17:27

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by Yukimura » 2023年5月19日(金) 20:43

ミズナギ さんが書きました:修正してみました。
こちらでどうでしょうか?


お手数おかけしました。
試してみたところ、前述した問題は発生しませんでした。

修正していただき、どうもありがとうございました。

それと申し訳ないのですが、下記3点が、操作性の面で気になり
もしご負担が少ないようでしたら、修正していただければと思うのですが
( )に示したように、ゲームができないという訳ではない具合なので
難しいようであれば、このままでも大丈夫です。


①3歩進んでいる最中に「 ← → 」キーを押すと
 1歩目や2歩目で動きが止まってしまう
(5マス幅の通路の3マス目のみ歩ける通路というマップ構成なため
 曲がり角で、2,4,マス目に止まってしまうと進めなくなるのですが
 「↑」を押し続ければ3マス目まで自動的にズレて
 先へ進めるようになっていました)

②ある程度進んで、後方向へターンした後
 「↑」を押しても動かず進めない
 (その後、もう一度「↑」を押すと進むことができる)

③画面の見た目で、2歩目か3歩目あたりのスピードが急激に速くなり
 プレイヤーによっては酔う可能性があるので
 見た目の速度が変わらないようにしたい
ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by ミズナギ » 2023年5月19日(金) 23:17

Yukimura さんが書きました:①3歩進んでいる最中に「 ← → 」キーを押すと
 1歩目や2歩目で動きが止まってしまう
(5マス幅の通路の3マス目のみ歩ける通路というマップ構成なため
 曲がり角で、2,4,マス目に止まってしまうと進めなくなるのですが
 「↑」を押し続ければ3マス目まで自動的にズレて
 先へ進めるようになっていました)

②ある程度進んで、後方向へターンした後
 「↑」を押しても動かず進めない
 (その後、もう一度「↑」を押すと進むことができる)

③画面の見た目で、2歩目か3歩目あたりのスピードが急激に速くなり
 プレイヤーによっては酔う可能性があるので
 見た目の速度が変わらないようにしたい

そこらへんまで対応するには、その分の処理の追加と動作の確認を繰り返す時間が必要になります。
大変心苦しいのですが、私用でしばらく余裕がないため、今すぐご要望にお応えするのは難しいです。

来月以降までお待ちいただけるようでしたら対応してみます。
が、お急ぎであれば方向キーを制限するとか歩行速度を落とすなどの処理を入れることで、それらの問題への対処が可能かもしれません。

※一応、私のプラグインは叩き台にして改造など自由にしてもらって構わないです。
Yukimura
記事: 26
登録日時: 2023年3月31日(金) 17:27

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by Yukimura » 2023年5月20日(土) 09:34

いえいえ、ここまで対応していただけただけでも、とても助かりました。
ご多忙な中、本当にありがとうございました。

改造の許可をいただけた事も、とても助かります。

質問だけさせていただきたいのですが
歩行速度を落とすのは「移動ルートの設定」からできると思うのですが
「方向キーの制限」とは、スクリプトで行う形でしょうか?
ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: ↑ボタンを押した瞬間、3歩進ませたい(長押し無し)

投稿記事by ミズナギ » 2023年5月20日(土) 11:48

取り急ぎ、3歩進み終わるまでは追加で方向キーが押されても反応しない形に直しました。
たぶん(1)の問題はこれで解消されるかと思います。
MultiStepWalking.js
(3.63 KiB) ダウンロード数: 6 回

(2)についてももしかしたらこれで直るかもしれませんが、状況を再現して問題を解消するための検証時間が必要になるため、今は確実な解決策を示すことができません。

(3)についてはあらかじめ「移動ルートの設定」コマンドでプレイヤーの移動速度を下げておくと速度の差が気にならなくなるかもしれません。
※プラグインではタッチ移動の流用で3歩分進ませているので、速度を一定にしたい場合はプラグインの仕様そのものを変える必要があり、改善方法と動作の検証をする時間が必要になるので現状すぐの対応はできないです。

質問へのこれ以上の回答は難しいです。
中途半端になってしまって申し訳ないですが、満足いく作品が出来ますことを願っています。

“MV:質問” へ戻る