右上、左下、左下等之间的转换(JAVA游戏LWJGL keylistener)
我正在用LWJGL和Slick2d重拍boulderdash,我遇到了一些我安装的另一个boulderdash重拍中不存在的问题(Jim-cool),这意味着它可以解决 我做了一个简单的按键监听器动作,看起来像这样右上、左下、左下等之间的转换(JAVA游戏LWJGL keylistener),java,lwjgl,keylistener,Java,Lwjgl,Keylistener,我正在用LWJGL和Slick2d重拍boulderdash,我遇到了一些我安装的另一个boulderdash重拍中不存在的问题(Jim-cool),这意味着它可以解决 我做了一个简单的按键监听器动作,看起来像这样 if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) { x += Clock.delta() * speed; } else if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)){
if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
x += Clock.delta() * speed;
} else if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)){
y += Clock.delta() * speed;
} else if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
x -= Clock.delta() * speed;
} else if (Keyboard.isKeyDown(Keyboard.KEY_UP)){
y -= Clock.delta() * speed;
}
问题是,当我向左走的时候,我可以改变方向到向下,但不能改变方向到向上。当我保持右侧时,我不能向上或向下移动,当我保持右侧时,我可以向左和向右改变方向,没有问题
我的问题是-我需要如何实现这一部分以任何方式工作?我相信这一特性对良好的控制系统至关重要,因为否则玩家可能会在原地停留一秒钟,然后怪物抓住你们,你们就死定了。所以我真的在问-如何改变方向仍然保持前一个键,所以当我释放第二个键时,我会回到第一个方向 问题在于您的逻辑使用“else-ifs”而不是简单的“ifs”。在您的代码中,当按下左键时,将不会执行关于下键的“else if”。 代码应重写为:
if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
x += Clock.delta() * speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)){
y += Clock.delta() * speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
x -= Clock.delta() * speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_UP)){
y -= Clock.delta() * speed;
}
问题在于你的逻辑使用了“else-ifs”而不是简单的“ifs”。在您的代码中,当按下左键时,将不会执行关于下键的“else if”。 代码应重写为:
if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
x += Clock.delta() * speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)){
y += Clock.delta() * speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
x -= Clock.delta() * speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_UP)){
y -= Clock.delta() * speed;
}
我不知道我怎么会想不出来。有时候我只是在最简单的事情上失败了。吸取的教训。非常感谢你的帮助。现在我觉得问这样愚蠢的问题很愚蠢:)我不知道我怎么会想不出来。有时候我只是在最简单的事情上失败了。吸取的教训。非常感谢你的帮助。现在我觉得问这样愚蠢的问题很愚蠢:)