使用 gdx-controllers 确定是否按下了 dpad 上的按钮
Determine if button on dpad is pressed using gdx-controllers
我希望轮询各种状态,而不是使用基于事件的输入。
PS4
控制器的映射..
public class PS4 {
public static final int BUTTON_CROSS = 1;
public static final int BUTTON_SQUARE = 0;
public static final int BUTTON_TRIANGLE = 3;
public static final int BUTTON_CIRCLE = 2;
public static final int BUTTON_OPTIONS = 9;
public static final int BUTTON_SHARE = 8;
public static final int BUTTON_R1 = 5;
public static final int BUTTON_R2 = 7;
public static final int BUTTON_R3 = 11;
public static final int BUTTON_L1 = 4;
public static final int BUTTON_L2 = 6;
public static final int BUTTON_L3 = 10;
public static final int BUTTON_MOUSE = 13;
public static final int BUTTON_PS = 12;
public static final PovDirection BUTTON_DPAD_UP = PovDirection.north;
public static final PovDirection BUTTON_DPAD_DOWN = PovDirection.south;
public static final PovDirection BUTTON_DPAD_RIGHT = PovDirection.east;
public static final PovDirection BUTTON_DPAD_LEFT = PovDirection.west;
}
游戏构造函数Screen
..
public GameScreen () {
Controllers.addListener(this);
if(Controllers.getControllers().size == 0) {
setHasControllers(false);
System.out.println("none"); // this is not printed
} else {
controller = Controllers.getControllers().first();
}
}
在我的 render()
方法中,我如何实际查看是否按下了方向键上的按钮?
if (controller.getPov(PovDirection.north)){
// move character up
}else if (controller.getPov(PovDirection.south)){
// move character down
}
首先,请确保控制器 是 一个 PS4 控制器。
我没有带控制器,所以你可以玩弄绳子直到它被检测到
if (controller.getName.toLowerCase().contains("ps4")) {
...
}
此外,在您的游戏中class,您需要实现接口ControllerListener。
public class Game implements ControllerListener {
...
}
例如,这是 buttonDown 的实现:
@Override
public boolean buttonDown(Controller controller, int buttonCode) {
if (buttonCode == PS4.BUTTON_CROSS) {
...
}
return false;
}
此外,您应该检查按下的控制器是否相同。
我希望轮询各种状态,而不是使用基于事件的输入。
PS4
控制器的映射..
public class PS4 {
public static final int BUTTON_CROSS = 1;
public static final int BUTTON_SQUARE = 0;
public static final int BUTTON_TRIANGLE = 3;
public static final int BUTTON_CIRCLE = 2;
public static final int BUTTON_OPTIONS = 9;
public static final int BUTTON_SHARE = 8;
public static final int BUTTON_R1 = 5;
public static final int BUTTON_R2 = 7;
public static final int BUTTON_R3 = 11;
public static final int BUTTON_L1 = 4;
public static final int BUTTON_L2 = 6;
public static final int BUTTON_L3 = 10;
public static final int BUTTON_MOUSE = 13;
public static final int BUTTON_PS = 12;
public static final PovDirection BUTTON_DPAD_UP = PovDirection.north;
public static final PovDirection BUTTON_DPAD_DOWN = PovDirection.south;
public static final PovDirection BUTTON_DPAD_RIGHT = PovDirection.east;
public static final PovDirection BUTTON_DPAD_LEFT = PovDirection.west;
}
游戏构造函数Screen
..
public GameScreen () {
Controllers.addListener(this);
if(Controllers.getControllers().size == 0) {
setHasControllers(false);
System.out.println("none"); // this is not printed
} else {
controller = Controllers.getControllers().first();
}
}
在我的 render()
方法中,我如何实际查看是否按下了方向键上的按钮?
if (controller.getPov(PovDirection.north)){
// move character up
}else if (controller.getPov(PovDirection.south)){
// move character down
}
首先,请确保控制器 是 一个 PS4 控制器。
我没有带控制器,所以你可以玩弄绳子直到它被检测到
if (controller.getName.toLowerCase().contains("ps4")) {
...
}
此外,在您的游戏中class,您需要实现接口ControllerListener。
public class Game implements ControllerListener {
...
}
例如,这是 buttonDown 的实现:
@Override
public boolean buttonDown(Controller controller, int buttonCode) {
if (buttonCode == PS4.BUTTON_CROSS) {
...
}
return false;
}
此外,您应该检查按下的控制器是否相同。