GameInput 上的力回饋如何管理裝置輸出。透過力回饋,遊戲輸入裝置可以實際移動裝置的一或多個輸入控制項,為使用者提供觸覺回饋。力回饋適用於模擬載具操作的輸入裝置,例如方向盤和飛行模擬設備。這些裝置包含力回饋馬達,會沿著某個軸向對控制器施力。在賽車方向盤上,這是一種轉動方向盤以模擬遊戲中情境的旋轉力。搭配飛行搖桿使用力回饋,可讓操縱桿難以從特定位置推動或拉動。
如需支援力回饋之 GameInput 介面的詳細資訊,請參閱 IGameInputDevice 和 IGameInputForceFeedbackEffect。
檢查力回饋馬達
若要建立力回饋效果,您需要代表要套用效果之輸入裝置的 IGameInputDevice 介面。取得IGameInputDevice 介面之後,請檢查 GameInputDeviceInfo 結構,以確認裝置上的力回饋馬達數目。這可以透過呼叫 IGameInputDevice::GetDeviceInfo 來完成。如果輸入裝置中有力回饋馬達,GameInputDeviceInfo 成員 ForceFeedbackMotorCount 的值會是 1 或更大。
建立力回饋效果
如果裝置的 GameInputDeviceInfo 結構指出它有一或多個力回饋馬達,請如下列程式碼所示,呼叫 IGameInputDevice::CreateForceFeedbackEffect 為裝置建立力回饋效果。GameInputForceFeedbackParams 結構。
例如,若要建立具有彈簧行為的回饋效果,GameInputForceFeedbackParams 由 GameInputForceFeedbackEffectKind 值 GameInputForceFeedbackSpring 和彈簧的 GameInputForceFeedbackConditionParams 結構組成。請填入您所選 GameInputForceFeedbackEffectKind 列舉的參數。
依索引選取力回饋馬達效果並建立 GameInputForceFeedbackParams 結構之後,呼叫 IGameInputDevice::CreateForceFeedbackEffect 以建立效果。此效果由 IGameInputForceFeedbackEffect 介面表示。
力回饋效果的存留期與所建立的 IGameInputForceFeedbackEffect 介面相關聯。建立效果時,會將其載入至裝置。釋放最後一個參考時,力回饋效果會停止,並從裝置馬達卸載。
套用及更新力回饋效果
建立力回饋效果時,會直接將其載入至裝置馬達。力回饋馬達的記憶體有限,這會限制可同時載入和播放的力回饋效果數目。達到此限制後呼叫 IGameInputDevice::CreateForceFeedbackEffect,會導致函式傳回錯誤。 建立力回饋效果之後,它會以停止狀態載入至力回饋馬達。載入之後,請使用 IGameInputForceFeedbackEffect 介面將效果設定狀態為Running。這會在裝置馬達上播放效果。
力回饋效果的狀態
力回饋效果會經過數個狀態,以符合遊戲的目前狀態。請務必依照遊戲更新並留意效果的狀態,以維持預期的行為。 力回饋的狀態可以依據 GameInputFeedbackEffectState 設定,如下列程式碼所示。Stopped 狀態。如果將新的或已停止的回饋效果設定為 Running 狀態,則會從效果的開頭播放。將狀態設定為 Paused 會使力回饋效果停止影響馬達。不過,將處於 Paused 狀態的效果設定為 Running,會使力回饋效果從中斷處繼續套用效果模式。
停止效果會結束該效果,但您稍後可以再次觸發該效果。例如,當使用者在賽車遊戲中離開崎嶇地形時。同樣地,暫停效果適用於遊戲進行沒有變化但使用者想要瀏覽 UI 的情況,例如暫停功能表。
呼叫 IGameInputForceFeedbackEffect::SetState 以設定力回饋效果的狀態。
更新力回饋效果
如果新的 GameInputForceFeedbackParams 結構共用相同的 GameInputForceFeedbackEffectKind 列舉,您可以調整力回饋效果的增益,或提供一組新的參數。增益
如下列程式碼所示,使用 IGameInputForceFeedbackEffect::SetGain 函式調整增益,以變更力回饋效果的強度。設定新參數
如下列程式碼所示,使用 IGameInputForceFeedbackEffect::SetParams 函式為力回饋效果提供新參數。GameInputForceFeedbackConstant 的回饋效果設定參數,來變更參數以模擬不同的回饋模式。
