LeanTouch 学习笔记

一、加入基础组件(Demo01)

  • 在菜单->GameObject->Lean->Touch , 增加LeanTouch基础组件
    在这里插入图片描述
  • 在LeanTouh里 Add Component,Lean Touch Simulator组件,此组件作用是配合PC上调试。
    在这里插入图片描述
  • Left Control + 鼠标左键 = 双指放大;
  • Left Alt + 鼠标左键 = 移动;
  • Left Alt + 鼠标中键 = 拖动;

LeanTouch参数
在这里插入图片描述

  • TapThreshold : Tap间隔时间
  • SwipeThreshold :滑动多少像素触发Swipe,相对DPI
  • ReferenceDpi : DPI每英寸点数,这个是设置点数密度参数
  • GuiLayers : 默认UI,手指触发会忽略它
  • UseTouch : 触摸功能开关
  • UseHover :鼠标悬停位置是否应该存储为手指?它将被赋予一个指针索引,其值为HOVER_FINGER_INDEX = -42;这个开关开着,平时fingets数量会多1
  • UseMouse : 是否支持鼠标点击
  • UseSimulator : 是否支持Simulator组件控制
  • Disable Mouse Emulation : 使用旧/传统输入系统时,默认情况下,它会将触摸数据转换为鼠标数据,即使没有鼠标。启用此设置将禁用此行为。
  • RecordFingers : 每个手指应该记录他们屏幕位置的快照,可以关掉

二、基本的触控互动 (Demo02)

  • LeanSpawn组件的作用是把一个预制体与互动绑定起来
    在这里插入图片描述

  • 位置是本GameObject位置,或者预制体默认位置

  • 加入一个Lean Finger Tap,在On Finger里绑定LeanSpawn.Spawn函数
    在这里插入图片描述

  • 此时点击,屏幕会显示一个LeanSpawn的预制体,但是预制体的位置是脚本的位置,不会根据点击的位置变化。稍加改变:
    在这里插入图片描述

  • 把回调写在OnWorld里,在显示预制体即可。

三、用代码实现Tap回调 (Demo03)

  • 为Lean.Touch.LeanTouch.OnFingerTap添加回调来实现
	void Update()
	{
		var fingers = Lean.Touch.LeanTouch.Fingers;

		Debug.Log("点击屏幕的fingers: " + fingers.Count);
	}
	
	void OnEnable()
	{
		Lean.Touch.LeanTouch.OnFingerTap += HandleFingerTap;
	}

	void OnDisable()
	{
		Lean.Touch.LeanTouch.OnFingerTap -= HandleFingerTap;
	}

	void HandleFingerTap(Lean.Touch.LeanFinger finger)
	{
		Debug.Log("Tap点击,Index: " + finger.Index + " Postion: " + finger.ScreenPosition);
	}
  • finger.IsOverGui,可以判断,是不是点在GUI上

慢一帧的LeanTouch

  • LeanTouch实现机制里,用到update生命周期,所以要精确,必须调整LeanTouch的执行顺序
  • 在Project Settings里,调整Script Execution Order的数字,低于-100,会优先执行

四、第1个案例 - 01 Finger Down

在这里插入图片描述

  • 案例位置在LeanTouch > Examples目录里面,有约30个案例
    *
  • 主要是使用LeanFingerDown组件
    在这里插入图片描述
  • 通过On World回调,改变RedSphere的位置。

Screen Depth参数:
用于在屏幕坐标和世界坐标之间转换的方法。

FixedDistance =一个点将从相机中投影出来。

DepthIntercept =一个点将从位于XY平面上的平面上的相机中截取出来。

PhysicsRaycast =光线将从相机中投射。

PlaneIntercept =一个点将从相机截取到指定平面上最近的点。

PathClosest =一个点将从相机截取到指定路径上最近的点。

AutoDistance =将根据当前变换深度从相机中投影出一个点。

HeightIntercept =一个点将从位于XZ平面上的平面上的相机中截取出来。

  • 使用PhysicsRaycast ,点击会发射射线;射线会在带Collider组件的物体上产生响应效果。
  • 使用PlaneIntercept,可建立一个LeanPlane组件,设置可点击的范围

五、02 Finger Up

在这里插入图片描述

  • 与上个案例相识,这里使用了Finger Down来显示红球,用Finger Up来显示蓝球

六、03 Finger Swipe

在这里插入图片描述

在这里插入图片描述

  • FingerDown主要功能为清理Canvas的文字
  • LeanFingerSwipe : 通过LeanFormatString组件,打印出回调的值
  • LeanFormatString:重载SetString,适合各类数据,打印在Text中

Swiper参数

  • OnDelta : x,y的变化值
  • OnDistance :移动的距离
  • OnWorldFrom :开始坐标
  • OnWorldTo : 结束坐标
  • OnWorldDelta : 坐标变化

七、04 Rotation

在这里插入图片描述

  • 与03相识,通过OnDelta回调
  • 这里示范了如何把Delta值转变为一个angle的角度值,并通过update里LerpAngle函数,插值变化到目标值。
public void RotateToDelta(Vector2 delta)
{
	if (delta.sqrMagnitude > 0.0f)
	{
		angle = Mathf.Atan2(delta.x, delta.y) * Mathf.Rad2Deg;
	}
}

八、05 Direction 4

在这里插入图片描述

  • Lean Finger Swipe有2个参数,通过设置,可以识别4个方向,或8个方向
  • RequiredAngle :
    所需的滑动角度,以度为单位。
    /// 0 =向上。
    /// 90 =右。
    /// 180 =向下。
    /// 270 =左。
  • RequiredArc:
    Swipe必须进入的弧的角度,以度为单位。
    /// -1 =无要求。
    /// 90 =四分之一圆(± 45度)。
    /// 180 =半圆(± 90度)。
    在这里插入图片描述
  • 设置4个方向的LeanFingerSwipe,通过OnFinger来回调触发。

九、06 Direction 8

在这里插入图片描述

  • 与05案例雷同,这里设置来45度来区分8个方向
    在这里插入图片描述

十、07 Finger Tap

在这里插入图片描述

  • Lean Finger Tap 参数:
  • RequiredTapCount : 在调用OnTap之前,这个手指必须点击多少次?
    /// 0 =每次(请记住,如果使用此选项,OnTap只会被调用一次)。
  • RequiredTapInterval : 在调用OnTap之前,手指必须重复点击多少次?
    /// 0 =每次(例如,设置为2表示当您点击2次、4次、6次、8次、10次等时将调用OnTap)。
  • 如果要设置双击,可以设置TapInterval为0,TapCount为2

十一、08 Spawn

在这里插入图片描述

  • 通过LeanSpawn组件,绑定预制体
  • 通过Finger Tap组件,在OnWorld里绑定执行
    在这里插入图片描述

十二、09 Block

在这里插入图片描述

  • 此案例示范了,通过Layer设置UI,来忽略触控区域
    在这里插入图片描述
  • 这3个Box,Layer设置了UI
    在这里插入图片描述

十三、10 Double

在这里插入图片描述

  • 双击Tap,设置Tap Count为2
    在这里插入图片描述

十四、11 Finger Old

在这里插入图片描述

  • 此案例示范了长按功能,使用了Lean Finger Old
    在这里插入图片描述

十五、12 Transform

在这里插入图片描述

  • Lean Finger 系列的组件,都是针对全屏;Lean Drag Translate、Lean Twist Rotate、Lean Pinch Scale需要加载被控制的物体上
  • 案例演示了三维物体、二位物体和UI 3类游戏对象都加入了3种脚本
    请添加图片描述
    请添加图片描述

十六、13 Relative

请添加图片描述

  • 与之上案例类似,这里所有对象的Lean Twist Rotate和Lean Pinch Scale都够选了Relative勾选,达到整体旋转放大效果,而不是个别旋转放大
  • 可以把脚本放在父对象上,也可以实现同样效果

十七、14 Selectable

在这里插入图片描述

  • 案例里,有GameObject,Sprite和UI的示范。
  • Lean Selectable By Finger,用来设置此对象是否被选择;
  • LeanTouch里,Touch是针对全屏幕;若要对个别使用,需要发射一个位置,利用Lean Select,来触发Selectable的对象,被选择后,可以进行下一步操作;
  • Lean Selectable Renderer Color脚本,用来设置被选择后的颜色。

十八、15 Tap To Select

在这里插入图片描述

  • 3类对象,如上一个案例,都加入了LeanSelectable的脚本,用于可以被触发;
  • 由Tap To Select来设置如何触发
    在这里插入图片描述
    在这里插入图片描述
  • Lean Finger Tap是触控方式Tap,当点击的时候,OnFinger里回调Tap位置到LeanSelectByFinger里。LeanSelect负责发射射线,若接触到LeanSelectable对象,则选择它。

Lean Select By Finger基本参数:

  • Layers : 把对应的Layers设置起来,可以筛选要控制的对象
  • Deselect With Nothing :当没有选中的时候,就把selectables的列表清空,设置为未选中
  • Limit : Unlimited,正常选择;Stop At Max,选择数量有最大值;Deselect First,最大选择,但是会把之前选择的去掉,选择最新的。
  • Reselect :选择后,再选择,用什么模式
  • (1)Keep Selected :保持选择
  • (2)Deselect :选择的,变成不选择,翻转
  • (3)Deselect And Select : 重选
  • (4)Select Again:在Selectables列表里,重复添加选择的对象

十九、16 Limit = Stop At Max

在这里插入图片描述

  • 与上个案例一样,只是设置了Limit = Stop At Max,最大只能选择3个
    在这里插入图片描述

二十、17 Limit = Deselect First

在这里插入图片描述

  • 与之上案例类似,设置了Limit = Deselect First,最大是3个,但是会把之前选择的去掉。
  • 如果Max Selectables设为1,则这一批可选择的对象里,只能选择1个,这类模式常用。
    在这里插入图片描述

二十一、18 Destroy

在这里插入图片描述

  • 在Lean Selectable对象里,加入Lean Destroy,当被选择时,调用DestroyNow来删除对象
    在这里插入图片描述
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朗迹 - 张伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值