Pygame: начальное значение аналогового триггера не является нейтральной позицией триггера - PullRequest
0 голосов
/ 12 ноября 2018

Я разрабатываю приложение, которое использует pygame для чтения аналоговых значений триггера с геймпада в стиле XBox 360.Это приложение полагается на то, что триггеры инициализируются в нейтральной позиции, или же это приводит к неопределенному поведению.

Проблема: аналоговые триггеры интерпретируются как оси в пигаме, и те инициализируются равными 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)
...