[Unity3D插件]FingerGesture的简单实用 推荐 原创 蓬莱仙羽 2014-03-11 00:10:11 博主文章分类:Unity3D ©著作权 文章标签 Unity插件FingerGesture 文章分类 游戏开发 ©著作权归作者所有:来自51CTO博客作者蓬莱仙羽的原创作品,请联系作者获取转载授权,否则将追究法律责任 当时的手机霸主诺基亚也曾辉煌过,但现在已经逐渐退出了人们的视线,因为它没有跟上潮流,IT世界发展瞬息万变,正因为它没有迎合时代发展,所以就逐渐被淘汰。在诺基亚时代,手机都是按键式的,但自从出现了Android系统,各种智能机都如雨后春笋般涌出,往大屏幕,无按键的趋势发展,所以各种手机应用只能用虚拟的,比如虚拟按钮,虚拟键盘,虚拟摇杆等等。继续之前做的小龙游戏的设计,然后就想到点击屏幕执行小龙飞跃的操作,然后就想到unity中FingerGesture插件。然后去搜索这个插件的使用,自然而言就搜到了Momo的博客,原来他老早就研究过了这个插件,我也就顺便学习一下,写一写学习心得!关于Fingergesture的使用Momo的创建步骤和代码已经写得很详细了,关于插件的下载,他博客也写得很清楚,我这儿就谢谢我的个人理解和学习的一个过程!接下来先看效果图,不要看就一个鼠标按下的操作,可以分解成很多过程,鼠标按下->鼠标按住->鼠标弹起,这很有当年开发单片机的感觉,有相似过程,单片机上的按钮会出发0-1高低电频,比如没按住是高电平,按下是低电平,一直按住就一直处于低电平的状态,然后LED灯管就能一直亮,然后再松开又回到高电平,LED灯灭,这电频变化的一瞬间有一个触发方式,边沿触发,呵呵,似乎是扯远了,但其实原理有类似的地方!效果图单击屏幕提醒一下,我点击的左下角,看到屏幕的坐标原点其实是以左下角为原点的,这就是OpenGL坐标的原点规定!双击屏幕滑动手势滑动的分解过程:按下->按下事件开始->按下中->滑动开始->滑动中->滑动结束->判断滑动方向长按手势代码(挂在Cube上)[csharp]view plaincopyprint?using UnityEngine; using System.Collections; publicclass FingerEvent : MonoBehaviour { void OnEnable() { //启动时调用,这里开始注册手势操作的事件。//按下事件: OnFingerDown就是按下事件监听的方法,这个名子可以由你来自定义。方法只能在本类中监听。下面所有的事件都一样!!! FingerGestures.OnFingerDown += OnFingerDown; //抬起事件 FingerGestures.OnFingerUp += OnFingerUp; //开始拖动事件 FingerGestures.OnFingerDragBegin += OnFingerDragBegin; //拖动中事件... FingerGestures.OnFingerDragMove += OnFingerDragMove; //拖动结束事件 FingerGestures.OnFingerDragEnd += OnFingerDragEnd; //上、下、左、右、四个方向的手势滑动 FingerGestures.OnFingerSwipe += OnFingerSwipe; //连击事件 连续点击事件 FingerGestures.OnFingerTap += OnFingerTap; //按下事件后调用一下三个方法 FingerGestures.OnFingerStationaryBegin += OnFingerStationaryBegin; FingerGestures.OnFingerStationary += OnFingerStationary; FingerGestures.OnFingerStationaryEnd += OnFingerStationaryEnd; //长按事件 FingerGestures.OnFingerLongPress += OnFingerLongPress; } void OnDisable() { //关闭时调用,这里销毁手势操作的事件//和上面一样 FingerGestures.OnFingerDown -= OnFingerDown; //点击开始 FingerGestures.OnFingerUp -= OnFingerUp; //点击结束 FingerGestures.OnFingerDragBegin -= OnFingerDragBegin; //拖动开始 FingerGestures.OnFingerDragMove -= OnFingerDragMove; //拖动中 FingerGestures.OnFingerDragEnd -= OnFingerDragEnd; //拖动结束 FingerGestures.OnFingerSwipe -= OnFingerSwipe; //判断四个方向 FingerGestures.OnFingerTap -= OnFingerTap; //连续点击//按下事件 FingerGestures.OnFingerStationaryBegin -= OnFingerStationaryBegin; FingerGestures.OnFingerStationary -= OnFingerStationary; FingerGestures.OnFingerStationaryEnd -= OnFingerStationaryEnd; FingerGestures.OnFingerLongPress -= OnFingerLongPress; //长按 } //按下时调用void OnFingerDown( int fingerIndex, Vector2 fingerPos ) { //int fingerIndex 是手指的ID 第一按下的手指就是 0 第二个按下的手指就是1。。。一次类推。//Vector2 fingerPos 手指按下屏幕中的2D坐标//将2D坐标转换成3D坐标 transform.position = GetWorldPos( fingerPos ); Debug.Log(" 按下 = 坐标:" +fingerPos); } //抬起时调用void OnFingerUp( int fingerIndex, Vector2 fingerPos, float timeHeldDown ) { Debug.Log(" 抬起 = 坐标:" +fingerPos +"时间:"+timeHeldDown); } //开始滑动void OnFingerDragBegin( int fingerIndex, Vector2 fingerPos, Vector2 startPos ) { Debug.Log("滑动开始 fingerIndex =" + fingerIndex + " fingerPos ="+fingerPos +"startPos =" +startPos); } //滑动结束void OnFingerDragEnd( int fingerIndex, Vector2 fingerPos ) { Debug.Log("滑动结束 fingerIndex =" + fingerIndex + " fingerPos ="+fingerPos); } //滑动中void OnFingerDragMove( int fingerIndex, Vector2 fingerPos, Vector2 delta ) { transform.position = GetWorldPos( fingerPos ); Debug.Log(" 滑动中 =" +fingerPos); } //上下左右四方方向滑动手势操作void OnFingerSwipe( int fingerIndex, Vector2 startPos, FingerGestures.SwipeDirection direction, float velocity ) { //结果是 Up Down Left Right 四个方向 Debug.Log("滑动方向(Up/Down/Left/Right) :" + direction + " with finger " + fingerIndex); } //连续按下事件, tapCount就是当前连续按下几次void OnFingerTap( int fingerIndex, Vector2 fingerPos, int tapCount ) { Debug.Log("连续按下次数: " + tapCount + " ,fingerindex: " + fingerIndex); } //按下事件开始后调用,包括 开始 结束 持续中状态只到下次事件开始!void OnFingerStationaryBegin( int fingerIndex, Vector2 fingerPos ) { Debug.Log("按下事件开始: " + fingerPos + " times with finger " + fingerIndex); } void OnFingerStationary( int fingerIndex, Vector2 fingerPos, float elapsedTime ) { Debug.Log("按下中: " + fingerPos + " times with finger " + fingerIndex); } void OnFingerStationaryEnd( int fingerIndex, Vector2 fingerPos, float elapsedTime ) { Debug.Log("按下结束:" + fingerPos + " times with finger " + fingerIndex); } //长按事件void OnFingerLongPress( int fingerIndex, Vector2 fingerPos ) { Debug.Log("长按事件,位置: " + fingerPos + ",fingerIndex:"+fingerIndex ); } //把Unity屏幕坐标换算成3D坐标 Vector3 GetWorldPos( Vector2 screenPos ) { Camera mainCamera = Camera.main; return mainCamera.ScreenToWorldPoint( new Vector3( screenPos.x, screenPos.y, Mathf.Abs( transform.position.z - mainCamera.transform.position.z ) ) ); } } 提示:OnEnable()和OnDisable()中注册和移除事件的方法,这里用到是C#语法委托和事件这两种语法,不明白的可以学习一下我之前写的关于这语法的文章,委托和事件(点击打开),委托(delegate)是一种类型,而事件(Event)是一种实例(委托中的一种),了解过C语言中函数指针的就应该明白这种用法的原理!我们就通过F12来查看FingerGestures插件方法实现的原理,就拿FingerGestures.OnFingerDown+= OnFingerDown;这行代码来举例子:首先FingerGestures是一个类,作者自定义的一个手势插件的类,真佩服能写插件的人,这才是真大牛!还是先看一下几个脚本的含义嵌套定义得不可谓不复杂,呵呵!FingerGestures.OnFingerDown,F12查看一下这个OnFingerDown是一个啥东东,会发现[csharp]view plaincopyprint?/// <summary>/// Event fired when a finger's OnDown event fires/// <seealso cref="Finger.OnDown"/>/// </summary>publicstaticevent FingerDownEventHandler OnFingerDown; 这其实就是一个事件的申明,看英文注释就知道是个Event,其实也看不出什么,重点是在这个FingerDownEventHandler,继续F12[csharp]view plaincopyprint?/// <summary>/// Delegate for the OnFingerDown event/// </summary>/// <param name="fingerIndex">0-based index uniquely indentifying a specific finger</param>/// <param name="fingerPos">Current position of the finger on the screen</param>publicdelegatevoid FingerDownEventHandler( int fingerIndex, Vector2 fingerPos ); 这是一个委托类型的声明,两个参数什么意思写的很明显,不解释!然后来看一下OnFingerDown这个我们自己自定义的方法,这用+=连接起来,其实就是多播委托的一种语法模式,一个委托能够执行多个方法,就像小明妈妈委托小明先去买菜,这是一个方法吧,然后买完菜去洗菜,然后做菜等等就是这种+=的形象解释。当然结束的时候要将方法给-=掉,不然小明会生气了,心中不满,妈妈你总是老叫我做个不停呀,哈哈!这就是OnDisable()中为什么要-=的一个解释!事件指向自己自定义的方法,但前提是参数必须要一样,就是你所委托的这个人要能完成你的事情,打个形象的比喻,你不能叫一个刚出生的小孩去打酱油吧,呵呵,就是这个道理!这下你感觉对委托和事件是一个什么关系应该更加深刻了吧! 赞 收藏 评论 分享 举报 上一篇:[Unity3D]上海某大型游戏公司的基础面试题 下一篇: [Unity3D插件]2dToolKit系列三 碰撞检测功能的实现以及障碍物的随机摆放 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 深入探讨Unity3D中实现流畅人物移动的技术 Unity3D是一款强大的游戏开发引擎,其中人物移动是游戏中一个关键的方面。在本文中,我们将探讨如何使用Unity的CharacterController组件实现基本的第一人称移动。1. 简介CharacterController是Unity中用于处理角色运动的专用组件。它允许我们通过脚本控制角色的移动、跳跃和碰撞等行为。2. 创建角色首先,确保你的场景中有一个包含CharacterControl 游戏开发 unity idea插件开发(3)-插件开发基础 上两篇文章主要描述了idea插件工程创建和idea插件的配置,本文继承上述两篇文章,详细描述下插件开发基础的第三块内容。也是开发具体插件功能前必须要了解的内容,否则开发过程中有可能会经常卡壳。 ide xml jar intellij java vite3 + vue3如何封装健壮的【SVG插件】? 前言小伙伴们好,我是月弦笙音,今天带大家用如何用vue3 + vite3封装一个健壮的svg插件!首先得知道为什么要使用svg概念:SVG是一种基于XML的矢量图形格式,SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体,用于在Web和其他环境中显示各种图形;它允许我们编写可缩放的二维图形,并可通过CSS或JavaScri 封装 js vue [Unity3D插件]FingerGesture的简单实用 当时的手机霸主诺基亚也曾辉煌过,但现在已经逐渐退出了人们的视线,因为它没有跟上 Fingergesture插件的使用 unity Fingergesture Fingergesture 自定义 sed 【Unity3D插件】Unity3D高亮插件 一、效果图二、下载链接https://download.csdn.net/download/q764424567/12325120三、使用说明直接将unitypackage文件导入到项目中目录如图所示:首先给摄像机添加Highlighting Effect组件:给要高亮的物体添加两个组件:就可以了 unity c# 个人博客 简书 源地址 【Unity3D插件】Unity3d Dotween插件的简单介绍及示例代码 unity里面做插值动画的插件有许多,比较常见的有itween、hotween、dotween。根据大家的反馈和实际体验来说,dotween插件在灵活性、稳定性、易用性上都十分突出。这里简单介绍下它的用法,并在后文做了一些效果示例,还是不错的。所谓”插值动画“,顾名思义就是在两个值中插入其他的值来实现动画。原理非常简单,比如想让某个物体从A地到达B地,我们只知道A和B的坐标,插值动画就 unity3d 插件 dotween 缓动 插值 【Unity3D插件】Unity3d iIween插件的研究 首先是插件的下载路径官方下载地址http://itween.pixelplacement.com/index.php点击Get iTween小图标 ->Download iTween或者 AssetStores商店中直接下载如何把iTween插件加入到项目中在项目中建立Plugins目录, 然后将下载的iTween.cs放到Plugins目录即可。如果需要编辑路径, 使用 unity3d 插件 iTween 寻路 源地址 【Unity3D插件】Unity3d KGFMapSystem插件使用 一、前言在我们开发游戏或者虚拟现实中,一般都会用到小地图,如果要我们去写小地图,应该会花费一点时间的吧,如何加快我们的开发速度呢,其实在unity 3d中就有一个“小”插件,是专门用开开发小地图用的,这个插件就是KGFMapSystem。这个是它的官网。http://www.kolmich.at/documentation/(KGF里面不只是有一个这样的插件,它里面有很多插件,有兴趣的 unity3d 插件 unity 自定义 ico 【Unity3D插件】Unity3d 插件研究之EasyTouch插件 首先是下载链接:第一:http://www.newbieol.com 第二:https://www.assetstore.unity3d.com/cn/#!/content/3322 第三:http://download.csdn.net/detail/s10141303/6962919 第四:http://pan.baidu.com/s/1o6Bt2bS创建步骤:点击菜单栏的Tools- unity3d 插件 EasyTouch 使用例子 摇杆 【Unity3D插件】Unity3d 视频播放插件AVPro Video的研究 一、前言Avpro Video是一款由RenderHeads出品的可以在Unity上安装使用的万能多平台视频播放插件,Avpro Video支持Windows,linux,ios,mac,Android等多平台万能播放。不仅可以实现基础的播放功能,还能实现进度条拖放和速率调整,播放4K视频,360度全景视频等,并对不同的平台进行了优化。二、参考资料http://www.online avpro unityavpro AVProVideo AVPro unity 【Unity3D插件】Photon Unity Networking(PUN)的简单使用 一、前言我们知道在untiy 5.1之后,unity自带了Unet,但是PUN的功能强大之处,更胜一筹。下面来简单介绍一下unity中使用Photon插件的方法。二、使用PUN插件当显示为Joined时候就可以点击地面,同步生成预制体Cube了。在面板里我们只需要加入一个Plane就可以了再去给它附上一个叫做Click的脚本就可以了。using UnityEngine;u unity networking 插件 PUN photon [Unity3D]playMaker插件 能,而对于代码是一窍 Playmaker Game 触发器 ide Unity3D插件大全 免费分享约5G。【清单如下】2D_Toolkit_1.51动画开发插件包FingerGestures触摸插件ORK_Okashi_RPG_Kit Unity3D的角色扮演游戏开发工具包uScript视觉脚本工具Unit 贴图 着色器 3D Unity3d插件]EasyTouch简单使用方法 EasyTouch使用 EasyTouch 文件夹[-] 一、效果图 二、操作步骤 1.官方文档上的步骤 2.翻译一下以上的步骤 3.依据官方的这些提示。自己来做一个属于自己的人物遥感控制 对于移动平台上的RPG类的游戏。我们经常使用虚拟摇杆来控制人物角色的行走和一些行为,相信我们对它并不陌生,之前 c# 版本号 移动平台 下载地址 虚拟摇杆 Unity3d mysql插件 unity3d游戏插件 unity 3d常用的插件介绍:1.NGUINGUI是严格遵循KISS原则并用C#编写的Unity(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架。其代码简洁,多数类少于200行代码。这意味着程序员可以很容易地扩展NGUI的功能或调节已有功能。对所有其他用户而言,这意味着更高的性能、更低的学习难度和更加有趣。完全集成到Inspector面板中。 不需要点击Play按钮就能查看结果。 Unity3d mysql插件 U3D插件整理 控件 UI 开发者 ios unity3d 插件 unity3d常用插件 1.FX MakerFX Maker是一款制作特效的工具,它专为移动操作系统做了优化。FX Maker包括300种Prefab特效,300种纹理结构、100种网格、100种曲线效果。支持英文和韩文,由开发商IGSoft提供. 2.Water.unitypackage这是一款用于水的插件,性能还比较高,用于移动设备也没问题,弥补了专业版的unity水特效资源在移动设备卡机的不足.  ios unity3d 插件 移动设备 开发者 iOS unity UI 插件 unity3d插件 Post-processing是将全屏的滤镜和特效应用于摄像机的图像缓冲区,然后渲染在屏幕上的过程。只需要花费较少的时间进行设置,就可以大大提高产品的视觉效果。 下面的图片展示了应用和没应用Post-processing的差别。 应用前应用后 很明显,使用后画面效果得到肉眼可辨的提升.看看画面还都用到那些后期处理效果,不难发现其中有Antialias unity UI 插件 ide 优先级 配置文件 unity3D的FingerGestures插件 fingerGestures包结构 FingerGestures/插件的根目录FingerGestures/Prefabs可以直接拖放到场景中的预设资源(prefabs)FingerGestures/Scripts核心脚本和组件FingerGestures/Scripts/Gesture Recognizers每个手势识别 的脚本FingerGestures/Scripts/Finger Eve 手势识别器 .net sed 拖拽 数据 UnityForSVN插件 unity3d插件 在学习UGUI的过程中,发现NGUI 中有各种Tween动画,UGUI中却没有,需要使用Animator等方法实现,甚是麻烦。朋友推荐使用DOTween ,故研究了一下,并将学习过程记录下来。 本人使用的Unity3d 版本为5.0.2f1 。DOTween插件下载地址 ,点这里 。 1,D UnityForSVN插件 DOTween System Text UI unity3d fps框架插件 unity3d fps教程 [Unity3D]最简单最详细的第一人称射击教程自学Unity3D一段时间,看到在网上有很多有关于Unity3D第一人称射击教程,但是大多数教程都比较复杂难懂,在这里我介绍一个比较简单实用的方法供大家参考,如有什么地方不对,还请大家指正。话不多说,先来一张效果图最有意思的是这个枪能够随着人物一起动,接下来让我们一起实现这个功能吧简要说明一下,在实现设计功能之前,这个工程已经具备了基本的行走和跳跃功 unity3d fps框架插件 unity 游戏 游戏开发 c#