2016-12-22 2 views
1

私がやろうとしているのは、私のアンドロイドデバイス上で指をドラッグして左右に長方形を動かすことです。私は指を持ち上げずに止まると、長方形が止まるようにしたい。これは可能ですか?私はどのようにタッチを終了できますか? LibGDX

マイInputHandlerコード:

@Override 
public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
    lastTouch.set(screenX, screenY); 
    return false; 
} 

@Override 
public boolean touchDragged(int screenX, int screenY, int pointer) { 
    // Determines if my finger is moving to the left or right 
    Vector2 newTouch = new Vector2(screenX, screenY); 
    Vector2 delta = newTouch.cpy().sub(lastTouch); 

    // Moves the player right 
    if(delta.x > 0f) { 
     world.getPlayer().setVel(5.0f, 0f); 
    } else { 
     // Moves the player left 
     if(delta.x < 0f) { 
      world.getPlayer().setVel(-5.0f, 0); 
     } 
     // This is not being called 
     else 
      world.getPlayer().setVel(0f, 0f); 
    } 

    lastTouch = newTouch; 
    return false; 
} 

@Override 
public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
    world.getPlayer().setVel(0f, 0f); 
    return false; 
} 
+0

戻り値を 'false'から' true'に変更しようとしましたか?それ以外の場合は、[GestureDetector](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/input/GestureDetector.GestureAdapter.html)を見てください。特に 'pan()'と ' panStop() 'メソッドを呼び出します。 'InputMultiplexer'を使って複数の入力プロセッサを使うことができます。 – Marius

+0

'touchDragged'でtrueを返さないと' touchDragged'と 'touchUp'は呼び出されません – Tenfour04

答えて

0

あなたが入力が正確にタッチスクリーンは、ピクセル正確ではありませんので、指がオンになっているピクセルになることはありませんtouchDrag時に問題があります。あなたの指は同時に複数のピクセルで画面に当たる。次に、デバイスは、どのピクセルがアプリケーションに送られるかを決定する。

可能な解決策は、プレーヤーを動かすために到達しなければならない最小限のデルタを追加することです。最小デルタに達していない場合は、移動を停止します。

if(delta.x > 20f) { 
     world.getPlayer().setVel(5.0f, 0f); 
    } else { 
     // Moves the player left 
     if(delta.x < -20f) { 
      world.getPlayer().setVel(-5.0f, 0); 
     } 
     // This is not being called 
     else 
      world.getPlayer().setVel(0f, 0f); 
    } 

この場合、最小デルタは20です。あなたのニーズに合った値で遊ぶ必要があります。

+0

ありがとう!それは働いた – ECHOWAFFLE

関連する問題