Java 将精灵向左或向下移动要比向右或向上移动快
我正在用Slick2D和LWGJL制作一个基本游戏,但我有一个棘手的问题,当我将我的玩家(图像)向左/向下移动时,它比向右/向上移动慢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; }
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将删除小数点后的所有内容。