gpt4 book ai didi

java - 如何通过触发 touchUp 来结束 touchDragged? LibGDX

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:09 26 4
gpt4 key购买 nike

我想做的是通过在 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;
}

最佳答案

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

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

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。您需要考虑哪个值适合您的需求。

关于java - 如何通过触发 touchUp 来结束 touchDragged? LibGDX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41275009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com