Allegro 5:检查操纵杆是否是"中性"

时间:2017-05-28 20:12:12

标签: c++ visual-studio allegro5

我在Visual Studio 2017的Allegro 5游戏中实现了操纵杆控件。我尝试过两种方式:让我的事件队列在主循环中监听操纵杆事件,并进行ALLEGRO_JOYSTICK_STATE更新在我的主循环中每帧一次,使用操纵杆的当前状态。然而,当查看操纵杆的pos值时,我发现在两种情况下,当棒返回到中性时,它实际上并不将x和y位置返回到0.0,而是返回到非常低的值,如0.01或0.02。在大多数情况下,这不会导致问题,但即使操纵杆处于空档状态,我的玩家偶尔也会继续移动,因为pos值太高。

是否有可靠的方法来检查操纵杆是否被按下?我最初想过"重置"如果检测到操纵杆移动,则每帧的位置为0.0,0.0,然后仅更改它,但即使操纵杆被按下,事件队列也不会实际检测到每帧的移动,导致玩家“断断续续”。 #34;在移动的同时由于"中立"价值非常低,我还考虑检查它们是否低于某个值,并考虑棒#34;中立"如果它们是,但这似乎非常不可靠,因为每次我放开操纵杆我都会看到不同的数字,而且我不确定它们能走多远。

1 个答案:

答案 0 :(得分:2)

值从-1.0到1.0不等。您可能想要一个“死区”,其中任何小于0.05的值都被视为0.最终您可以让玩家配置它。

使用事件比轮询更可取,因为您可以避免在民意调查之间丢失事件的风险。