2011-05-17 52 views
2

我有一箇中斷,在鍵盤按鍵給我的協調鍵。當數字鎖定爲ON時,這些鍵將以Numpad1,Numpad2等形式出現。當數字鎖定爲OFF時,數字鍵將變爲End,Left,Right,Up,PageLock ...我不能發生這種情況,因爲我需要將這些鍵(左,右..)作爲實際的箭頭鍵。 Id寧願輸入不受數字鎖的影響。然而,我似乎無法緩解這一點,因爲我直接從XNA獲得輸入。有人可以確認VS 2008上的XNA 3.1發生了這種情況嗎?XNA數字鎖影響輸入

回答

0

您可以爲遊戲中的每個動作定義2個鍵。

例如,不是向左移動Keys.Left,而是爲其分配另一個鍵(Numpad4)。

在你輸入校驗碼,只需將檢查是否有這2個鍵被按下:

例如:

if (IsKeyPressed(Keys.Numpad4) || IsKeyPressed(Keys.Left) 
{ 
    // Do some action. 
} 

關當然你也可以創建一個接受2個密鑰的方法和在內部執行此操作,而無需每次都編寫代碼。

+1

如果我需要做一些事情的鑰匙不同;例如帶方向鍵的運動,但其他的還有數字鍵?那麼這個解決方案就不行了。 – 2011-05-18 00:42:26

+0

這不是你最初要求的(或者我沒有理解)。你說你想用NUM ON和NUM OFF來處理鍵,因此我的建議。 – 2011-05-18 06:29:24

+0

Downvoted(僅),因爲它沒有回答預期的問題。 @安德魯·拉塞爾的答案應該排在最前面,而不是這一個(直到我做了選票)。 – Xonatron 2013-08-09 01:28:22

2

XNA內部使用win32函數GetKeyboardState來確定鍵盤狀態。此功能無法區分數字鍵盤,箭頭鍵和插入組。

顯然,您可以通過使用WM_KEYDOWN message(及其朋友)區分鍵。

我將離開在XNA應用程序中獲取win32消息所需的互操作,以及如何檢查消息的數據,作爲練習。

(我個人會建議簡單地修改你的控制方案,或者只是觀察用戶的NUM鎖定狀態。一般來說這是一個壞主意接手類似的Num-lock鍵的功能!)

+0

另一種解決方案可能是強制NUMLOCK開啓,這可能嗎? – Xonatron 2013-08-09 01:29:48

+0

對於那些感興趣的人,我只是問在這個問題中是否有可能(見上面的評論):http://stackoverflow.com/questions/18138912/can-you-turn-numlock-on-in-xna – Xonatron 2013-08-09 01:38:07