如何分割XBOX One控制器上的触发器?

2024-05-15 17:23:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够独立检测到扳机拉闸,但触发器似乎共享一个轴。在

我在MSDN文档中没有看到xboxone控制器上的任何内容,但是对于xbox360控制器,DirectInput触发器共享轴,XInput为每个触发器提供单独的轴。这表明pygame使用的是DirectInput而不是Xinput,但是我不知道如何强制pygame使用Xinput。在

游戏中如何使用直接输入法代替输入法? 如果这真的不可行,我愿意用另一种语言。在

我使用此脚本从控制器读取输入:

import pygame
pygame.init()

screen = pygame.display.set_mode((400,400))
joysticks = []

for i in range(0, pygame.joystick.get_count()):
    joysticks.append(pygame.joystick.Joystick(i))
    joysticks[-1].init()

while True:
    for event in pygame.event.get():
        print event

编辑:我现在没有时间把这些写出来,但与此同时,我发现了一个对我有用的代码(在Xbox One频谱控制器上):https://github.com/r4dian/Xbox-360-Controller-for-Python


Tags: ineventforgetinit控制器pygame触发器
1条回答
网友
1楼 · 发布于 2024-05-15 17:23:28

第一个:

来自https://en.wikipedia.org/wiki/DirectInput#DirectInput_vs_XInput

As of 2011 XInput is for Xbox 360 controllers, while DirectInput is for any controller

第二:

Pygame is an SDL binding.

因此,pygame可以有{}支持,如果{}有。遗憾的是,SDL没有。 原因是我之前写的,DirectInput更受欢迎。 另请查看: http://forums.libsdl.org/viewtopic.php?t=6352&sid=35bdc1b1615f9ea081671ff548a7e360

如果愿意,您仍然可以围绕XInput API编写包装器。在

编辑:

链接到的repo使用ctypes创建XInput API的包装器。在

相关问题 更多 >