天天看點

EasyTouch_搖杆/按鈕/觸摸闆前言1.Joystick2.D-pad、TouchPad3.Button4.部分代碼

文章目錄

  • 前言
  • 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即可添加如下圖所示。

EasyTouch_搖杆/按鈕/觸摸闆前言1.Joystick2.D-pad、TouchPad3.Button4.部分代碼

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(){

    }
           

繼續閱讀