我正在我的快板5游戏在Visual 2017实现操纵杆控制。我尝试了两种方法:让我的事件队列侦听主循环中的操纵杆事件,以及让主循环中的每个帧使用操纵杆的当前状态更新一次ALLEGRO_JOYSTICK_STATE。但是,当查看操纵杆的pos值时,我发现在这两种情况下,当杆返回到中性时,它实际上不会将x和y位置返回到0.0,而是返回到很低的值,比如0.01或0.02。在大多数情况下,这不会造成问题,但偶尔我的球员会继续缓慢移动,即使操纵杆是中性的,因为pos值太高。
是否有可靠的方法来检查操纵杆是否被推开?我最初认为“重置”位置为0.0,0.0每帧,然后只有当检测到操纵杆移动时才更改它,但事件队列实际上并不能检测到每个帧的移动,甚至当操纵杆被按住时,导致玩家在移动时“结巴”。由于“中性”值很低,我还想检查它们是否低于某个值,如果它们是“中性”的,但这似乎很不可靠,因为每次我松开操纵杆时都会看到不同的数字,我不知道它们能达到多高。
发布于 2017-05-28 21:49:14
值从-1.0到1.0不等。您可能希望有一个“死区”,其中任何小于0.05的值都被视为0。最终,您可能会让玩家配置这个。
使用事件比轮询更可取,因为您避免了轮询之间丢失事件的风险。
https://stackoverflow.com/questions/44231587
复制相似问题