gpt4 book ai didi

java - libgdx 某些按键比其他按键快?

转载 作者:行者123 更新时间:2023-12-02 03:24:12 25 4
gpt4 key购买 nike

我最近开始使用 libgdx 进行编码,并构建了一个小型“在世界中移动”游戏。问题是向上和向左(W 和 A)移动比向右和向下移动更快。 W、A 和 D、S 的代码没有区别。这是我的输入处理代码,在“渲染”之后的每一帧都会被调用:

public void processInput() {
float delta = Gdx.graphics.getDeltaTime();
System.out.println(1.0/delta);
if (Gdx.input.isKeyJustPressed(Keys.A)) {
player.posX -= 100 * delta;
player.startAnimation(0); // Animation 0 = LEFT
elapsedTime = 0;
} else if (Gdx.input.isKeyJustPressed(Keys.D)) {
player.posX += 100 * delta;
player.startAnimation(1); // Animation 1 = RIGHT
elapsedTime = 0;
}
if (Gdx.input.isKeyJustPressed(Keys.W)) {
player.posY -= 100 * delta;
player.startAnimation(2); // Animation 2 = BACK
elapsedTime = 0;
} else if (Gdx.input.isKeyJustPressed(Keys.S)) {
player.posY += 100 * delta;
player.startAnimation(3); // Animation 3 = FRONT
elapsedTime = 0;
}
if(Gdx.input.isKeyJustPressed(Keys.ESCAPE)){
Gdx.app.exit();
}

boolean pressed = false;
if (Gdx.input.isKeyPressed(Keys.A)) {
player.posX -= 100 * delta;
pressed = true;
} else if (Gdx.input.isKeyPressed(Keys.D)) {
player.posX += 100 * delta;
pressed = true;
}
if (Gdx.input.isKeyPressed(Keys.W)) {
player.posY -= 100 * delta;
pressed = true;
} else if (Gdx.input.isKeyPressed(Keys.S)) {
player.posY += 100 * delta;
pressed = true;
}
if (!pressed) {
player.stopAnimation();
}

if(player.posX < 0){
player.posX = 0;
}
if(player.posY < 0){
player.posY = 0;
}
if(player.posX > world.sizeX()*50){
player.posX = world.sizeX()*50;
}
if(player.posY > world.sizeY()*50){
player.posY = world.sizeY()*50;;
}

player.update(delta);
}

这里还有一个包含完整代码的保管箱链接:https://www.dropbox.com/sh/p8umkyiyd663now/AAC4zt716rII-8sQpEbfuNuZa?dl=0

最佳答案

问题在于您将玩家位置存储为整数值。经过增量计算后,玩家速度非常小,因此将浮点值转换为整数会对速度产生巨大影响。

比较

对于 W 和 A 键,Delta 位置整数为 2,对于 S 和 D 键,Delta 位置为 1。

在这两种情况下, float 位置的增量位置约为 1.7。

解决方案:使用浮点值来存储玩家位置。仅在某些基于网格的游戏中使用整数值才有意义。

public float posX;
public float posY;

关于java - libgdx 某些按键比其他按键快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39206431/

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