1)按鍵
2)軸向
通過步驟一,我們得知了手柄的按鍵及軸向的設置及調用,接下來我們需要整合一個管理類。
1)通過十字鍵(上下左右移動)控制聚焦UI物體的選中態切換
float x = Input.GetAxis(「對應十字鍵6th axis的名字」);
float y = Input.GetAxis(「對應十字鍵5th axis的名字」);
通過x和y值綁定四個方向的函數SetAxisDir(AxisDir dir);方向函數存儲在list容器中,使用計時器在Update中執行對應方向的委託事件(可以自定義執行間隔時間)。
ps:當本場景被註銷時,需要調用CancelAllDirEvents,不然會有上個場景的事件執行時找不到對象的錯誤(管理類常駐,DontDestroyOnLoad)。
2)通過主搖桿控制人物(攝像機)移動
如果僅通過單個軸向去做處理的話,不能適配搖桿360°可旋轉的特性。這裏介紹一個原生API解決這個問題:Vector2.ClampMagnitude(new Vector2(x, y), 1f);
ps:Vector3也有這個方法。
3)通過副搖桿控制人物(攝像機)旋轉
因爲業務的需求,不可讓人物360°旋轉,即需要一定的角度限制。這裏介紹一個原生API解決這個問題:float angle = Mathf.Clamp(angle, minAngle, maxAngle);
pps:所有軸向的調用獲取是通過Input.GetAxis(「對應軸向名稱」);具體軸向對應方向獲取的值的正負請自行驗證 =_=