if event.button == pygame.CONTROLLER_BUTTON_A这样写,是手柄的A / ×键吗? ======================================== 对,是的。
pygame.CONTROLLER_BUTTON_A 表示 SDL Game Controller 的逻辑 A 键(South Face Button,下方按键),不是手柄的物理编号。
if event.button == pygame.CONTROLLER_BUTTON_A: # 开火/确认
对应关系如下:
手柄 对应按键
Xbox A
PlayStation × (Cross)
Steam Input A/×(统一为逻辑 A)
Switch Pro B(下方那个按键)
和 pygame.joystick 的区别 (1)pygame.CONTROLLER_BUTTON_A:逻辑映射,不同品牌手柄都会统一成 A/×(推荐)。 (2)pygame.joystick 的 event.button == 0:物理编号,不同手柄可能不同。 ======================================== switch pro的物理按键,B在A的左边吧? =================================== switch pro的布局是这样的: X Y A B
而 pygame.CONTROLLER_BUTTON_A 表示的是 下方(South Face Button)的逻辑按键。因此:
Xbox 上会触发 A(下方)。
PlayStation 上会触发 ×(下方)。
Switch Pro 上会触发 B(下方),即使常量名字叫 A。
这也是 SDL GameController 的设计:A/B/X/Y 是逻辑按钮,不是字母本身。对于你的游戏设置界面,直接显示 A/×(或用图标)作为“确认”,Steam Input 和 SDL 会帮你映射到各手柄对应的下方按键
|