2017-05-28 90 views
1

我在Visual Studio 2017中的Allegro 5遊戲中實現了遊戲杆控件。我嘗試了這兩種方法:通過讓我的事件隊列在主循環中偵聽遊戲杆事件,並在遊戲杆的當前狀態下在我的主循環中每幀更新一次ALLEGRO_JOYSTICK_STATE。但是,在查看遊戲杆的pos值時,我發現在這兩種情況下,當杆返回中性時,實際上並沒有將x和y位置返回到0.0,而是返回非常低的值,如0.01或0.02。大多數情況下,這並不會導致問題,但即使操縱桿處於中立位置,我的玩家偶爾也會繼續緩慢移動,因爲這些值太高。Allegro 5:檢查遊戲杆是否爲「中性」

是否有可靠的方法來檢查操縱桿是否被推動?我最初想到的是將每個幀的位置「重置」爲0.0,0.0,然後僅在檢測到操縱桿移動時才更改該位置,但即使按下操縱桿,事件隊列也不會實際檢測到每幀移動,導致玩家移動時「口吃」。由於「中性」價值很低,我還考慮檢查它們是否低於某個價值,如果它們是「中性」的話,但這看起來非常不可靠,因爲每次我放棄時都會看到不同的數字操縱桿,我不知道他們可以走多高。

+0

這個問題當然可以與您的操縱桿。嘗試重新校準。懶惰的解決方案是限制你的價值來限制接近中立的位置,但這可能會影響遊戲性。 – Rook

回答

1

數值從-1.0到1.0不等。您可能希望有一個「死區」,其中任何小於0.05的值都被視爲0.最終,您可以讓玩家配置它。

使用事件優於輪詢,因爲您可以避免輪詢之間丟失事件的風險。

+0

謝謝。我使用0.05作爲死區,它通常似乎工作。我也可以按照您的建議進行配置。 – user3726962