寫在前面
之前開了個坑,現在來填了。操作判斷是個大問題,今天就來總結Unity裡面常用的操作檢測。根據我們開發的應用類型,可分為電腦和手機應用,因此在不同的平臺上操作方式可以分為兩大類:
- 電腦端
- 鍵盤按鍵控制
- 滑鼠點擊控制
- 手機端
- 觸屏控制
- 手勢控制
- 重力控制
- 陀螺儀控制
本文的限制:1 Unity也支持需要用到手柄或VR頭盔的應用平臺,但在這些平臺上也只不過是對上述操作控制進行變種設計而已,這裡就不展開說了。2 既然涉及到檢測,就一定有對應的移動和轉向等命令,命令的實現有很多種方法。如果講到相關例子,並不代表最佳用法。
正文
絕大多數的輸入判斷,都需要用到Input類,而Keycode類則用來表示鍵盤上的按鍵
Unity - Scripting API: Input?docs.unity3d.comUnity - Scripting API: KeyCode?docs.unity3d.com1 按鍵輸入
與按鍵相關的方法有兩個,一是GetKey(),另一個是GetAxis()
GetKey()例子:
If (Input.GetKey(KeyCode.A))
{
Debug.Log("A pressed");
}
GetKey()方法檢測的是這個按鍵是否被一直按住,GetKeyDown()檢測按鍵被按下,GetKeyU()檢測按鍵抬起。舉個例子,一個推箱子遊戲,每次按下一次按鍵才會向前推進,那麼你就可以使用GetKeyDown。但是像一些即時戰略的遊戲則需要用到GetKey,玩家按住按鍵,自己的角色就會一直往前跑。
GetAxis()例子:
float v = verticalSpeed * Input.GetAxis("Horizontal");
float h = horizontalSpeed * Input.GetAxis("Vertical");
transform.Rotate(v, h, 0);
你可以去Project Settings -> Input中自定義自己的按鍵,比如你可以把空格鍵叫作Fire,使用Input.GetButton("Fire")檢測Space按鍵。