您建议将我的Xbox 360控制器连接到Java,并能够将关键输入作为KeyEvent读入keyPressed事件。
所以我想要这样的东西
private class KeyInputHandler extends KeyAdapter {
public void keyPressed(KeyEvent e) {
}
}
我希望所有控制器按下进入keyPressed。
如果您能为PS3控制器提供良好的库,我将非常感激。
答案 0 :(得分:7)
答案 1 :(得分:1)
有一个名为Jamepad的开源项目。 下载项目并将其添加到项目的依赖项中。 它可以与我的无线Xbox 360控制器直接使用。
我用以下输入类型制作了游戏:
public enum InputAction {
MOVE_UP, MOVE_DOWN, MOVE_LEFT, MOVE_RIGHT
}
然后,以下类将处理您的控制器,并将输入转换为您自己的内部表示形式。
public class GamepadInput {
private final ControllerManager controllers;
public GamepadInput() {
controllers = new ControllerManager();
controllers.initSDLGamepad();
}
Set<InputAction> actions() {
ControllerState currState = controllers.getState(0);
if (!currState.isConnected) {
return Collections.emptySet();
}
Set<InputAction> actions = new HashSet<>();
if (currState.dpadLeft) {
actions.add(InputAction.MOVE_LEFT);
}
if (currState.dpadRight) {
actions.add(InputAction.MOVE_RIGHT);
}
if (currState.dpadUp) {
actions.add(InputAction.MOVE_UP);
}
if (currState.dpadDown) {
actions.add(InputAction.MOVE_DOWN);
}
return actions;
}
}