Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
右上、左下、左下等之间的转换(JAVA游戏LWJGL keylistener)_Java_Lwjgl_Keylistener - Fatal编程技术网

右上、左下、左下等之间的转换(JAVA游戏LWJGL keylistener)

右上、左下、左下等之间的转换(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)){

我正在用LWJGL和Slick2d重拍boulderdash,我遇到了一些我安装的另一个boulderdash重拍中不存在的问题(Jim-cool),这意味着它可以解决

我做了一个简单的按键监听器动作,看起来像这样

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;
    }

我不知道我怎么会想不出来。有时候我只是在最简单的事情上失败了。吸取的教训。非常感谢你的帮助。现在我觉得问这样愚蠢的问题很愚蠢:)我不知道我怎么会想不出来。有时候我只是在最简单的事情上失败了。吸取的教训。非常感谢你的帮助。现在我觉得问这样愚蠢的问题很愚蠢:)