對於移動平台上的RPG類的游戲,我們常用虛擬搖桿來控制人物角色的行走和一些行為,相信我們對它並不陌生,之前嘗試了EasyTouch2.5,發現並沒有最新版的3.1好用,2.5版本的對於自適應沒有做的很好,而最新版的已經解決了這一問題。當然unity也自帶了搖桿Joystick,用起來也簡單,但存在不少局限,不會滿足普通mmo游戲的需求,比如指定顯示區域或者是更改一些素材等等,而這些EasyTouch插件都已經幫你實現,不得不佩服插件的原作者,能做出這么炫酷好用的插件,當然這估計是老外開發的,關於插件的下載,你可以在AssetStore上購買,當然也可以使用free版。
一、效果圖


感覺很酷有木有!接下來就看一下創建的過程吧!
二、操作步驟
1.官方文檔上的步驟
1-Import EasyTouch Package.
2-Create an empty gameObject, and name it EasyTouch.(You can choose another name)
Step 1 & 2 can be replace by the option menu

3-Add the EasyTouch.cs script on the EasyTouch gameObject that you just created.
4-Select the EasyTouch gameobject, and verifies that Broadcast messages is set to FALSE in the inspector.

5-Create a new C# script MyFirstTouch
6-Add these methods
1 // Subscribe to events 2 void OnEnable(){ 3 EasyTouch.On_TouchStart += On_TouchStart; 4 } 5 // Unsubscribe 6 void OnDisable(){ 7 EasyTouch.On_TouchStart -= On_TouchStart; 8 } 9 // Unsubscribe 10 void OnDestroy(){ 11 EasyTouch.On_TouchStart -= On_TouchStart; 12 } 13 // Touch start event 14 public void On_TouchStart(Gesture gesture){ 15 Debug.Log( "Touch in " + gesture.position); 16 }
7-Create an empty gameObject, and name it Receiver.
8- Add MyFirstTouch script to the gameObject Receiver.
9- Run it in editor, and click on the screen
2.翻譯一下以上的步驟
1.import“EasyTouch”資源包
2.創建空物體,命名為EasyTouch(當然你也可以改成其他名字)
3.添加EasyTouch.cs腳本在剛剛創建的空物體(EasyTouch)上
4.選擇改物體但不要將BroadcastMessages勾選
5.創建一個新的C#腳本,命名MyFirstTouch
6.添加這些方法
7.再創建一個空物體,命名為Receiver
8.將MyFirstTouch腳本添加到空物體Receiver上
9.運行並且點擊遙感,會發現控制台打印了當前按下的坐標
3.根據官方的這些提示,自己來做一個屬於自己的人物遙感控制
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 } 47 }
