Input.GetAxis和Input.GetButton(以及GetButtonDown和GetButtonUp)只返回在Input manager定義的虛擬輸入軸中的一個的狀態。
返回值不需要在[-1, 1]
的範圍內。大多數表示絕對值的虛擬軸由-1和1之間的值表示。但是,有些軸會返回相對運動,如預定義的「MouseWheel」,「Mouse X」和「Mouse Y」。它們返回自上一幀以來軸的移動量。
MouseWheel有一些額外的「問題」。增量值取自OS。如果用戶將滾輪設置爲每「滾動單位」前進3行,則您將得到3的倍數的值。如果您設法快速旋轉滾輪,則可能會得到大於3或小於-3的值。
PageUp或PageDown沒有默認軸,但是如果您願意,您可以添加它們。但要小心,GetAxis將返回虛擬軸的狀態。所以當你按住正面按鈕時,只要你按下按鈕,你就會得到一個「1」。如果你想聽事件你必須使用GetButtonDown/GetButtonUp。
但是,如果你想檢查某個鍵,通常使用GetKeyDown/GetKeyUp需要一個KeyCode更簡單。
喜歡的東西:
if(Input.GetKeyDown(KeyCode.PageUp))
movement.y -= 1;
if(Input.GetKeyDown(KeyCode.PageDown))
movement.y += 1;
編輯
如果你想知道常用的鍵名,看一看該Conventional Game Input頁面。底部有一個最常用的鍵名列表,包括「上翻頁」和「下翻頁」。輸入管理器通常會拒絕錯誤的鍵名稱。所以如果你輸入一個,忽略輸入字段並且值保持不變,這是正確的。
如果您在按下按鈕時設置了一個正向按鈕,則根據「靈敏度」設置,虛擬軸將從「緩慢」增加到1。靈敏度就像一個加速因子。如果釋放該按鈕,將根據作爲減速因素的「重力」值將「緩慢」返回到0。
如果設置了正向和反向按鈕,當按下正向按鈕時,軸可以雙向移動到1,當按下負向按鈕時軸向下移動到-1。如果「snap」爲真,如果按下相反的按鈕而不是慢慢地回到0,然後開始反方向增長,它會立即回到0。
「死」值定義了死區。如果軸的值小於死角(或者小於-dead),則它將被視爲0.這對於實際模擬輸入設備非常重要,這些設備通常在其靜止位置附近存在一些抖動。
閱讀文檔時,應該清楚「反轉」,「類型」等其他屬性。
可以用defaule「Horizontal」和「Vertical」軸定義兩個同名的軸。具有相同名稱的軸被視爲一個軸。
我認爲這應該涵蓋大部分的輸入管理器的東西。
不,我真的希望Unity爲我計算軸,所以按下按鈕的時間與縮放成正比。 – 2014-11-04 10:47:03
哦,請您詳細說明如何用按鈕名稱定義新軸?我似乎無法知道要在「正/負按鈕」中輸入什麼內容。 – 2014-11-04 10:55:19
@TomášZato:我已經添加了一些關於InputManager設置的更多信息。 – Bunny83 2014-11-04 13:26:06