簡體   English   中英

切換變量但輸入是連續的算法

[英]Algorithm to toggle a variable but the input is continuous

我正在制作一個從 xbox controller 讀取輸入的程序,並且代碼中有一些 boolean 變量需要切換。 我的 function 有這個模板。

void toggle(bool condition, bool &variable) // Used to toggle variables
{
}

條件參數將是 controller 上的按鈕(例如 buttonA),變量參數是對需要切換的變量的引用(例如蹲下)

問題是,由於 controller 輸入不斷被讀取,玩家無法足夠快地按下和釋放按鈕,以至於它不會被多次讀取,這導致我試圖切換的變量只是快速來回切換。 我想要的行為是,當按下 A 時,蹲下的值會變為與其相反的值(蹲下 =.crouching),但我只希望它在按下按鈕時運行一次並等待它被釋放之前可以再次調用 function。 我已經嘗試過,但我想不出一個算法來做到這一點。 任何幫助表示贊賞!

這是 RAW 輸入的常見問題。 這就是操作系統提供各種類型的事件及其處理程序的原因。 一個例子是這里WM_KEYDOWN
如果原始輸入是唯一的選擇,您可以使用中間過濾器,其結果可用於實際切換您的情況下的變量。

例如,如果r,P代表按鈕的釋放和按下狀態,則類似 rrrrrrrrrrrrrrPPPPrrrrrrrrrrrPPrrrrrrrrrrrr 之類的序列意味着您需要在r -> P轉換發生時切換它。 可能你可以有一個只有 2 個元素的數組,你可以像這樣 sample[1]=sample[0]; 樣品[0]=對照。state; if(sample[0]=='r' && sample[1]='P') then toogle(變量)

此外,您可以嘗試使用更大的陣列來避免任何雜散噪聲,基本上采用基於最小人工按鍵持續時間和未輸入采樣率的閾值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM