Unity输入控制
Unity 中,使用 Input 類獲取用戶輸入,記錄下常用的函數及注意事項。
鍵盤輸入:
Input.GetKeyDown(KeyCode key) 獲取指定按鍵被按下的事件,直到松開按鍵再次按下,才能獲取第二次輸入。其中參數 key 與物理按鍵對應,例如KeyCode.A 代表鍵盤上的 ‘A’ 鍵,KeyCode 與 物理按鍵的映射是無法改變的。
? ? ? Input.GetKeyUp(KeyCode key) 與?Input.GetKeyDown(KeyCode key) 同理,是在按鍵松開的時候獲得輸入。
? ? ? Input.GetKey(KeyCode key) ?在 key 被持續按住時,調用此方法。
鼠標輸入:
Input.GetMouseButtonDown(int button)
Input.GetMouseButtonUp(int button)
? ? ? ?Input.GetMouseButton(int button)
鼠標輸入與鍵盤輸入類似,參數 0 代表鼠標左鍵、參數 1 代表鼠標右鍵、參數 2 代表鼠標中鍵。
? ? ??
自定義輸入:
? ? ? Unity 允許創建自定義的虛擬軸,虛擬按鍵是虛擬軸的特殊情況,在InputManager 中統一視為虛擬軸。 選擇菜單欄中的 Edit->Project Settings->Input ?可以打開InputManager,如圖:
? ? ??
? ? ? ??
Unity 默認創建了18個虛擬軸,每個軸的屬性如圖:
? ? ??
Name 是虛擬軸的名稱,通過 Name 在腳本中訪問虛擬軸,可以為不同的設備指定同名的虛擬軸,輸入來自于用戶正在使用的那個設備,在寫腳本時,無需考慮輸入來自于哪里。
Negative Button ? ? ? ?軸的負按鍵對應的物理按鍵。
Positive Button ? ? ? ? ?軸的正按鍵對應的物理按鍵。
Alt Negative Button ? 備選負按鍵。
Alt Positive Button ? ? 備選正按鍵。
Gravity ? ? ?? ? 當鍵松開后,軸復位的速度。 越大表示越快復位。
Dead ? ? ? ? ? ? ? ? ? ? ? ? ?死亡區間,在此區間的值都會被認為是復位值,即0。 個人理解是絕對值在此區間。
Sensitivity ? ? ? ? ? ? ? ? ?靈敏度,對按鍵來說是響應速度,與 Gravity 相對,對鼠標來說是單位時間內移動距離的影響
Snap ? ? ? ? ? ? ? ? ? ? ? ? ?選中后,當按下反方向鍵后,值立刻復位;如果不選中,原方向值不會立刻歸0,會有一個減速到0的過程。
Invert ? ? ? ? ? ? ? ? ? ? ? ? 選中后,正負按鍵顛倒。
Axis ? ? ? ? ? ? ? ? ? ? ? ? ? 這個虛擬軸所映射的設備輸入軸(搖桿、鼠標、手柄等)。
?在腳本中通過以下方法獲取虛擬按鍵輸入:
Input.GetButtonUp(string buttonName)
? ? ? ? Input.GetButtonDown(string buttonName)
Input.GetButton(string buttonName)
獲取軸輸入:
Input.GetAxis(string axisName) ? ?輸入軸的值一般在 -1 到 1之間,鼠標輸入表示的是移動距離,所以會大于這個范圍。使用虛擬軸的好處是,游戲發布后,用戶可以自定義鍵位設置。
Note: 官方文檔明確說明,GetXXXUp、GetXXXDown 這類輸入一定要放在 Update() 中,而不是 FixedUpdate() 中, 原因是在每一幀會將輸入重置,意思就是說在 Update() 中一定能檢測到輸入,并將輸入重置。因此如果把此類 Input 方法放在 FixedUpdate() 中,有可能造成漏掉輸入的情況,同時也有可能造成一次輸入檢測出多次。 而 GetKey()、GetButton()、GetMouseButton()、GetAxis() 則沒有明確說明,由于是連續檢測,應該也可以放在 FixedUpdate() 。
總結
- 上一篇: CNAS量检具校准资格查询
- 下一篇: rf中resourceid_RF(三)元