【发布时间】:2021-06-02 00:13:46
【问题描述】:
我正在尝试使我的游戏能够使用 xbox one 控制器玩,我可以让它射击并退出游戏,但我的轴有问题(我尝试过使用 D-pad但它是一样的)
编辑:现在我可以让它移动,但它就像一个框架,我需要多次移动轴才能让它移动,我想保持轴 1 并且玩家移动平稳,并且由于某种原因它总是向左移动。
这是Player 类:
class Player(pygame.sprite.Sprite):
def update(self):
self.speed_x = 0
for event in pygame.event.get():
if event.type == JOYAXISMOTION:
if event.axis <= -1 >= -0.2:
self.speed_x = PLAYER_SPEED
if event.axis <= 1 >= 0.2:
self.speed_x = -PLAYER_SPEED
self.rect.x += self.speed_x
【问题讨论】:
-
你在初始化你的操纵杆吗?
joystick = pygame.joystick.Joystick( 0 )和joystick.init()。您还应该检查pygame.joystick.get_count()是否非零。 -
是的,我已经初始化了操纵杆,并测试了操纵杆。我可以射击,这意味着我猜 get_count 不为零。谢谢。
-
您是否尝试过打印
if event.type == JOYAXISMOTION或if event.axis中的事件数据? -
我得到像
<Event(1536-JoyAxisMotion {'joy': 0, 'instance_id': 0, 'axis': 1, 'value': -0.05612353892635884})>这样的数字(4 面全部为负数,全推时为-1) -
旧游戏有函数
"calibrate joystick"。游戏要求将操纵杆向所有方向移动,以便获得所有方向的最大值,然后它可以使用它来计算正确的移动。
标签: python class pygame controller