如何在每次单击时来回滑动此块 - LibGDX

时间:2014-10-23 17:35:39

标签: java android libgdx

我已经有了这个代码,当单击鼠标一次时,块会从左向右移动。我想要实现的是,当再次单击鼠标然后再次向右移动时,块再次向左移动,依此类推,依此类推。我将在下面包含图片,以便您了解我想要实现的目标。

到目前为止

代码:

boolean hasBeenTapped = false;

public void update(float delta){

    velocity.x += speed*delta;

    if (Gdx.input.justTouched()){
        hasBeenTapped = true;
    }

    if (hasBeenTapped && getX() < 864){
        setX(getX() + velocity.x*delta);

    }

    if (getX()>864){
        setX(864);
    }


}

图片:

这就是游戏的开头:http://i.imgur.com/wU6ej1J.png

这就是我点击鼠标时的结果:http://i.imgur.com/i0IpJd4.png

我希望能够多次单击鼠标并使其在这两点之间滑动。

非常感谢。

3 个答案:

答案 0 :(得分:0)

我无法测试以下代码,但它应该适合您,或者至少它可以给您一个想法:

boolean control = false;
velocity.x += speed * delta;

if (Gdx.input.justTouched()){
    hasBeenTapped = true;
}

if (hasBeenTapped && getX() < 864 && control == false){
    setX(getX() + velocity.x*delta);            
}

if (getX()>864){
    setX(864);          
    control = true;         
    hasBeenTapped = false;
}

if (hasBeenTapped && getX() == 864 || getX() < 864 && control == true){
    setX(getX() - velocity.x * delta);
}

if (getX()< 0){
    setX(0);    
    control = false;
    hasBeenTapped = false;                      
}

答案 1 :(得分:0)

如果速度是块的当前速度,您可以在每次点击时简单地反转它,然后块将以相反的方向移动:

if (Gdx.input.justTouched()){
   hasBeenTapped = true;
   speed = - speed;
}

如果您想在到达边界时也反转方向:

if (getX()<0 || getX()>864){
   speed = - speed;
}

您还需要左边检查:

if (getX()<0) { 
   setX(0);
}

在检查左边界或右边界时你还应该考虑块的宽度,否则就会有一部分块在边界之后。

答案 2 :(得分:0)

为尽可能简化此操作,您可以使用钳位功能确保您的块始终在您想要的范围内。我将hasBeenTapped更改为shouldMove,因为我认为它可能会在以后变得更复杂的情况下进行测试。

boolean shouldMove = false;

public void update(float delta){

    if (Gdx.input.justTouched()){
        shouldMove = true;
        speed *= -1; //negate the speed to reverse directions
    }

    if (shouldMove)
        setX( Math.clamp(getX() + speed*delta, 0, 864) );
    }
}