右上,左下,左下等过渡(JAVA游戏LWJGL keylistener)

时间:2016-10-24 10:22:47

标签: java lwjgl keylistener

我正在用LWJGL和Slick2d重拍boulderdash,我遇到了一些问题,而这个问题并没有出现在我安装的另一个boulderdash翻拍中(弃用挖掘Jim-cool)所以这意味着它可以解决

我做了简单的keylistener运动,看起来像这样

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

问题是,当我向左移动时,我可以将方向改为向下仍然保持向左,但是不能将方向改为向上。当拿着右边时我不能上升或下降,当按住时我可以改变方向到左边和右边没有问题。

我的问题是 - 我如何以任何方式实施本节?我相信这个功能对于良好的控制系统至关重要,因为否则玩家可能会被困在一个地方一秒钟,然后怪物会抓住你并且你已经死了。所以我真的在问 - 如何改变方向仍然按住前一个键,所以当我释放第二个键时,我会回到第一个方向。

1 个答案:

答案 0 :(得分:2)

问题在于你的逻辑使用"否则ifs"而不是简单的" ifs"。在你的代码中,当按下LEFT时,"否则如果"关于DOWN不会被执行。 代码应重写为:

SELECT T1.No, T1.Description, T1.Item, T1.Date, sum(T2.Quantity) 
FROM myTable1 T1 
LEFT JOIN myTable2 T2 
ON T1.No = T2.No AND T1.Item = T2.Item AND T1.Date >= T2.Date 
GROUP BY T1.No, T1.Item;