0

私は加速度計機能を使ってゲームを作っているので、デバイスを左に回すたびに船は左にバンクします。逆に、問題は船がそれ自体で左に移動し続けることです。これが私のコードです

public void onSensorChanged(SensorEvent event){
    if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
        float x = event.values[0];

        deltaX = xBefore-x;
        xBefore = x;
        if(deltaX>0){//move right
            SFEngine.playerFlightAction = SFEngine.PLAYER_LEFT_BANK_1;
        }else{//move left
            SFEngine.playerFlightAction =SFEngine.PLAYER_RIGHT_BANK_1;
        }
    }
}
4

1 に答える 1

0

デルタは使用しないでください。x > 0 かどうかを確認し、左に移動し、そうでない場合は右に移動します。

コードで deltaX が適切に計算されていません。xBefore が 0 未満で、現在の x が 0 より大きい (またはその逆) ことは考慮されません。デルタは絶対値を使用して計算する必要があります。

ただし、ここではデルタは本当に必要ないと思います。x を使用するだけです。

于 2012-10-12T05:21:05.050 に答える