這次來介紹一下XNA所提供的三個主要的輸入設備鍵盤、滑鼠、Xbox360搖桿,而之前就提過三者之間的差異(請參考從Windows到Xbox360),然而此篇文章最主要就是要如何使用內建的函數來抓取我們所使用的輸入設備。
要鍵盤使用時,需要先宣告出一個存放鍵盤狀態型態(KeyboardState)的變數,然後接下來就是透過Keyborad這個類別底下的成員函數GetState去抓取鍵盤的狀態,直接指派給剛剛宣告出來存放鍵盤型態的變數即可。
然後使用KeyboradState底下的IsKeyDown成員函數,參數就是你所選擇的按鍵Keys的成員變數,它通常搭配著if來作判斷。
使用滑鼠和鍵盤時也是差不多,需要先宣告一個存放滑鼠狀態(MouseState)的變數,然後透過mouse底下的成員函數GetState去抓取滑鼠的狀態,指派給剛剛宣告出來存放滑鼠型態的變數即可。
然而這個MouseState提供了幾個常會用到的成員變數,底下舉4個常用到的按鍵。
成員變數 | 意義 |
X | X軸所在的座標位置 |
Y | Y軸所在的座標位置 |
LeftButton | 左鍵 |
RightButton | 右鍵 |
他和鍵盤不一樣的地方在於它沒有IsKeyDown這個函數可以用來檢測滑鼠的按鍵有沒有被按下去,因次必需使用到ButtonState類別的成員變數Pressed,然後運用(==)來判斷是否有被按下。
而使用Xbox360搖桿的話,我只有在Xbox360上面測試成功而已,Windows沒測試過,但應該是可以的,而且編譯上也不會出現什麼出錯,只是必須要裝微軟的軟體才能夠在Windows上使用Xbox360的搖桿而已。
而搖桿也是必須先宣告一個存放遊戲搖桿狀態(GamePadState)的變數,然後透過GamePad底下的成員函數GetState去抓取搖桿的狀態,如果是在Windows上的參數則必須是PlayerIndex.One,在Xbox360上才可以到four這麼多,但是2P以上的玩家也必須擁有XNA開發者俱樂部的權限才可以登入一起遊玩該遊戲。
再來就是介紹遊戲搖桿狀蓋下有幾個常用的成員函數,成員變數也無非是該案件的特性,只需要知道成員函數的功用大概就可以知道裡面的成員變數是什麼。
成員函數 | 按鍵內容 |
button | A,B,X,Y |
Dpad | 十字鍵 |
ThumbSticks | 有分左右類比鍵 |
triggers | 指RT或LT鍵 |
裡面需要注意的是類比鍵回傳的值是-1.0到1.0之間的浮點數值(之前在製作遊標需要注意的地方有提過),再來需要注意的就是RT和LT鍵,它則是回傳0.0到1.0之間的浮點數值,可以用來作按下去的程度來判斷輕重,舉例像是踩油門一樣有分輕重,藉此可做不同的判斷或是給魚的數值有所不同。
- 本文固定链接: http://www.wy182000.com/2009/02/16/xna-輸入設備/
- 转载请注明: wy182000 于 Studio 发表