本篇文章會將如何從Unity 4.2.2增加iOS7的遊戲控制器到你的遊戲,比較常見的問題做一個簡短的教程
你可能會有以下的問題:
問:Unity會內建iOS的遊戲控制器API嗎?
答:會
問:遊戲控制器的API是否只支援裝了iOS7或更新的裝置?
答:可以同一個專案,遊戲控制器框架只有在裝置有支援的時候才會動態載入,太舊的iOS版本會回傳空的控制器清單
問:我的遊戲是否可以限制只有遙控器才能玩?
答:不行,Apple規定控制器輸入必須是選擇性的,如果你這麼做可能會無法通過審核
問:我可以從哪裡獲得關於遊戲控制器的詳細資料?
答:Unity輸入的說明書已經更新,可以點這裡進入
好, 現在來寫一些程式碼
首先你應該會需要檢查控制器是否接上,如果接上了,要檢查是甚麼類型的控制器。
呼叫Input.GetJoystickNames()來取得控制器名稱,如果回傳值是空的,代表沒有偵測到任何控制器。
最好固定幾秒就檢查一次來確認是否有控制器被接上/拔下。
用C#的例子如下
當偵測到控制器時,你可以同時隱藏或調整本來在螢幕上的虛擬控制器,讓操作更符合實際。
接下來的工作是檢查遊戲的輸入功能,你的按鈕對照仰賴著遊戲類型,不同的遊戲類型會對照不同的按鍵對照表。
我們拿準備要在4.3使用的Unity 2D範例當作例子。
玩家控制豆豆主角,可以往左往右移動,跳躍和消滅敵人。預設的情況下,Unity的"水平"座標是對應到一般設定裡面的Dpad設定和擴充控制器設定的左搖桿,所以來回移動角色的程式碼很簡單:
你可以在Unity裡面的一般設定設定好跳躍和射擊行為(從Unity選單的Edit>Project Setting>Input開啟設定)
將搖桿(Joystice)按鈕A(Button 14)設定為"Jump",將按鈕X(Button 15)設定為"Fire"
遊戲功能的程式碼長這樣
if(Input.GetButtonDown("Jump") && grounded)
{
rigidbody2D.AddForce(new Vector2(0f, jumpForce));
}
if(Input.GetButtonDown("Fire"))
{
Rigidbody2D bulletInstance = Instantiate(rocket, transform.position, Quaternion.Euler(new Vector3(0,0,0))) as Rigidbody2D;
bulletInstance.velocity = new Vector2(speed, 0);
}
這個表可以幫助你在設定按鈕的時候有個對照
然後,你的iOS遊戲就可以支援搖桿囉!
本文出處由Mantas Puida, Unity Technologies