XNA-輸入設備

  • 7107
  • 0
  • XNA
  • 2009-10-30

XNA-輸入設備

    這次來介紹一下XNA所提供的三個主要的輸入設備鍵盤、滑鼠、Xbox360搖桿,而之前就提過三者之間的差異(請參考從Windows到Xbox360),然而此篇文章最主要就是要如何使用內建的函數來抓取我們所使用的輸入設備。

    要鍵盤使用時,需要先宣告出一個存放鍵盤狀態型態(KeyboardState)的變數,然後接下來就是透過Keyborad這個類別底下的成員函數GetState去抓取鍵盤的狀態,直接指派給剛剛宣告出來存放鍵盤型態的變數即可。

KeyboardState 變數名稱 = Keyboard.GetState();

    然後使用KeyboradState底下的IsKeyDown成員函數,參數就是你所選擇的按鍵Keys的成員變數,它通常搭配著if來作判斷。

if ( 鍵盤狀態變數.IsKeyDown( Keys.按鍵 ) )

    使用滑鼠和鍵盤時也是差不多,需要先宣告一個存放滑鼠狀態(MouseState)的變數,然後透過mouse底下的成員函數GetState去抓取滑鼠的狀態,指派給剛剛宣告出來存放滑鼠型態的變數即可。

MouseState 變數名稱 = Mouse.GatState();

    然而這個MouseState提供了幾個常會用到的成員變數,底下舉4個常用到的按鍵。

成員變數 意義
X X軸所在的座標位置
Y Y軸所在的座標位置
LeftButton 左鍵
RightButton 右鍵

    他和鍵盤不一樣的地方在於它沒有IsKeyDown這個函數可以用來檢測滑鼠的按鍵有沒有被按下去,因次必需使用到ButtonState類別的成員變數Pressed,然後運用(==)來判斷是否有被按下。

if( 滑鼠狀態變數.LeftButton == ButtonState.Pressed ) )

    而使用Xbox360搖桿的話,我只有在Xbox360上面測試成功而已,Windows沒測試過,但應該是可以的,而且編譯上也不會出現什麼出錯,只是必須要裝微軟的軟體才能夠在Windows上使用Xbox360的搖桿而已。

    而搖桿也是必須先宣告一個存放遊戲搖桿狀態(GamePadState)的變數,然後透過GamePad底下的成員函數GetState去抓取搖桿的狀態,如果是在Windows上的參數則必須是PlayerIndex.One,在Xbox360上才可以到four這麼多,但是2P以上的玩家也必須擁有XNA開發者俱樂部的權限才可以登入一起遊玩該遊戲。

GamePadState 變數名稱 = GamePad.GetState(PlayerIndex.One);

    再來就是介紹遊戲搖桿狀態下有幾個常用的成員函數,成員變數也無非是該按鍵的特性,只需要知道成員函數的功用大概就可以知道裡面的成員變數是什麼。

成員函數 按鍵內容
button A,B,X,Y
Dpad 十字鍵
ThumbSticks 有分左右類比鍵
triggers 指RT或LT鍵

    裡面需要注意的是類比鍵回傳的值是-1.0到1.0之間的浮點數值(之前在製作遊標需要注意的地方有提過),再來需要注意的就是RT和LT鍵,它則是回傳0.0到1.0之間的浮點數值,可以用來作按下去的程度來判斷輕重,舉例像是踩油門一樣有分輕重,藉此可做不同的判斷或是給魚的數值有所不同。