Java 将精灵向左或向下移动要比向右或向上移动快

Java 将精灵向左或向下移动要比向右或向上移动快,java,lwjgl,slick,Java,Lwjgl,Slick,我正在用Slick2D和LWGJL制作一个基本游戏,但我有一个棘手的问题,当我将我的玩家(图像)向左/向下移动时,它比向右/向上移动慢 Input input = gc.getInput(); if(input.isKeyDown(Input.KEY_W)){ PlayerY += delta * .1f; } if(input.isKeyDown(Input.KEY_S)){ PlayerY -= delta * .1f; }

我正在用Slick2DLWGJL制作一个基本游戏,但我有一个棘手的问题,当我将我的玩家(图像)向左/向下移动时,它比向右/向上移动慢

Input input = gc.getInput();

    if(input.isKeyDown(Input.KEY_W)){
        PlayerY += delta * .1f;
    }
    if(input.isKeyDown(Input.KEY_S)){
        PlayerY -= delta * .1f;
    }

    if(input.isKeyDown(Input.KEY_A)){
        PlayerX -= delta * .1f;
    }
    if(input.isKeyDown(Input.KEY_D)){
        PlayerX += delta * .1f;
    }
所有这些代码都在方法update()中

编辑:我的所有代码都可以在这里查看

任何帮助都将不胜感激

  //Setting the original PlayerX and PlayerY values
    private static int PlayerX = Game.ScreenLength/2;
    private static int PlayerY = Game.ScreenHeight/2; 
vs

   if(input.isKeyDown(Input.KEY_W)){
        PlayerY += delta * .1f;
    }
    if(input.isKeyDown(Input.KEY_S)){
        PlayerY -= delta * .1f;
    }

    if(input.isKeyDown(Input.KEY_A)){
        PlayerX -= delta * .1f;
    }
    if(input.isKeyDown(Input.KEY_D)){
        PlayerX += delta * .1f;
    } 

看到问题了吗?将PlayerX和PlayerY(Delta也只是以防万一)更改为float,您的问题将得到解决。记住,当你从float转换为int时,它总是向下取整。

当你给每个delta添加一个负号,从而反转控件时,它是否仍然具有相同的效果?它将我的播放器移动到另一侧,但总是向上移动,向右移动则较慢。。有趣的是,问题可能在
PlayerX
PlayerY
处理的某个地方。我得看看那个密码。你没有任何重力或风,对吗?你可以在游戏的介绍中说,有一股非常强烈的东北风。不,这里没有任何这样的东西:P。现在有一个游戏代码的链接,如果你有时间,你可以偷看一下:)@JoeTannoury任何时候,我前几天也有同样的问题。我创建了一个int,然后添加了delta,它是一个浮点,因为我想保留一个侧计数器。我的计时器一直保持在零,最后我实现了(int)0+(float)0.9=0,因为int将删除小数点后的所有内容。