Java 我怎样才能用射击补伤结束一次补伤?LibGDX
我想做的是在android设备上拖动手指左右移动一个矩形。我希望矩形在我停止时停止,而不抬起手指。这可能吗 我的InputHandler代码: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
@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()
方法。通过使用输入多路复用器
,触摸拖动
和触摸
可以使用多个输入处理器,如果在触摸