简单的LibGDX Pong游戏拖动玩家而不是获得x的位置

我在LibGDX有一个工作的pong游戏,但是当我触摸屏幕时,玩家x自动跳到我触摸的坐标。 如果我将手指向左或向右滑动,我不想通过我的游戏检测到我已触摸,然后将播放器向左/向右移动。

这是我到目前为止所尝试的:

if(Gdx.input.isTouched() && Gdx.input.getY()>240*screenheight){ if(tapped)TouchX = Gdx.input.getX(); tapped = false; DragX = Gdx.input.getX(); distance = player.getX() - TouchX; PlayerX = Gdx.input.getX() + distance; Gdx.app.log("PlayerX "+player.getX(), "Distance "+distance); Gdx.app.log("DragX ", ""+DragX); }else{ tapped = true; } 

在这里我更新玩家的X坐标

 player.setX(PlayerX); 

有谁知道如何使这项工作?

Solutions Collecting From Web of "简单的LibGDX Pong游戏拖动玩家而不是获得x的位置"

您可以使用InputAdapter类和方法

 touchDown(int screenX, int screenY, int pointer, int button) Called when the screen was touched or a mouse button was pressed. boolean touchDragged(int screenX, int screenY, int pointer) Called when a finger or the mouse was dragged. boolean touchUp(int screenX, int screenY, int pointer, int button) Called when a finger was lifted or a mouse button was released. 

您可以随时更新位置:

 currentPos = currentPos + Math.signum(currentPos - touchedPos) * wayPerTime * deltaTime; 
  • wayPerTimestep是你的速度。
  • deltaTime是自上次更新以来的时间。
  • currentPos是玩家的当前位置(可能是xy或两者都是vector)。
  • touchedPos是玩家在屏幕上点击的位置(可能是xy或两者都是vector)。

Math.signum()如果值为正,则给予+1否则给予-1 。 否则0 。 无论玩家和点击位置之间的距离有多大,这都要保持相同的速度。

代码使用这个公式来计算s

方式是速度乘以时间