我正在开发一个使用pygame从XBox 360样式游戏手柄读取模拟触发值的应用程序。 此应用程序依赖将触发器初始化到中间位置,否则会导致行为不确定。
问题:模拟触发器在pygame中被解释为轴,并且在收到第一个用户输入之前将其初始化为0。但是触发器的中立位置(未按下触发器)被映射为-1.0。
因此,直到我以某种方式同时按下两个触发器之前,尽管我没有按下任何按钮,但对于两个触发器,我接收到的信号都是“半按下”的。
是否可以指定操纵杆对象的初始状态?我已经尝试定义一个自定义的JOYAXISMOTION
事件,但没有帮助。
最小代码示例:
import pygame
import time
pygame.joystick.init()
if pygame.joystick.get_count() <= 0:
print("No joystick or gamepad found")
exit()
device = pygame.joystick.Joystick(0)
device.init()
print(device.get_numaxes())
while True:
pygame.event.get()
# here, it prints 0.0, 0.0 when not touching the triggers,
# until I press them
print("Left trigger: {}\t Right trigger: {}".format(device.get_axis(2), # left trigger
device.get_axis(5))) # right trigger
time.sleep(0.1)