unity3d學習筆記1——輸入控制Input
阿新 • • 發佈:2019-02-15
在基本認識了unity相關東西后,深入瞭解下它的輸入是非常有必要的,包括滑鼠,鍵盤,移動裝置觸控等互動。
unity3d中輸入由一個InputManager管理,在編輯器中有一個InputManager的設定介面提供了一些常規的設定
Axes包含了15個控制軸,每個控制軸都可以用來控制遊戲的一個輸入
拿其中的一個軸進行舉例
看下這個名為Horizontal的控制軸
裡面有軸的名字:Name
正向輸入控制按鈕描述:Descriptive Name
負向輸入控制制按鈕描述:Descriptive Negative Name
負向輸入控制按鈕:Negative Button
正向輸入控制按鈕:Positive Button
第二個負向輸入控制按鈕:Alt Negative Button
第二個正向輸入控制按鈕:Alt Positive Button
重置為0的引數係數:Gravity(值越大,重置為0的時間越短)
判定為無輸入的上限值:Dead(其意思就是絕對值小於這個值,就判定為0)
輸出從0到最大的引數係數:Sensitivity (與Gravity是相反的操作,就是從0到輸入最大值的時間係數,該值越大,那麼時間越短)
Snap 官方描述是當正按鈕按下時,如果某個時間負按鈕按下,輸入會立即為0,但是本人測試無效,不知道什麼原因
Invert 是正負控制反向
Type 是輸入控制型別
Axis 輸入裝置型別
Joy Num,哪個輸入軸生效,預設所有輸入軸生效
上面都是unity編輯器中InputManager 中的控制,下面是實際編碼程式碼中怎麼運用:
在編碼時,我們需要知道這個類,Input
這是獲取輸入的介面類
這個類有很多靜態方法和靜態屬性
我們先看下靜態屬性
下面是所有的靜態方法獲取上一幀的加速事件(GetAccelerationEvent); |
根據編輯器InputManager 中設定的控制軸的名字來獲取該控制軸的輸入值 |
同上,只不過是沒有經過平滑處理的值。 |
獲取按鈕是否被按住(例如控制軸Fire1, 這裡的按鈕名字,其實是InputManager介面中Axes虛擬軸的名字) |
獲取按鈕是否被按下(例如控制軸Fire1) |
獲取按鈕是否被放開(例如控制軸Fire1) |
獲取鍵盤某個鍵是否被按住 |
獲取鍵盤某個鍵是否被放開 |
獲取滑鼠按鍵是否被按住(這裡的滑鼠按鍵名只有(0,1,2)) |
返回當前觸點狀態(索引從0開始)可以根據Input.touchCount來獲取當前觸點最大索引 |
將一幀內,該程式碼執行後,所有的輸入值都將為0 |