0

在我的游戏中,我希望玩家在游戏中的任何时候摇晃他的手机,每次摇晃都会导致切换武器。

示例:玩家有刀,[摇晃手机]并切换到武士刀。

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

这行得通,问题是它有副​​作用。当玩家摇晃手机时,有时会切换两次武器。所以我想限制它,这样如果有很大的震动,游戏就不会从武器 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 回答