質問: 30;//連打で一気に進む防止のため } } ``` ### 試したこと まずは、上記のソースでの「IsPassedInterval」処理を追加しました。 が、それだけだと、「スキップされるupdate()」で拾った画面クリックが いざ「スキップしないupdate()」が来た時に、無視されてしまうことに気づきました。 よってisGamenClickフラグを追加しました。 ボタンについては、cantSyoriCounterで「どんなに連打しても、 スキップしないupdateが30回呼ばれるまでは無視する」ようにしました。 思想としては、実装された処理の違いから 画面クリックは「クリックしたことを落とさないこと」重視、 ボタンクリックは「連打で一気に進まないこと」重視(cantSyoriCounterに引っかかって 無視されることがあるのは、大した問題ではないと判断)です。 ### 補足情報(FW/ツールのバージョンなど) Collision系の処理は使用していないので、気にしなくてよいです。
回答: ご存知かもしれませんがおさらいから。 Updateは1フレームに1回呼ばれ、フレームレート(1秒間が何フレームか)はゲームの負荷により変わります。 つまりUpdateは、ある時は1秒間に60回呼ばれ、ある時は1秒間に30回呼ばれます。 つまり、例えば「20フレーム」と指定してしまうと、ある時は0.3秒かかり、ある時は0.6秒かかります。 なのでまず`IsPassedInterval`は使わない方針でいいと思います。 「演出がリアル時間で早すぎないように」というのはつまり「どのような環境下(=フレームレートが変わって)でも○秒間表示させる」ということなので、演出については「○フレーム」ではなく「○秒」と指定するのが適切です。 `ensyutsuCounter`はフレーム単位ではなく秒単位と認識し、 `ensyutsuCounter -= Time.deltaTime;`などとして管理した方がいいでしょう。 (間にダメージ量表示等の処理を挟む場合でも「演出開始から○秒後、まだ呼ばれていなかったら処理を呼ぶ」みたいな作りにしておけばいいかと) 「連打の無効化」についても同様で、フレーム単位ではなく秒単位での管理にすべきかと思います。 その上で「画面タッチ」は毎フレーム受け付けにしておいて`「演出中」「連打無効化中」(必要に応じて「計算中」も)なら何もしない`でいいのではないかと思います。 (先行入力させたいなら`「演出中」等にタッチされたら「タッチした」というフラグを立てておき、演出処理終了後にフラグをチェック、立っていたら「入力された」ということにして再度処理`でいいかと) 希望通りの動きになるか分かりませんが、ご参考までに。