[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 编码查看转换 | 代码下载 | 常见问题及讨论 | Python游戏编程讨论 | 《深入解析ASP核心技术》 | Python游戏编程教程 | HEIC转JPG工具
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]pygame.CONTROLLER_BUTTON_A这样写,是手柄的A / ×键吗

上一篇:[备忘]win10编译SteamworksPy的方法。
下一篇:[备忘]pygame转Godot的疑惑

添加日期:2026/8/23 3:40:39 快速返回   返回列表 阅读17次
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 会帮你映射到各手柄对应的下方按键
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved