移动 前端 Python Android Java

Unity LeanTouch 笔记

2017-08-22  本文已影响549人  朗迹张伟

1.如何加入LeanTouch

安装完LeanTouch插件后,在GameObject里会出现Lean->Touch

Paste_Image.png

2.一个点击屏幕生成prefab的例子

2.1 建立一个scene,加入LeanTouch

Paste_Image.png

2.2 建立一个方块,拖到Asset中,变成prefab
2.3 在LeanTouch(GameObject)中,建立LeanSpawn(Component),并把方块拖到Prefab中

Paste_Image.png

2.4 继续建立LeanFingerDown的动作,为点击的event选择对象为自己(LeanTouch,即有LeanSpawn的对象),并在Function中选择LeanSpawn.Spawn。

Paste_Image.png
2.5 LeanSpawn中的Distance为与摄像机的距离
这样就完成,点击屏幕,会出现一个方块。

3.C#的简单格式

3.1 增加点击事件

Paste_Image.png

3.2 实时获取指头的信息

Paste_Image.png

3.3 Lean.Touch.LeanGesture可以实现多指操作,比如旋转

3.4 离开UI不操作

Paste_Image.png

3.5 使用using Lean.Touch; 实现简写

Paste_Image.png

3.6 用组合的方式,提供多种操作
LeanGesture.GetPinchScale(LeanTouch.GetFingers(true))


4.设置触发动作的order,可以解决输入延迟一帧的问题

4.1 Edit → Project Settings → Script Execution Order.
4.2 设置order


5.Camera

5.1 LeanCameraMove
使得摄像机可以被手指拖动
5.2 LeanCameraZoom
使得摄像机可以被两指放大
5.3 LeanCameraMoveSmooth
使得摄像机可以被手指拖动,效果更平滑
5.4 LeanCameraZoomSmooth
使得摄像机可以被两指放大,效果更平滑
5.5 LeanPitchYaw
使得摄像机可以环绕观看四周空间
5.5 LeanPitchYawSmooth
使得摄像机可以环绕观看四周空间,效果更平滑


6.Finger

6.1 LeanFingerTap
轻触,当设置RequiredTapInterval为2时,可理解为双击
当设置IgnoreIfOverGui,在UI上可以失效

6.2 LeanSpawn
设置一个预制体,并设置与摄像机的距离

6.3 LeanDestroy
设置销毁的时间

6.4 LeanFingerHeld
长按

6.5 LeanFingerLine
手指拖动,产生一条线

6.6 LeanMultiTap
多点触控,通过连接一个脚本,传递count,highest

Paste_Image.png Paste_Image.png

6.6 LeanFingerTrail
跟踪指头,拖尾

6.7 LeanOpenUrl
可以通过button等实现链接

6.8 LeanPressSelect 来设置物体被点击和拖动
LeanPressSelect设置后,会在CurrentSelectables里保存被点击多个点

6.9 LeanSelectableSpriteRendererColor
通过在被点击的物体上加入“LeanSelectableSpriteRendererColor”脚本,可以实现点击变色,这里要注意,被点击的需要加入CircleCollider2D/3D的碰撞组件,SpriteRenderer也是需要的。LeanSelectable也是需要加上的。

6.10 LeanSelectable
LeanSelectable在On Select里加入动作,可以通过LeanDestroy来设置LeanDestroy.DestroyNow来消除

6.11 LeanTranslate
在物体上加入LeanTranslate,配合上边的组件,可以实现物体拖动,LeanTranslateSmooth可以更平滑点

6.12 实现3D物体被点击和拖动
LeanPressSelect里的SelectUsing设置Raycast3D,
LeanSelectableRendererColor可以设置3D物体的颜色变化

6.13 LeanSelectableTranslateInertia3D
LeanSelectableTranslateInertia3D可以结合刚体来,来设置带碰撞的拖动

6.14 LeanTapSelect
选择一个物体的对象,选择到的对象被记录在CurrentSelectable,这里只能选一个对象

6.15 LeanRotate
旋转,可设置x,y,z轴对应旋转

6.16 LeanScale
放大缩小


7.Swipe

7.1 LeanSwipeDirection4
四个方向上的滑动

7.2 LeanSwipeDirection8
八个方向上的滑动

7.3 LeanSwipeRigidbody2D/3D LeanSwipeRigidbody2D/3DNoRelease
刚体滑动


8.Gesture

8.1 LeanTouchEvents

using UnityEngine;
using System.Collections.Generic;

namespace Lean.Touch
{
    // This script will hook into event LeanTouch event, and spam the console with the information
    public class LeanTouchEvents : MonoBehaviour
    {
        protected virtual void OnEnable()
        {
            // Hook into the events we need
            LeanTouch.OnFingerDown  += OnFingerDown;
            LeanTouch.OnFingerSet   += OnFingerSet;
            LeanTouch.OnFingerUp    += OnFingerUp;
            LeanTouch.OnFingerTap   += OnFingerTap;
            LeanTouch.OnFingerSwipe += OnFingerSwipe;
            LeanTouch.OnGesture     += OnGesture;
        }
        
        protected virtual void OnDisable()
        {
            // Unhook the events
            LeanTouch.OnFingerDown  -= OnFingerDown;
            LeanTouch.OnFingerSet   -= OnFingerSet;
            LeanTouch.OnFingerUp    -= OnFingerUp;
            LeanTouch.OnFingerTap   -= OnFingerTap;
            LeanTouch.OnFingerSwipe -= OnFingerSwipe;
            LeanTouch.OnGesture     -= OnGesture;
        }
        
        public void OnFingerDown(LeanFinger finger)
        {
            Debug.Log("Finger " + finger.Index + " began touching the screen");
        }
        
        public void OnFingerSet(LeanFinger finger)
        {
            Debug.Log("Finger " + finger.Index + " is still touching the screen");
        }
        
        public void OnFingerUp(LeanFinger finger)
        {
            Debug.Log("Finger " + finger.Index + " finished touching the screen");
        }
        
        public void OnFingerTap(LeanFinger finger)
        {
            Debug.Log("Finger " + finger.Index + " tapped the screen");
        }
        
        public void OnFingerSwipe(LeanFinger finger)
        {
            Debug.Log("Finger " + finger.Index + " swiped the screen");
        }
        
        public void OnGesture(List<LeanFinger> fingers)
        {
            Debug.Log("Gesture with " + fingers.Count + " finger(s)");
            Debug.Log("    pinch scale: " + LeanGesture.GetPinchScale(fingers));
            Debug.Log("    twist degrees: " + LeanGesture.GetTwistDegrees(fingers));
            Debug.Log("    twist radians: " + LeanGesture.GetTwistRadians(fingers));
            Debug.Log("    screen delta: " + LeanGesture.GetScreenDelta(fingers));
        }
    }
}

9.如何让一个物体可以被tap

9.1 增加一个LeanTouch
9.2 增加一个LeanTapSelect,并选择好是2D/3D (Select Using)

Paste_Image.png Paste_Image.png

9.3 在物体上,加入LeanSelectable,并保证有Collider在

Paste_Image.png

9.4 可以使用LeanSelect的一些函数,也可以在OnSelect事件里加入动作,
把带LeanSelectable的物体拉倒里面,并选择一个处理函数即可。

上一篇下一篇

猜你喜欢

热点阅读