Java 我怎样才能用射击补伤结束一次补伤?LibGDX

Java 我怎样才能用射击补伤结束一次补伤?LibGDX,java,android,libgdx,Java,Android,Libgdx,我想做的是在android设备上拖动手指左右移动一个矩形。我希望矩形在我停止时停止,而不抬起手指。这可能吗 我的InputHandler代码: @Override public boolean touchDown(int screenX, int screenY, int pointer, int button) { lastTouch.set(screenX, screenY); return false; } @Override public boolean touchD

我想做的是在android设备上拖动手指左右移动一个矩形。我希望矩形在我停止时停止,而不抬起手指。这可能吗

我的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;
}
@覆盖
公共布尔接地(整数屏幕X、整数屏幕Y、整数指针、整数按钮){
lastTouch.set(屏幕X、屏幕Y);
返回false;
}
@凌驾
公共布尔值(int-screenX、int-screenY、int-pointer){
//确定手指是向左还是向右移动
Vector2 newTouch=新Vector2(屏幕X,屏幕Y);
Vector2 delta=newTouch.cpy().sub(lastTouch);
//将玩家向右移动
如果(增量x>0f){
world.getPlayer().setVel(5.0f,0f);
}否则{
//向左移动玩家
如果(δx<0f){
world.getPlayer().setVel(-5.0f,0);
}
//这不是所谓的
其他的
world.getPlayer().setVel(0f,0f);
}
lastTouch=newTouch;
返回false;
}
@凌驾
公共布尔补色(整数屏幕X、整数屏幕Y、整数指针、整数按钮){
world.getPlayer().setVel(0f,0f);
返回false;
}

问题在于,当您触摸拖动时,输入永远不会与手指所在的像素完全一致,因为触摸屏不精确。您的手指同时以多个像素撞击屏幕。然后,设备决定将哪个像素发送到应用程序

因此,一个可能的解决方案是增加一个最小的增量,它必须达到移动玩家的目的。如果未达到最小增量,则停止移动

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);
    }
if(增量x>20f){
world.getPlayer().setVel(5.0f,0f);
}否则{
//向左移动玩家
如果(δx<-20f){
world.getPlayer().setVel(-5.0f,0);
}
//这不是所谓的
其他的
world.getPlayer().setVel(0f,0f);
}

在这种情况下,最小增量为20。您需要根据需要选择合适的值。

问题在于,当您触摸拖动时,输入永远不会与手指所在的像素完全一致,因为触摸屏不精确。您的手指同时以多个像素撞击屏幕。然后,设备决定将哪个像素发送到应用程序

因此,一个可能的解决方案是增加一个最小的增量,它必须达到移动玩家的目的。如果未达到最小增量,则停止移动

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);
    }
if(增量x>20f){
world.getPlayer().setVel(5.0f,0f);
}否则{
//向左移动玩家
如果(δx<-20f){
world.getPlayer().setVel(-5.0f,0);
}
//这不是所谓的
其他的
world.getPlayer().setVel(0f,0f);
}

在这种情况下,最小增量为20。您需要考虑哪个值适合您的需要。

您是否尝试过将返回值从
false
更改为
true
?否则,请查看,尤其是
pan()
panStop()
方法。通过使用
输入多路复用器
触摸拖动
可以使用多个输入处理器,如果在
触摸中未返回true,则不会调用
触摸
触摸
,您是否尝试将返回值从
更改为
?否则,请查看,尤其是
pan()
panStop()
方法。通过使用
输入多路复用器
触摸拖动
触摸
可以使用多个输入处理器,如果在
触摸