Unity手遊之路遊戲搖桿之Easy Touch 3教程

之前已經介紹過Unity自帶的搖桿Joystick,它用起來很簡單。但是它也存在很多侷限,不能全部滿足普通mmo手遊的一些需求,例如:要能方便地更好素材;能指定在某個區域顯示,或者只有在該區域觸摸時纔出現等等。而這些功能,Easy Touch插件都已經幫你實現了。全部是可配置。大家可以從Asset Store上購買,或者使用free版。

                                                         (可隨意分享,請註明原文出處http://blog.csdn.net/janeky/article/details/17364903

  • 實例

還是用上次例子來實現。控制角色的移動

  • 步驟

1.import “Easy Touch 3”的資源包
2.創建人物模型
3.創建地形
4.添加一個Joystick的實例 :Hedgehog Team->Easy Touch->Extensions->Add a new Joystick。這時我們可以看到它在左下角出來
5.設置搖桿的相關的參數,詳見下圖


6.新建一個腳本MoveController.cs 用來接收搖桿的事件,控制角色的移動。代碼如下:
  1. using UnityEngine; 
  2. using System.Collections; 
  3.  
  4. public class MoveController : MonoBehaviour { 
  5.  
  6.     void OnEnable() 
  7.     { 
  8.         EasyJoystick.On_JoystickMove += OnJoystickMove; 
  9.         EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd; 
  10.     } 
  11.  
  12.  
  13.     //移動搖桿結束 
  14.     void OnJoystickMoveEnd(MovingJoystick move) 
  15.     { 
  16.         //停止時,角色恢復idle 
  17.         if (move.joystickName == "MoveJoystick"
  18.         { 
  19.             animation.CrossFade("idle"); 
  20.         } 
  21.     } 
  22.  
  23.  
  24.     //移動搖桿中 
  25.     void OnJoystickMove(MovingJoystick move) 
  26.     { 
  27.         if (move.joystickName != "MoveJoystick"
  28.         { 
  29.             return
  30.         } 
  31.          
  32.         //獲取搖桿中心偏移的座標 
  33.         float joyPositionX = move.joystickAxis.x; 
  34.         float joyPositionY = move.joystickAxis.y; 
  35.  
  36.  
  37.         if (joyPositionY != 0 || joyPositionX != 0) 
  38.         { 
  39.             //設置角色的朝向(朝向當前座標+搖桿偏移量) 
  40.            transform.LookAt(new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY)); 
  41.             //移動玩家的位置(按朝向位置移動) 
  42.             transform.Translate(Vector3.forward * Time.deltaTime * 5); 
  43.             //播放奔跑動畫 
  44.             animation.CrossFade("run"); 
  45.         } 
  46.     } 
using UnityEngine;
using System.Collections;

public class MoveController : MonoBehaviour {

    void OnEnable()
    {
        EasyJoystick.On_JoystickMove += OnJoystickMove;
        EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;
    }


    //移動搖桿結束
    void OnJoystickMoveEnd(MovingJoystick move)
    {
        //停止時,角色恢復idle
        if (move.joystickName == "MoveJoystick")
        {
            animation.CrossFade("idle");
        }
    }


    //移動搖桿中
    void OnJoystickMove(MovingJoystick move)
    {
        if (move.joystickName != "MoveJoystick")
        {
            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 * 5);
            //播放奔跑動畫
            animation.CrossFade("run");
        }
    }
}
完成收工,具體的效果圖


最後我們來看看Easy Touch的參數



  • 總結

Easy Touch提供了虛擬搖桿的解決方案,基本能滿足你的各種需求。包括前面所說的,定製UI,隱藏,指定區域等。可以在你的項目中嘗試使用

  • 源碼

http://pan.baidu.com/s/1ovU58

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章