[Unity3D]Unity3D遊戲開發之使用EasyTouch虛擬搖杆控制人物移動

來源:互聯網
上載者:User

標籤:des   style   blog   class   c   code   

       大家好,歡迎大家關注我的部落格,我是秦元培,我的部落格地址是blog.csdn.net/qinyuanpei。今天呢,我們來一起學習在Unity3D中使用EasyTouch虛擬搖杆來控制人物移動。儘管Unity3D內建了一個Joystick組件(其實就是一個GUITexture和一個Js指令檔啦),可是博主在實際使用的時候發現這個內建的Joystick存在無法適應螢幕大小的問題,所以博主在這裡向大家推薦使用EasyTouch這個外掛程式,通過這個外掛程式,我們可以快速地在應用中整合虛擬搖杆功能,而且可以通過改變貼圖的方式來自訂搖杆的外觀,所以總體來說,這個外掛程式是在觸摸互動這部分功能中最好的一個外掛程式。首先我們匯入EasyTouch的資源套件,然後通過Hedgehog Team->Extension->Adding a new joystick添加一個虛擬搖杆,此時會在層級視圖中產生EasyTouch 和 Easy Joystick兩個對象。


        此時,我們可以在遊戲情境中看到EasyTouch預設的虛擬搖杆外觀:


       接下來,我們來講解下EasyJoystick的屬性:

       好了,如果大家對於這些屬性沒有什麼問題的話,接下來我們就可以開始編寫指令碼了:

using UnityEngine;using System.Collections;public class MoveController : MonoBehaviour {//當搖杆可用時註冊事件    void OnEnable()    {        EasyJoystick.On_JoystickMove += OnJoystickMove;        EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;    }//當搖杆不可用時移除事件    void OnDisable()    {        EasyJoystick.On_JoystickMove -= OnJoystickMove;        EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveEnd;    }//當搖杆銷毀時移除事件    void OnDestroy()    {        EasyJoystick.On_JoystickMove -= OnJoystickMove;        EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveEnd;    }//當搖杆處於停止狀態時,角色進入待機狀態    void OnJoystickMoveEnd(MovingJoystick move)    {        if (move.joystickName == "EasyJoystick")        {            animation.CrossFade("idle");        }    }//當搖杆處於移動狀態時,角色開始奔跑    void OnJoystickMove(MovingJoystick move)    {        if (move.joystickName != "EasyJoystick")        {            return;        }        //擷取搖杆位移量        float joyPositionX = move.joystickAxis.x;        float joyPositionY = move.joystickAxis.y;        if (joyPositionY != 0 || joyPositionX != 0)        {            //設定角色的朝向(朝向當前座標+搖杆位移量)           transform.LookAt(new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY));            //移動玩家的位置(按朝向位置移動)            transform.Translate(Vector3.forward * Time.deltaTime * 7.5F);            //播放奔跑動畫            animation.CrossFade("Run");        }    }}
       我們將這個指令碼綁定到我們的人物模型上面,然後運行程式:

       這裡我們再來說一下使用Unity3D內建的Joystick來實現人物移動控制,我們首先需要匯入Standard Assets(Mobile)資源套件,在這個資源套件裡我們可以發現兩個有用的檔案:Joystick.js和JoystickThumb.psd,它們分別是虛擬搖杆的指令碼組件和外觀貼圖,我們手動建立一個GUITexture,並調整到合適的位置(悲劇就是從這裡開始的),將這張貼圖賦給GUITexture,然後綁定Joystick.js指令碼。博主習慣使用C#,對於Js指令碼使用得不多,據說在Unity中Js指令碼需要放到Standard Assets、 Pro Standard Assets和Plugins中的任何一個檔案件裡才能正常使用,所以很多朋友反映的使用Unity內建的Joystick找不到類,就是這個原因。這裡博主使用的是國外朋友根據官方的指令碼改寫的C#指令碼。我們編寫一個C#指令碼來響應虛擬搖杆:

using UnityEngine;using System.Collections;public class JoystickController : MonoBehaviour {private Joystick mJoystick;private float mSpeed=7.5F;void Start () {//擷取JoystickmJoystick=GameObject.Find("UnityJoystick").GetComponent<Joystick>();}void Update () {    //擷取搖杆響應值float mX=mJoystick.position.x;float mY=mJoystick.position.y;        //移動角色if(mX!=0||mY!=0){Vector3 mPos=new Vector3(transform.position.x+mX,transform.position.y,                         transform.position.z+mY);transform.LookAt(mPos);//移動玩家的位置(按朝向位置移動)transform.Translate(Vector3.forward * Time.deltaTime * 5F);//播放奔跑動畫animation.Play("Run");}else{animation.Play("idle");}}}
       官方提供的這個虛擬搖杆組件無法在電腦上測試,需要安裝到手機上運行,我們來看看實際的效果吧:


      

    在手機上EasyTouch外掛程式可以完美運行,官方提供的Joystick沒有反映,目前不知道是為什麼,有時間的話繼續研究下啊。


   參考文章:

  1、Unity手遊之路<五>虛擬搖杆之Unity內建外掛程式實現

  2、Unity手遊之路<六>遊戲搖杆之Easy Touch 3教程


  每日箴言:決心走一條路的時候,就不要左顧右盼,風景再美也別流連




   喜歡我的部落格請記住我的名字:秦元培,我的部落格地址是blog.csdn.net/qinyuanpei
   轉載請註明出處,本文秦元培,本文出處:http://blog.csdn.net/qinyuanpei/article/details/26204177


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.