我在Visual Studio 2017中的Allegro 5游戏中实现了游戏杆控件。我尝试了这两种方法:通过让我的事件队列在主循环中侦听游戏杆事件,并在游戏杆的当前状态下在我的主循环中每帧更新一次ALLEGRO_JOYSTICK_STATE
。但是,在查看游戏杆的pos
值时,我发现在这两种情况下,当杆返回中性时,实际上并没有将x和y位置返回到0.0,而是返回非常低的值,如0.01或0.02。大多数情况下,这并不会导致问题,但即使操纵杆处于中立位置,我的玩家偶尔也会继续缓慢移动,因为这些值太高。Allegro 5:检查游戏杆是否为“中性”
是否有可靠的方法来检查操纵杆是否被推动?我最初想到的是将每个帧的位置“重置”为0.0,0.0,然后仅在检测到操纵杆移动时才更改该位置,但即使按下操纵杆,事件队列也不会实际检测到每帧移动,导致玩家移动时“口吃”。由于“中性”价值很低,我还考虑检查它们是否低于某个价值,如果它们是“中性”的话,但这看起来非常不可靠,因为每次我放弃时都会看到不同的数字操纵杆,我不知道他们可以走多高。
这个问题当然可以与您的操纵杆。尝试重新校准。懒惰的解决方案是限制你的价值来限制接近中立的位置,但这可能会影响游戏性。 – Rook