Unity EasyTouch搖桿插件使用示例詳解
EasyTouch搖桿插件使用,先給大家展示下效果圖:
Demo展示
雙指縮放在電腦端無法掩飾,豎屏將就看看吧;
插件名叫EasyTouch,有需要給我留言,不想開倉庫傳了;
創(chuàng)建搖桿點(diǎn)這里:
初始化
On_JoystickMove這個(gè)回調(diào)是用來控制移動(dòng)的;分兩個(gè)方向,x和y軸;
void OnEnable() { EasyJoystick.On_JoystickMove += OnJoystickMove; } private void OnDisable() { EasyJoystick.On_JoystickMove -= OnJoystickMove; } private void OnDestroy() { EasyJoystick.On_JoystickMove -= OnJoystickMove; }
自定義On_JoystickMove
我的搖桿物體名稱叫做MoveControl;
void OnJoystickMove(MovingJoystick move) { if (move.joystickName != "MoveControl") { return; } float PositionX = move.joystickAxis.x; //獲取搖桿偏移搖桿中心的x坐標(biāo) float PositionY = move.joystickAxis.y; //獲取搖桿偏移搖桿中心的y坐標(biāo) Vector2 value = move.joystickValue; if (PositionY != 0 || PositionX != 0) { //設(shè)置控制角色或物體方塊的朝向(當(dāng)前坐標(biāo)+搖桿偏移量) //transform.LookAt(new Vector3(transform.position.x + PositionX, transform.position.y,transform.position.z + PositionY)); //移動(dòng)角色或物體的位置(按其所朝向的位置移動(dòng)) Vector3 dir = new Vector3(PositionX, PositionY, 0); transform.Translate(dir * Time.deltaTime * speed); } }
這兩個(gè)物體控制搖桿,EasyTouch一定不能刪除;
手勢功能
這套插件還支持雙指縮放,滑動(dòng),手指畫圈,點(diǎn)擊,多指觸碰,拖拽等;
具體api看注釋:
public class Zoom : MonoBehaviour { bool isStart = false; public Button BtnReset; public Button BtnLoadScene; public Text log; void OnEnable() { EasyTouch.On_Swipe += On_Swipe; EasyTouch.On_Drag += On_Drag; EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers; EasyTouch.On_PinchEnd += On_PinchEnd; EasyTouch.On_PinchIn += On_PinchIn; EasyTouch.On_PinchOut += On_PinchOut; BtnReset.onClick.AddListener(ResetScene); BtnLoadScene.onClick.AddListener(OnLoadScene); } void OnDisable() { EasyTouch.On_Swipe -= On_Swipe; EasyTouch.On_Drag -= On_Drag; EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers; EasyTouch.On_PinchEnd -= On_PinchEnd; EasyTouch.On_PinchIn -= On_PinchIn; EasyTouch.On_PinchOut -= On_PinchOut; BtnReset.onClick.RemoveListener(ResetScene); } void OnDestroy() { EasyTouch.On_Swipe -= On_Swipe; EasyTouch.On_Drag -= On_Drag; EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers; EasyTouch.On_PinchEnd -= On_PinchEnd; EasyTouch.On_PinchIn -= On_PinchIn; EasyTouch.On_PinchOut -= On_PinchOut; BtnReset.onClick.RemoveListener(ResetScene); } /// <summary> /// 重置cube和相機(jī) /// </summary> void ResetScene() { transform.position = Vector3.zero; transform.rotation = Quaternion.Euler(Vector3.zero); Camera.main.transform.position = new Vector3(0, 0, -10); } /// <summary> /// 滑動(dòng)使cube旋轉(zhuǎn) /// </summary> /// <param name="ges"></param> void On_Swipe(Gesture ges) { Vector3 vec = new Vector3(ges.deltaPosition.y, ges.deltaPosition.x, 0); transform.Rotate(vec ,Space.World); log.text = "滑動(dòng)使cube旋轉(zhuǎn)"; } /// <summary> /// 拖拽移動(dòng)cube /// </summary> /// <param name="ges"></param> void On_Drag(Gesture ges) { if (ges.pickObject == gameObject) { transform.position = ges.GetTouchToWordlPoint(10);//相機(jī)z=-10 cube 0 log.text = "拖拽移動(dòng)cube"; } } /// <summary> /// 雙指滑動(dòng) 平面移動(dòng)相機(jī) /// </summary> /// <param name="ges"></param> void On_Swipe2Fingers(Gesture ges) { Camera.main.transform.Translate(new Vector3(-ges.deltaPosition.x*Time.deltaTime*25, -ges.deltaPosition.y*Time.deltaTime*25, 0)); log.text = "雙指滑動(dòng)移動(dòng)相機(jī)"; } /// <summary> /// 拉近拉遠(yuǎn)相機(jī) /// </summary> /// <param name="ges"></param> private void On_PinchIn(Gesture gesture){ if (gesture.pickObject == gameObject){ float zoom = Time.deltaTime * gesture.deltaPinch; isStart = true; Vector3 scale = transform.localScale ; transform.localScale = new Vector3( scale.x - zoom, scale.y -zoom, scale.z-zoom); } } private void On_PinchOut(Gesture gesture){ if (gesture.pickObject == gameObject){ float zoom = Time.deltaTime * gesture.deltaPinch; isStart = true; Vector3 scale = transform.localScale ; transform.localScale = new Vector3( scale.x + zoom, scale.y +zoom,scale.z+zoom); } } private void On_PinchEnd(Gesture gesture){ if(isStart ){ if (gesture.pickObject == gameObject){ print ("End"); } } } void OnLoadScene() { SceneManager.LoadScene("TestJoyStick"); } }
到此這篇關(guān)于Unity EasyTouch搖桿插件使用的文章就介紹到這了,更多相關(guān)Unity EasyTouch搖桿插件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C# Protobuf如何做到0分配內(nèi)存的序列化
這篇文章主要介紹了詳解C# Protobuf如何做到0分配內(nèi)存的序列化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04c#重寫TabControl控件實(shí)現(xiàn)關(guān)閉按鈕的方法
這是關(guān)于c#重寫TabControl控件實(shí)現(xiàn)關(guān)閉按鈕的例子,整理了一下,與大家分享。2013-04-04C#如何使用SHBrowseForFolder導(dǎo)出中文文件夾詳解
這篇文章主要給大家介紹了關(guān)于C#如何使用SHBrowseForFolder導(dǎo)出中文文件夾的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)合作工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11C# wpf使用ListBox實(shí)現(xiàn)尺子控件的示例代碼
本文主要介紹了C# wpf使用ListBox實(shí)現(xiàn)尺子控件的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07C#使用WMI實(shí)現(xiàn)監(jiān)聽進(jìn)程的啟動(dòng)和關(guān)閉
Windows Management Instrumentation(WMI)是用于管理基于 Windows 操作系統(tǒng)的數(shù)據(jù)和操作的基礎(chǔ)結(jié)構(gòu),本文將使用WMI實(shí)現(xiàn)監(jiān)聽進(jìn)程的啟動(dòng)和關(guān)閉,感興趣的可以了解下2024-01-01