pygame:模拟触发初始值不是空档触发位置

时间:2018-11-12 17:33:59

标签: pygame gamepad xinput

我正在开发一个使用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)

0 个答案:

没有答案