1

私は、ユーザーがゲームをより速く進めるために画面をより速くタップしなければならないゲームを作成していますが、いくつかの問題が発生しました。私はゲームを作成したので、ユーザーの最後のタップと現在のタップから1分あたりのタップ数を計算しますが、この方法はぎくしゃくしているようで、あまりうまく機能しません。私もそれを行う別の方法を考え出すことができないので、彼らがまったくタップしないとき、それは遅くなります。

ユーザーがタップする速度が速いほどゲームが速くなり、まったくタップしないと遅くなるゲーム用にこのメカニズムを作成するにはどうすればよいでしょうか。

ありがとう

これは、ユーザーの1分あたりのタップ数(TPM)を計算する、これまでの内容の抜粋です。(これはオンタッチ方式です)。現在、TPMを更新メソッドに渡しています。このメソッドは、更新するたびにバックグラウンドをTPM / 100ずつ移動します(30FPSで実行されています)。

 if (thisTouch == 0 || lastTouch == 0) {
            Log.d("info","First Touch");
            thisTouch = lastTouch = System.currentTimeMillis();
        } else {
            Log.d("d","touch");
            thisTouch = System.currentTimeMillis();

            long difference = thisTouch - lastTouch;

            TPM = (int)((1000*60)/difference);

            lastTouch = thisTouch;
        }

クリックが速くなるとゲームが速くなり、画面に触れないときに遅くなるように変更する方法を知りたいです。

4

3 に答える 3

1

多分あなたはこのようなことをすることができます:

  • PriorityQueueを作成する<Long>
  • ユーザーが画面をタップするたびに、(currentTime + someTimeOut)をキューに追加します
  • 現在の速度(キューのサイズなど)を確認するときは、最初にすべての要素>currentTimeを削除してください。

もちろん、このようなことを行う場合は、適切なスレッドセーフ対策を追加することを忘れないでください。

于 2012-07-17T13:40:19.607 に答える
0

あなたの一般的なアプローチはそれを行うためのほとんど唯一の方法です、それはただいくつかの微調整を必要とします。

一般的なTapsPerTime変数を保持します。登録する新しいタップごとに、TapsPerTimeを置き換えずに、新しい加重値を計算します。

TapsPerTime =(TapsPerTime * X)+(MeasureTapsPerTime *(1-X))

経験的に見つける必要のある係数X(自分に最適なものを試すことによって)。ここでの一般的な考え方は、各測定は使用された値を少しだけ正しい方向に微調整するだけであるということです。

また、一定時間タップを検出しない場合は、同じ式でTapsPerTimeを更新するだけですが、MeasureTapsPerTimeには0(ゼロ)を使用します。したがって、ユーザーが何もしなければ、値は下がります。

于 2012-07-17T13:45:28.283 に答える
0

「あの男」ではありませんが、現在の1分あたりのタップ数の計画はかなり良いようですが、実装が不十分です。ただし、ゲームは通常ペースが速く、キャラクターのスピードアップまたはスローダウンを確認するために1分待たなければならないため、遅延の感覚が生じる可能性があるため、3秒あたりのタップ数などの短い時間量を強くお勧めします。

または、画面をタップするたびに最大制限まで増加し、画面をタップしないと時間の経過とともに減少する、ある種の加速を使用することもできます。

質問をコードで更新したので、タップはタッチであり、画面から離すのは必ずしもタッチではないことを指摘しておきます。私はあなたのコードからあなたがこれを補償しているかどうかを正直に知らないので、これがあなたの問題のいくつかの原因であるかもしれません。

最後に、ゲーム開発のアルゴリズムと理論については、次のStackExchangeサイトを参照してください:https ://gamedev.stackexchange.com/

ゲームを思い通りに感じてもらうのに非常に近いようです。頑張ってください!

于 2012-07-17T13:38:29.243 に答える