Unity-EasyTouch插件之One Finger
这节课,我们主要讲下单个手指的测试。比如单击啊,双击啊,拖动,单手滑动等。
单击:
public class TouchTest : MonoBehaviour {
	// Subscribe to events
	void OnEnable(){
		//启动On_SimpleTap监听,也就是手指单击屏幕,就会触发On_MySimpleTap的方法执行
		EasyTouch.On_SimpleTap += On_MySimpleTap;
	}
	// Unsubscribe
	void OnDisable(){
		EasyTouch.On_SimpleTap -= On_MySimpleTap;//去除监听
	}
	// Unsubscribe
	void OnDestroy(){
		EasyTouch.On_SimpleTap -= On_MySimpleTap;//去除监听
	}
	// Touch start event
	public void On_MySimpleTap(Gesture gesture){
		gameObject.renderer.material.color = new Color(1,1,1,1);//单击的时候将Cube的颜色改为白色
	}
}
这里我新建一个场景,有一个cube,我们把写好的脚本拖到Cube上。(注意下,这里cube的Mesh Renderer只有一个Material)

点击运行程序,单击cube,发现Cube变成白色。
长单击:
public class TouchTest : MonoBehaviour {
	// Subscribe to events
	void OnEnable(){
		//启动On_LongTap监听,也就是手指长时间单击屏幕,就会触发On_MySimpleLongTap的方法执行
		EasyTouch.On_LongTap += On_MySimpleLongTap;
	}
	// Unsubscribe
	void OnDisable(){
		EasyTouch.On_LongTap -= On_MySimpleLongTap;//去除监听
	}
	// Unsubscribe
	void OnDestroy(){
		EasyTouch.On_LongTap -= On_MySimpleLongTap;//去除监听
	}
	// Touch start event
	public void On_MySimpleLongTap(Gesture gesture){
		gameObject.renderer.material.color = new Color(1,1,1,1);//单击的时候将Cube的颜色改为白色
	}
}
  这里我们长单击的时间在哪里可以改,就是我上篇讲到的 ,改了Long Tap time就行了,这里默认的是1秒。
,改了Long Tap time就行了,这里默认的是1秒。
这里细心的小伙伴可能观察到了,在长单击中有On_LongTapStart和On_LongTapEnd这两个委托,这个就是在长点击开始和结束只调用一帧的。
public class TouchTest : MonoBehaviour {
	// Subscribe to events
	void OnEnable(){
		//启动On_LongTap监听,也就是手指长时间单击屏幕,就会触发On_MySimpleLongTap的方法执行
		EasyTouch.On_LongTapStart += On_MySimpleLongTapStart;
		EasyTouch.On_LongTap += On_MySimpleLongTap;
		EasyTouch.On_LongTapEnd += On_MySimpleLongTapEnd;
	}
	// Unsubscribe
	void OnDisable(){
		EasyTouch.On_LongTap -= On_MySimpleLongTap;//去除监听
	}
	// Unsubscribe
	void OnDestroy(){
		EasyTouch.On_LongTap -= On_MySimpleLongTap;//去除监听
	}
	// Touch start event
	public void On_MySimpleLongTap(Gesture gesture){
		print ("Long tap");
		gameObject.renderer.material.color = new Color(1,1,1,1);//单击的时候将Cube的颜色改为白色
	}
	public void On_MySimpleLongTapStart(Gesture gesture)
	{
		print("Long start");
	}
	public void On_MySimpleLongTapEnd(Gesture gesture)
	{
		print("Long End");
	}
}
运行,然后长点击cube不放,观察Console的打印结果:

发现在点击没松开之前,On_LongTap里面的方法会一直执行,但是start和end执行一次。
拖动:
这里我实现了一个小功能,就是用easytouch来拖动场景里面的物体,
public class TouchTest : MonoBehaviour {
	// Subscribe to events
	void OnEnable(){
		//启动On_LongTap监听,也就是手指长时间单击屏幕,就会触发On_MySimpleLongTap的方法执行
		EasyTouch.On_Drag += On_MyDrag;
		EasyTouch.On_DragStart += On_MyDragStart;
		EasyTouch.On_DragEnd += On_MyDragEnd;
	}
	// Unsubscribe
	void OnDisable(){
		//这里我就省力气不写了,无关大雅
	}
	// Unsubscribe
	void OnDestroy(){
	}
	// Touch start event
	public void On_MyDrag(Gesture gesture){
		Vector3 position = gesture.GetTouchToWordlPoint(10);//这里的坐标是Vector3,所以呢这里的0表示的是z轴坐标,
															//注意啦,这里的z是基于摄像机的z的,假如说你的摄像机的z坐标是
			  											  //-10的话,你这里写0,当你拖动的时候,他会变成-10的。实际上就是与
															//表示摄像机z的距离
		transform.position = position;
	}
	public void On_MyDragStart(Gesture gesture)
	{
	}
	public void On_MyDragEnd(Gesture gesture)
	{
	}
}
实际上,我们应该在start里面计算偏移的坐标,然后在拖动的里面减去偏移的坐标。这样不会点击物体的边缘,然后马上变到中心去了。
滑动和拖动类似,我就不讲了。拖动的运用场景很多,比如拖动地图啊,想coc那样的。还有想要移动某个物体啊等等。
Unity-EasyTouch插件之One Finger的更多相关文章
- 开发unity DLL插件
		最近开发一款设备的SDK,想着要开发unity版本,怎么做呢?首先想到的就是在外部编写相关的驱动程序然后集成成几个dll作为unity的SDK使用了.So,我就开始了unity外部插件的研究之旅了. ... 
- (转)Unity Cinemachine插件,实现单目标和多目标之间切换
		Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换*版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插件 ... 
- Unity——EasyTouch摇杆插件使用
		EasyTouch摇杆插件使用 Demo展示 双指缩放在电脑端无法掩饰,竖屏将就看看吧: 插件名叫EasyTouch,有需要给我留言,不想开仓库传了: 创建摇杆点这里: 初始化 On_Joystick ... 
- unity常用插件
		Unity3D常用插件,网址:http://jingyan.baidu.com/article/7f766daf4ef2844100e1d079.html ,想想自己也有小半年unity经验了,于是整 ... 
- 开源Unity小插件CheatConsole
		我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ... 
- 编写 Unity Editor 插件
		Editor Style Viewer 在开发过程中,我喜欢编写一些辅助的Editor插件,方便在游戏开发过程进行调试. 下面是摘自Asset Store的一个查看Unity 默认GUI样式的小工具 ... 
- 【转】unity地形插件T4M使用帮助
		unity的地形系统在手机游戏中因为效率问题基本无法使用,只能通过T4M这个地形插件来进行优化制作.下面大概讲解一下使用流程及方法. 先中U3D里面用自带的地形系统刷出想要的地形和贴图.贴图可以大概刷 ... 
- unity Dotween插件的简单介绍及示例代码
		unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ... 
- Unity给力插件之ShaderForge(一)
		这是一个用来制作shader的插件,也是一个很好的学习shader的工具.这个插件上手很容易,但是要用它来制作理想的Shader,需要下点功夫. 这儿先列举出基础知识,以及我的一些实践.以后我还会继续 ... 
- Unity给力插件之MeshBaker
		这是一个用来合并网格.材质.贴图的插件. 其实网上也有一些比较详细的使用说明,但是真实操作起来时,总是有一些搞不清bug.而且,作为功能比较全的插件,在Unity版本更新时,也难免会一些不兼容的地方. ... 
随机推荐
- 启动另一个activity
			1. 只负责启动 Intent intent = new Intent(mContext, BookOrderActivity.class); Bundle mEmployeeBundle = new ... 
- 解决springmvc+fastjson返回页面出现乱码问题
			在controller里面的接口上面加,produces="text/html;charset=UTF-8"即可 @RequestMapping(value = "/ad ... 
- MUI 页面刷新及页面传值问题
			一.页面刷新问题 1.父页面A跳转到子页面B,B页面修改数据后再跳回A页面,刷新A页面数据 (1).父页面A代码 window.addEventListener("pageflowrefre ... 
- leetcode 141  142. Linked List Cycle
			题目描述: 不用辅助空间判断,链表中是否有环 /** * Definition for singly-linked list. * struct ListNode { * int val; * Lis ... 
- HDU - 2818
			Building Block Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ... 
- window下线程同步之(原子锁)
			原子锁:当多个线程同时对同一资源进行操作时,由于线程间资源的抢占,会导致操作的结果丢失或者不是我们预期的结果. 比如:线程A对一个变量进行var++操作,线程B也执行var++操作,当线程A执行var ... 
- 是时候升级你的Js工具了-分页【基于JQ】
			好久没有来逛园子,也好久没有更新博客,就像沉睡已久的人忽然被叫醒,忽然就被园友的回复惊醒了.园友提出了关于我之前一篇文章的疑问——可那已经是半年以前的博客了,加上我一直觉得分享给大家的应该是我最新的思 ... 
- msyql安装
			1.安装msyql yum install -y ncurses-devel automake autoconf bison libtool-ltdl-devel cd /soft wget http ... 
- 转:攻击JavaWeb应用[2]-CS交互安全
			转:http://static.hx99.net/static/drops/tips-164.html 攻击JavaWeb应用[2]-CS交互安全 园长 · 2013/07/08 14:54 注:本节 ... 
- Oracle基础了解
			数据库: 关系型数据库 select * from 表名 非关系型数据库(做不到复杂查询) 以对象的形式进行存储 {"aaa":"ccc"}---键值对 ora ... 
