0

私のゲームでは、プレイヤーがゲーム中の任意の時点で携帯電話を振ると、振るたびに武器が切り替わります。

例: プレイヤーがナイフを持っていて、[電話を振って]刀に持ち替えます。

if (accelerometer.x >= 5 || accelerometer.x <= -5   || accelerometer.y >= 5 
   || accelerometer.y <= -5   || accelerometer.z >= 5 || accelerometer.z <= -5 )
   switchWep();        

これは機能しますが、問題は副作用があることです。プレーヤーが電話を振ると、武器が 2 回切り替わることがあります。だから私はそれを制限して、大きな揺れがあった場合にゲームが武器 0 から武器 2 に切り替わらないようにしたいと考えています。

助けてください。

4

2 に答える 2

3

簡単な時間制限を設定して、2 回連続して切り替えることができないようにすることができます。二重切り替えを避けるには、1 秒から 500 ミリ秒で十分だと思います。

編集:これを行うこともできますが、それが最も最適な方法またはロックセーフな方法であるかどうかはわかりません。

protected void shake() {
    if(mAllowShake) {
        mAllowShake = false;

        // do shake

        Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                mAllowShake = true;
            }
        };

        handler.sendMessageDelayed(null, 500);  // time in milliseconds
    }
}
于 2012-08-15T12:10:06.260 に答える
0

.5 をより大きな数値に変更してみてください。

于 2012-08-31T21:11:48.133 に答える