文章目錄
- 前言
- 1.Joystick
-
- 1.1 joystick name
- 1.2 position&size
- 1.3 axes properties
- 1.4 camera
- 1.5 sprites
- 1.6 MoveEvent~PressEvent
- 2.D-pad、TouchPad
- 3.Button
- 4.部分代碼
前言
Each Touch前面的幾個功能用unity自身的UI事件比較容易實作,但是其最強的地方在于封裝了移動端第一人稱遊戲的操作,以下是幾個關鍵功能:
1.Joystick
右鍵->選擇Easytouch controls->選擇Joystick即可添加如下圖所示。

1.1 joystick name
此名字與遊戲名字相同,但是遊戲物體名字無法重新命名,隻能在此處修改名字,joystick name後邊的幾個參數相對來說沒有歧義。
1.2 position&size
此部分是用來設定位置和大小,type如果選為dynamic則一開始按鈕是隐藏的,會動态在點選位置出現。第二個參數錨點如果不選擇使用者自定義,則不能在recttransform中設定,隻能在joystick中設定。
1.3 axes properties
此部分是設定重點,Turn & move direction action如果選中則表示可以旋轉,作用遊戲物體為Direct action to參數所指定的遊戲物體,也可以點選auto link on tag,通過指定layer來确定作用的遊戲物體。Turn & move direction action會影響下邊Horizontal axis以及vertical axis子參數。取消勾選,然受設定Horizontal axis以及vertical axis子參數(重點)。
Horizontal axis(vertical axis):
這些參數用來設定相關操作對遊戲物的影響,後續的事件(參數moveevent等)綁定功能可實作類似功能(即在綁定的事件中手動編寫控制代碼)。此處相當于通過參數定義可以快速實作功能。其後邊名稱可以修改,并通過此名字來擷取水準方向的參數(與 Input.GetAxis(“Horizontal”)功能類似);ETCInput.GetAxisDownRight(“Horizontal”)則表示擷取名稱為Horizontal的Horizontal axis值(由于可以有不同的joystick,是以會有不同的Horizontal axis,通過名稱來區分是哪個)
General setting:
主要是react on參數和speed參數,前者為用來确定按下觸發(觸發一次)還是按下後一直觸發(持續觸發),後者确定運動的速度。
Direction action:
表示相關運動控制,Direct action to參數所指定的遊戲物體,也可以點選auto link on tag,通過指定layer來确定作用的遊戲物體。action則表示運動形式(旋轉還是已移動還是跳躍。。),affected axis則表示運動軸,而有的是沒有此選項的,比如action參數值為jump。
Gravity-inertia-smoothing:
進行相關慣性設定,即松開按鍵後是否立即停止運動還是會慣性一段時間。
Unity axis:
與unity對應的input類中的軸是否對應(如vertical,horizontal等),axes properties的第一選項Enable unity axis如果不勾選,則此選項則沒有作用。
1.4 camera
Enable tracking:是否開啟追蹤,即是否有運動物體視角(錄影機是否追蹤遊戲物體)。是以需要設定追蹤的錄影機和相應的遊戲物體
1.5 sprites
按鍵的貼圖
1.6 MoveEvent~PressEvent
相關事件,跟button操作方法一樣,由于事件衆多也可以采用ETCInput類來實作,代碼見文末。
2.D-pad、TouchPad
右鍵->選擇Easytouch controls->選擇D-pad即可添加,其參數與Joystick基本類似,不做贅述。
TouchPad與Joystick功能也相似,不過是以觸摸闆的形式表現。
3.Button
右鍵->選擇Easytouch controls->選擇Button即可添加。其功能少于上述三類,其相當于unity Button功能的擴充,并能夠通過Direction action參數(四種按鍵均有此參數,功能一樣)快速定義點選時與運動相關的運動形式。并通過ETCInput.GetButtonValue( “Button”),擷取目前值(測試均為1,不知道有什麼特殊意思)
4.部分代碼
Button代碼事件
if (ETCInput.GetButton("Button")){
getButtonText.text="YES";
getButtonTimeText.text = ETCInput.GetButtonValue( "Button").ToString();
}
else{
getButtonText.text="";
getButtonTimeText.text = "";
}
if (ETCInput.GetButtonDown("Button"))
{
getButtonDownText.text = "YES";
StartCoroutine( ClearText(getButtonDownText));
}
if (ETCInput.GetButtonUp("Button")){
getButtonUpText.text = "YES";
StartCoroutine( ClearText(getButtonUpText));
}
代碼控制事件
ETCInput.GetAxis("Horizontal");//擷取水準軸傳回值(與unity的Input.GetAxis相同);
ETCInput.GetAxisSpeed("Horizontal");//擷取水準軸方向的移動速度;
ETCInput.GetAxis("Vertical");
ETCInput.GetAxisSpeed("Vertical");
//按下與松開(隻執行一次)
if (ETCInput.GetAxisDownRight("Horizontal")){
downRightText.text = "YES";
StartCoroutine( ClearText(downRightText));
}
if (ETCInput.GetAxisDownDown("Vertical")){
downDownText.text = "YES";
StartCoroutine( ClearText(downDownText));
}
if (ETCInput.GetAxisDownLeft("Horizontal")){
downLeftText.text = "YES";
StartCoroutine( ClearText(downLeftText));
}
if (ETCInput.GetAxisDownUp("Vertical")){
downUpText.text = "YES";
StartCoroutine( ClearText(downUpText));
}
//持續按下與松開(持續執行)
if (ETCInput.GetAxisPressedRight("Horizontal")){
rightText.text ="YES";
}
else{
rightText.text ="";
}
if (ETCInput.GetAxisPressedDown("Vertical")){
downText.text ="YES";
}
else{
downText.text ="";
}
if (ETCInput.GetAxisPressedLeft("Horizontal")){
leftText.text ="Yes";
}
else{
leftText.text ="";
}
if (ETCInput.GetAxisPressedUp("Vertical")){
upText.text ="YES";
}
else{
upText.text ="";
}
Event注冊時間
public void MoveStart(){
}
public void Move(Vector2 move){
}
public void MoveSpeed(Vector2 move){
}
public void MoveEnd(){
}
public void TouchStart(){
}
public void TouchUp(){
}
public void DownRight(){
}
public void DownDown(){
}
public void DownLeft(){
}
public void DownUp(){
}
public void Right(){
}
public void Down(){
}
public void Left(){
}
public void Up(){
}