无法检测Pygame中的Xbox控制器移动

时间:2016-12-17 02:50:44

标签: python pygame xbox-one

我一直在使用pygame作为创建游戏的手段,我想将控制器游戏玩法融入到游戏中。我一直在pygame上使用一个新的Xbox One控制器,并且能够在pygame等中检测控制器,但是pygame.get_event函数都没有工作,并且即使我移动控制器时也总是返回它们的默认值。操纵杆并按下按钮。

我试过pygame.event.pump()无济于事。这是我的代码:

    xboxController = pygame.joystick.Joystick(0)
    xboxController.init()
    print(xboxController.get_name())
    print("Axes", (xboxController.get_numaxes()))
    print("Balls", xboxController.get_numballs())
    print("Buttons", xboxController.get_numbuttons())
    print("Hats", xboxController.get_numhats())
    if xboxController.get_init() == True: print("Initialized properly")

    while not found:
        trial += 1
        print(trial)
        pygame.event.pump()
        for a in range(0, xboxController.get_numaxes()):
            if round(xboxController.get_axis(a)*100) != 0:
                print(xboxController.get_axis(a))
        for b in range(0, xboxController.get_numballs()):
            if xboxController.get_ball(b) != 0: 
                print(xboxController.get_ball(b))
        for c in range(0, xboxController.get_numbuttons()):
            if xboxController.get_button(c) != False: 
                print(xboxController.get_axis(button(c)))
        for d in range(0, xboxController.get_numhats()):
            if xboxController.get_hat(d) != (0, 0): 
                print(xboxController.get_hat(d))

我打印出控制器的所有属性的第一部分工作正常,它似乎永远不知道何时移动控制器的操纵杆。

1 个答案:

答案 0 :(得分:1)

我也在用Xbox控制器制作游戏,并遇到了类似的问题。我的问题只是使用pygame.event.get()代替pygame.event.pump()来解决。你甚至不需要对结果做任何事情,只是让事件看起来让pygame更新了操纵杆的位置。