【解決済み】並列処理を利用した擬似タイマーについて

Formidi
記事: 11
登録日時: 2017年3月16日(木) 01:16

【解決済み】並列処理を利用した擬似タイマーについて

投稿記事by Formidi » 2018年4月29日(日) 20:30

初めまして、ツクールMVで音楽ゲームを製作しようとしている者です。

https://tm.lucky-duet.com/viewtopic.php?t=1457
↑こちらなどを参考にして、
現在、曲が再生すると同時に並列処理で『変数Aを1加算する』と1つのコマンドだけを入れて
擬似的なタイマー(コモンイベント)を製作し、
例えば1秒後にノーツを流したい場合、条件分岐で『変数A=60』のときに
マップイベント(並列)で『ノーツを判定枠まで流す』というように置いたのですが、認識されませんでした。
(認識される場合、SEが鳴る様にしたが再生されなかった)

また『変数A≧60』『変数A≦60』も同様にして試してみたところ、
変数A≧60』の方は認識されず『変数A≦60』は何故か認識しました。(無論、曲開始から0フレーム後に流れます)

条件が『=』で認識されない場合、フレーム抜けが発生してその結果認識出来なかったのかと思いましたが
『≧』でもやはり流れることは無かったので、どのようにすれば認識してくれるだろうと悩んでいる所です。
(変数Aは上記の擬似タイマーとマップイベント以外では使用しておりません。)

毎フレーム加算させる擬似タイマーを使用すると、このような仕様になってしまうのでしょうか?
スクリプトは殆ど弄った事がないので自らjsを書き換えるといった手段も出来ません…
皆様で何か改善策などがございましたら、お知恵をお借りしたく存じます。
添付ファイル
02.PNG
02.PNG (92.06 KiB) 閲覧数: 5581 回
01.PNG
01.PNG (34.7 KiB) 閲覧数: 5581 回
最後に編集したユーザー Formidi on 2018年4月30日(月) 15:54 [ 編集 1 回目 ]

アバター
ベルファーレ長田(゜∀゜)
記事: 40
登録日時: 2017年9月08日(金) 13:22
お住まい: VIPツクールスレ
連絡を取る:

Re: 並列処理を利用した擬似タイマーについて

投稿記事by ベルファーレ長田(゜∀゜) » 2018年4月29日(日) 20:55

どうも。
両イベントに記述している内容に問題はないと思われます。
実際に「変数A=60の時に音楽を鳴らす」処理を組んで動作確認してみましたが、
問題なく音楽が鳴ることを確認しました。

> また『変数A≧60』『変数A≦60』も同様にして試してみたところ、
> 『変数A≧60』の方は認識されず『変数A≦60』は何故か認識しました。(無論、曲開始から0フレーム後に流れます)

このことからコモンイベントの方が起動していないような気がします。
スイッチ0057:「!!Start」がONになっているかをご確認ください。
コモンイベント側に効果音でも鳴らすイベントでも追加すれば、動いてるかどうかはすぐ確認できると思います。

あとは変数Aが他の並列処理で初期化されちゃってるとかかな…?
----------------------------------------------------------------
◆名前
ベルファーレ長田(゜∀゜)◆AHYA/HaiA.
◆肩書
スーパーツクラー
◆Twitter
https://twitter.com/velfare_nagata
----------------------------------------------------------------
Formidi
記事: 11
登録日時: 2017年3月16日(木) 01:16

Re: 並列処理を利用した擬似タイマーについて

投稿記事by Formidi » 2018年4月29日(日) 21:34

ベルファーレ長田(゜∀゜)様、返信ありがとうございます。

言い逸れて申し訳ございません…
確認用として『変数A』は、ゲーム上で常にリアルタイムで閲覧できるようになっております
(表示には、トリアコンタン様の「動的文字列ピクチャ生成プラグイン」を使用してします)
F9で変数の値を見ても『変数A』は正常に動いておりました。

>あとは変数Aが他の並列処理で初期化されちゃってるとかかな…?
まずノーツの判定を『X座標』で判別するようにしておりまして、
ノーツを流すのに擬似タイマーと近いような感じで
毎フレーム数ピクセル動かす⇒判定を得るためにX座標を取得($gameScreen.picture(変数).x();)⇒ループ
という処理を入れているのですが
並列で毎フレーム何かを処理させるイベントを重ねると認識されない事などがあるのでしょうか?
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 並列処理を利用した擬似タイマーについて

投稿記事by まっつUP » 2018年4月29日(日) 21:49

Formidi様

実行内容に注釈がたくさん入っている方のイベントは
トリガーが並列処理になっているでしょうか。
また、関わる全ての並列処理が毎フレーム実行されているか確認しましたか?
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
Formidi
記事: 11
登録日時: 2017年3月16日(木) 01:16

Re: 並列処理を利用した擬似タイマーについて

投稿記事by Formidi » 2018年4月29日(日) 22:12

まっつUP様、ご返信ありがとうございます。

ひとまずゲーム画面とF9の画面を添付しました。

>実行内容に注釈がたくさん入っている方のイベントは
>トリガーが並列処理になっているでしょうか。
マップイベントはしっかりと並列処理になっておりました。
(『◆コモンイベント:Notes』に、ノーツ(ピクチャ)を流す命令があるのですが
 『変数A≦○○』のときにしっかりと流れたので間違いは無いはずです
 Notesの中身はお申し付けいただければ添付いたします)

>また、関わる全ての並列処理が毎フレーム実行されているか確認しましたか?
こちらも問題ございませんでした
毎フレームノーツを移動させる処理は、スクリプト『$gameVariables._data[X座標] += 10;』を使用しています。
やはりノーツが正常に流れてきたので、このスクリプト自体も異常は無いかと思います
添付ファイル
04.PNG
04.PNG (132.79 KiB) 閲覧数: 5551 回
03.PNG
03.PNG (40.19 KiB) 閲覧数: 5551 回
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 並列処理を利用した擬似タイマーについて

投稿記事by まっつUP » 2018年4月29日(日) 22:22

変数7番の値の1086 だけ
右インデントがずれているように見えますがなぜでしょうか。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
Formidi
記事: 11
登録日時: 2017年3月16日(木) 01:16

Re: 並列処理を利用した擬似タイマーについて

投稿記事by Formidi » 2018年4月29日(日) 22:34

>まっつUP様

これはgamefont.cssの中身をデフォルトから別のフォントに変更している為です。
この画像ではロゴたいぷゴシックを使用しております。
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: 並列処理を利用した擬似タイマーについて

投稿記事by ビービー » 2018年4月29日(日) 22:51

こんばんは。

原因はわかりませんが変数A≦60のみしか認識されないということはイベントが一度しか起動していないのではないかと思います。

注釈1の上に文章の表示や違うSEの演奏などを入れてみて毎フレーム呼び出されているか確認してみてはどうでしょうか?
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 並列処理を利用した擬似タイマーについて

投稿記事by まっつUP » 2018年4月29日(日) 22:59

うーん、なかなか難しいですね。
思いつくことの中では、変数の操作について疑問があります。

・最初の画像のコモンイベント「BGMcount」の実行内容のスクリプトコマンドは
通常のイベントコマンドの「変数の操作」とあまり差がないように見えますが
なぜこの処理内容にしているのでしょうか。
・$gameScreen.picture(変数).x();で特定のIDのピクチャのx座標を得たいようですが
ピクチャがないときは値を得ることができないなど細かい制御が必要になるのが気になります。
・$gameVariables._data[X座標] += 10;
上述のものと同様通常のイベントコマンドの「変数の操作」とあまり差がないように見えますが
なぜこの処理内容にしているのでしょうか。

また、念のため分岐を通ったかどうかの確認はテスト段階では
文章の表示で明確に行った方がよいと思います。
(seを発したかどうかの確認だと連続の演奏等によって打ち消される可能性があるため。)
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
Formidi
記事: 11
登録日時: 2017年3月16日(木) 01:16

Re: 並列処理を利用した擬似タイマーについて

投稿記事by Formidi » 2018年4月29日(日) 23:15

>ビービー様、返信ありがとうございます。

仰る通り数種類の効果音を挟んでみましたところ、確かに一度きりしか動いていないことが判明致しました。
また言い逸れてしまって恐縮ですが、イベントの最下部に楽曲の再生時間分のウェイトを置いていて
これが原因で認識されないようでした… 消去してみたら無事流れるようりなりました

見落としに気付かせて下さり有難うございます…非常に助かりました
確かにこれならば、『変数A≦60』の場合でも辻褄が通るので納得です
また別の件で質問を投稿するかも知れませんので、その際はよろしくお願いいたします。
添付ファイル
05.png
05.png (87.97 KiB) 閲覧数: 5511 回

“MV:質問” へ戻る