1. 程式人生 > >Unity Input的手柄對映

Unity Input的手柄對映

這段時間在用Unity做用手柄操作的遊戲,其中有幾個按鍵有點不解,於是查了一些資料,現在總結出來分享一下

首先這裡有張對映圖
手柄在UnityInput的對映

下面是幾個例子,比如我要在input裡面設定按A鍵,就新增一個input對映的一項。

Name

就是與Input.GetAxis( "Name" )這個函式裡面的Name相對應的名字。GetAxis出來的值一般在[-1,1]的範圍內。並且Name可以重複,重複的話Input會同時監聽所有名字相同的按鍵。比如如果要設定3個按鍵讓人物向左移動,寫兩個重複的Name以獲取最多4個按鍵或者軸的監聽。

Negative Button

這裡填正方向的輸入鍵的名稱,比如a(下面會列一份表,來表明哪些鍵可以填入)

Positive Button

這裡填正方向的輸入鍵的名稱,比如d

Alt Negative Button和Alt Positive Button

這裡和上面兩個設定是一樣的效果,是第二按鍵

Gravity

沒有按鍵的時候,按過的鍵的衰減速度

Dead

死亡區域,比如丟了按鍵,值要從1衰減到0,那麼這個死區就是把哪個範圍的值視為0

Type

Key or Mouse Button:就是使用按鍵來引發
Mouse Movement:使用游標移動來引發,這個返回的是滑鼠的增量,注意:當用戶快速移動滑鼠時,它可能大於1或小於-1。
Joystick Axis:用軸的偏移來引發

Axis(軸)

X axis
就是用X的變化來區分,其實就是圖上的的左上角的那個軸的橫向移動
Y axis
就是用Y的變化來區分,就是左上角的那個軸的豎向移動
3rd axis
這個就要好好說一下了,3rd其實是LT和RT這個軸,他們兩個是一體的,如果獲取了這個軸的值,是>0的話則說明LT被按了,如果<0的話則說明RT被按了。而我用的5.5.0F3這個版本,出現了一個問題,就是如果什麼按鍵都不按的話沒有3rd軸的值是對的,但是按任意一個鍵之後,這個值就變成了0.01幾了,而我這時候沒有按任何LT或者RT,所以為了解決這個問題,我就把死區(Dead)調成了0.02。讓LT和RT在不按鍵的情況下保持為0。

Joy Num

這個就是指從哪個手柄獲取反應,如果選擇Get Motion From all Joysticks就是從所有的手柄獲取反應

比如手柄上的A按鍵就可以這樣:
這裡寫圖片描述

主要按鍵設定為了joystick button 0,當然也可以joystick 1 button 0這種,如果joystick後面跟了數字,就說明值相應幾號手柄

LT可以這樣設定:
這裡寫圖片描述

附錄:可以填入的button對應名:

標準鍵(Normal keys):
"a", "b", "c" ... 
數字鍵(Number keys):
"1", "2", "3", ... 
方向鍵(Arrow keys):
"up", "down", "left", "right" 
小鍵盤鍵(Keypad keys):
"[1]", "[2]", "[3]", "[+]", "[equals]" 
修改鍵(Modifier keys):
"right shift", "left shift", "right ctrl", "left ctrl", "right alt", "left alt", "right cmd", "left cmd" 
滑鼠按鈕(Mouse Buttons):
"mouse 0", "mouse 1", "mouse 2", ... 
操縱桿按鈕(從任意操縱桿)(Joystick Buttons (from any joystick)) :
"joystick button 0", "joystick button 1", "joystick button 2", ... 
操縱桿按鈕(從指定操縱桿)(Joystick Buttons (from a specific joystick)):
 "joystick 1 button 0","joystick 1 button 1","joystick 2 button 0","joystick 2 button 1" ... 
特殊鍵(Special keys):
"backspace", "tab", "return", "escape", "space", "delete", "enter", "insert", "home", "end", "page up", "page down" 
功能鍵(Function keys):
"f1", "f2", "f3", ...