unity小白的學習筆記-InputManager


今天嘗試做個小Demo,玩過一些PC端游戲的朋友應該知道很多游戲都可以自定義按鍵,就像這樣:

通過傳統方法獲得按鍵信息時,我是這樣做的

 

 

 那問題來了,如果策划或者玩家不想通過按W實現向前移動呢?或則說玩家想按Q向前移動,改代碼當然可以實現玩家需求,但這絕不是最理想的,好在unity給我們提供了一個功能強大的InputManager。

通過Edit->Project Settings->Input即可打開InputManager面板,如下

 

 我們看到,InputManager面板類似數組,unity已經預先幫我們定義了18個數組元素,選擇打開一個元素我們可以看到很多屬性

 

 name屬性就是元素名,這里我們從字面理解應該是控制水平移動,每個元素都伴有4個按鍵,分成兩組如圖right和d鍵都是控制向右移動,left和a都是控制向左移動,上面的兩個Descriptive分別是對Negative button和Positive botton的描述,將來會顯示在游戲的設置面板中,參考守望先鋒的互動、技能1、技能2……再下面的Sensitivity是靈敏度,差不多就是按下按鍵時有一段平滑過渡時間,相應的,Gravity就是松開按鍵。中間的Dead是為了防止誤觸的,一般用於搖桿,不做詳細介紹。而Snap如果啟用它,當按下反向按鍵時值會直接變成0,Invert就是翻轉,把正向按鍵變成負向按鍵,負向按鍵變成正向按鍵。再下面的Type是類型,有三種:Key or Mouse Button、Mouse Movement、Joystick Axis。Key or Mouse Button是控制按鍵類型的輸入,Mouse Movement是控制鼠標移動的輸入,Joystick Axis是控制搖桿的。Axis是設備的輸入軸,這里是X軸,畢竟左右移動是沿自身X軸移動,這里總共有28中選擇,前3種分別是X axis代表X軸、Y axis代表Y軸、3rd axis代表滾輪,后面的都是搖桿的輸入軸,不做討論。最后一個Joy Num也是搖桿的屬性,不做討論。

當然按鍵種類遠不止這18中,我們可以通過改Axes的size屬性來實現增加按鍵數量。那如果我們想設置3種按鍵來控制向右移動呢?unity中同時還支持不同元素可以有相同的名字,我們只需再設置一個名為Horizontal的元素即可。

既然有了這么多元素,那我們在代碼中如何引用呢?

 

 

 總共有這5種,前三種是獲得鼠標操作,0是右鍵的意思,返回一個布爾值,按下為true,后面兩種很好理解,一個是按下按鍵時返回true,一個是松開按鍵時返回true,這兩個是瞬時的知發生一幀,如果想做到fps游戲中按下持續開火的效果就使用GetMouseButton,按下時它會一直返回true

而GetAxis和GetAxisRaw都是根據axisName名稱(比如說Horizontal注意要與InputManager面板一致)返回虛擬輸入軸中的值,正向的返回+1負向返回-1否則為0,兩者的區別是GetAxisRaw是不平滑過渡,就是按下按鍵直接從0變到+-1;而GetAxis有一個平滑過渡時間,我們實現人物移動時可以用它


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM