2013年10月12日 星期六

Unity 4.2.2支援iOS遊戲控制器

如同大部分的手機遊戲開發者,我們也密切的關注剛更新的iOS7有那些新增功能,其中一個最大,最令人感到興奮的就是iOS平台的遊戲控制器標準。因此我們很開心的告訴你 除了修復一些Xcode5和iOS7的臭蟲(Build&Run,WebCamTexture和狀態列),4.2.2將會支援Apple的遊戲控制器,歡呼聲~

本篇文章會將如何從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

著作人