首页 > 解决方案 > Libgdx 在使用 macOS 时检测到错误的键码

问题描述

我是 libgdx 的新手,我正在尝试学习使用这个框架。我习惯于在 ubuntu 上编写代码,但最近我购买了一台 macbook 以便在其上进行开发。

虽然我的代码在两个操作系统上都能完美运行。我的程序中只剩下一个错误。

当我尝试让我的角色“以自上而下的 rpg 样式”移动时,似乎 Libgdx 将我的键盘检测为 QWERTY,而我可以确保安装了 0 个键盘布局/映射作为 qwerty。只有一个 AZERTY。MacOs 也被配置为法语系统。

“苹果”机器是否有其他特殊方法可以让您的精灵在 libgdx 的屏幕上移动?到目前为止,我确实喜欢这样:

    if (Gdx.input.isKeyPressed(Input.Keys.Z))
        player.setY(player.getY() + GameSettings.playerSpeed * dt);
    if (Gdx.input.isKeyPressed(Input.Keys.S))
        player.setY(player.getY() - GameSettings.playerSpeed * dt);
    if (Gdx.input.isKeyPressed(Input.Keys.D))
        player.setX(player.getX() + GameSettings.playerSpeed * dt);
    if (Gdx.input.isKeyPressed(Input.Keys.Q))
        player.setX(player.getX() - GameSettings.playerSpeed * dt);

最后,当我按下“z”键时,什么也没有发生(仅在 macOS 上),但如果我按下“w”,它就可以正常工作。

感谢您的未来解释!

标签: libgdx

解决方案


如果您创建 InputAdapter/InputProcessor,您可以检测按下每个键时调用的键码。

这是 wiki 上的链接。

Gdx.input.setInputProcessor(new InputAdapter () {
@Override
public boolean keyDown (int keycode) {
  System.out.println("Key Down Event, keycode: "+keycode);
  System.out.println("Z keycode: "+Input.Keys.Z);
  return true; // return true to indicate the event was handled
  }
});

推荐阅读