持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情
pygame 处理操纵杆盲区
由于模拟摇杆和其他轴设备是机械设备,因此它们会遭受磨损,甚至全新的控制器也可能有缺陷。这可能导致棍子在未纵时摆动少量。如果您看到连续不断的JOYAXISMOTION事件而没有触及任何东西,那么您的控制器就会受到这种情况的影响。不过,不要把它扔掉 - 这个问题很容易在代码中处理。如果轴的值非常接近于零,则将其设置为零。这会在摇杆中心产生所谓的死区,在那里不会检测到任何移动。它应该足够小,以便玩家不会注意到它,但仍然掩盖磨损的棍子发出的任何噪音。
将以下代码段添加到上一个清单中(紧随axis_x并分配axis_y之后)以创建死区:
操纵杆对象
操纵杆对象包含您需要从操纵杆获得的所有信息。您插入的每个操纵杆或游戏控制器都可以有一个。让我们更详细地看一下操纵杆对象。它们包含以下方法:
-
joystick.init。必须在操纵杆对象中的其他函数之前调用。
-
joystick.quit - 取消初始化操纵杆。在对此进行调用后,Pygame将不再从设备发送任何与操纵杆相关的事件。- - joystick.get_id - 检索操纵杆的 ID(与提供给操纵杆构造函数的 ID 相同)。
-
joystick.get_name - 检索操纵杆的名称(通常是制造商提供的字符串)。此字符串对于所有操纵杆都是唯一的。
-
joystick.get_numaxes - 检索操纵杆上的轴数。
-
joystick.get_axis - 检索轴的 -1 和 +1 之间的值。此函数获取您感兴趣的轴的索引joystick.get_numba11s 检索操纵杆上的轨迹球数。轨迹球类似于鼠标,但只提供相对运动。
-
joystick.get_bal1 - 检索包含自上次调用以来球的 x 轴和 y 轴中相对运动的元组
-
get_bal1。获取您感兴趣的球的索引。
-
joystick.get_button - 检索按钮的状态,该状态将为 True(对于按下)或 False(对于未按下)。此函数获取您感兴趣的按钮的索引。
-
joystick.get_numhats - 检索操纵杆上方向键的数量。
-
joystick.get_hat - 检索作为 x 和 y 轴的两个值的元组的 hat 状态。此函数获取您感兴趣的帽子的索引。
查看操纵杆的运行情况
让我们编写一个脚本来帮助您玩 py 游戏。操纵杆模块。清单 6-8 粗略地表示了操纵杆的当前状态,包括轴、方向键和所有按钮。您可以在插入的操纵杆之间切换
按数字键(0 是第一个操纵杆,1 是第二个操纵杆,依此类推)。
如果您在让操纵杆在游戏中工作时遇到问题,请使用清单 6-8 对其进行测试(参见图 6-4)。您可以轻松判断按钮或控件是否无法正常工作。