之前已經介紹過Unity自帶的搖桿Joystick,它用起來很簡單。但是它也存在很多侷限,不能全部滿足普通mmo手遊的一些需求,例如:要能方便地更好素材;能指定在某個區域顯示,或者只有在該區域觸摸時纔出現等等。而這些功能,Easy Touch插件都已經幫你實現了。全部是可配置。大家可以從Asset Store上購買,或者使用free版。
(可隨意分享,請註明原文出處http://blog.csdn.net/janeky/article/details/17364903)
- 實例
還是用上次例子來實現。控制角色的移動
- 步驟
2.創建人物模型
3.創建地形
4.添加一個Joystick的實例 :Hedgehog Team->Easy Touch->Extensions->Add a new Joystick。這時我們可以看到它在左下角出來
5.設置搖桿的相關的參數,詳見下圖
6.新建一個腳本MoveController.cs 用來接收搖桿的事件,控制角色的移動。代碼如下:
- 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");
- }
- }
- }
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,隱藏,指定區域等。可以在你的項目中嘗試使用
- 源碼