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