Unity-EasyTouch插件之One Finger
2015-07-03 20:40
357 查看
原文链接:https://www.geek-share.com/detail/2646927202.html
这节课,我们主要讲下单个手指的测试。比如单击啊,双击啊,拖动,单手滑动等。
单击:
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秒。
这里细心的小伙伴可能观察到了,在长单击中有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那样的。还有想要移动某个物体啊等等。
转载于:https://www.cnblogs.com/CaomaoUnity3d/p/4619670.html
相关文章推荐
- Unity-EasyTouch插件之Two Finger
- Unity-EasyTouch插件之Two Finger
- Win10安装VS2017时,“使用Unity的游戏开发”不可用,提示not Win10 threhold one and tow build Number
- Unity 3D FingerID
- Unity资源管理原理 One
- {Unity} 停止播放PlayClipAtPoint播放产生的OneShotAudio音效的方法
- Unity-EasyTouch插件之One Finger
- IOS 实现 单指(one finger)操作:旋转 缩放。(理想中的逻辑)
- Unity Fingergesture
- 【游戏开发日志】【Unity】day_one
- [Unity2d系列教程] 005.Unity如何使用外部触控插件FingerGuesture
- KT One Finger Rotation Gesture Recognizer
- Unity_使用EasyTouch插件碰撞检测失效的解决方法
- unity中出现UriFormatException: URI scheme must start with a letter and must consist of one of alphabet,
- KT One Finger Rotation Gesture Recognizer
- Unity Input Touch fingerId
- [Unity问题]There are 4 audio listeners in the scene. Please ensure there is always exactly one audio l
- Unity-EasyTouch插件之ReservedArea的运用(主要是避免JoyStick与Touch的矛盾)
- unity kinect2 怎么使用姿势或者使用你自己的How to Use Gestures or Create Your Own Ones
- Unity-EasyTouch插件之ReservedArea的运用(主要是避免JoyStick与Touch的矛盾)