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

       你們好,歡迎你們關注個人博客,我是秦元培,個人博客地址是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的屬性:spa

       好了。假設你們對於這些屬性沒有什麼問題的話,接下來咱們就可以開始編寫腳本了:.net

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找不到類,就是這個緣由。code

這裏博主使用的是國外朋友依據官方的腳本改寫的C#腳本。咱們編寫一個C#腳原本響應虛擬搖桿:orm

using UnityEngine;
using System.Collections;

public class JoystickController : MonoBehaviour {

	private Joystick mJoystick;
	private float mSpeed=7.5F;

	void Start () 
	{
		//獲取Joystick
		mJoystick=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沒有反映。眼下不知道是爲何,有時間的話繼續研究下啊。對象


   參考文章:blog

  一、Unity手遊之路<五>虛擬搖桿之Unity內置插件實現
教程

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


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




   喜歡個人博客請記住個人名字:秦元培,個人博客地址是blog.csdn.net/qinyuanpei   轉載請註明出處,本文做者:秦元培,本文出處:http://blog.csdn.net/qinyuanpei/article/details/26204177

相關文章
相關標籤/搜索