什么是FingerGestures?

FingerGestures是Unity上,非常热门的一款用于处理用户输入的插件

为什么要使用FingerGestures?

1:它统一了鼠标点击和用户触摸的输入模型。使得我们可以在UnityEditor里面就可以方便地进行触摸测试(而不必发布到机器上)

2:它提供了丰富的触摸、手势事件支持

3:使用符合KISS原则,不需要复杂的配置,即可实现功能

4:这个吊了:允许用户自定义手势触发图案(无尽之剑的手势触发技能,用它轻松实现)

相信你已经迫不及待开始这段传奇之旅了。下面通过一个简单Tap(点击)事件的例子:触摸屏幕上的物体,输出碰撞的物体名称和碰撞点;

OK,让我们开始了解这个神器

入门

1:导入FingerGestures的Unity安装包,默认位置在Plugins/FingerGestures/目录下

2:创建一个场景,将FingerGestures这个prefab拖进场景

3:创建一个空的GameObject(也可以用现有的),我们需要将触摸的脚本挂载到这个上面

4:点击该GameObject的属性窗口,在弹出的窗口选择FingerGestures,然后依次在如下两个选项下,找到Tap Recognizer 和Screen RayCaster

5:将你场景里面的Camera的Tag设置成MainCamera(推荐)

或者你需要告诉FingerGestures,那个Camera才是它需要的(不推荐,个人测试,遇到碰撞优先级错误的问题)

设置Tag法:

或者手动指定法:

找到第4步骤添加的Screen RayCaster组件,指定相机

6:编写测试代码

FingerGestures里面方法传递有两种方式

1:使用c# 代理方式(推荐,性能好)

2:类似Unity的SendMessage()广播方式(方便,性能略低)

第1种代理法:创建一个脚本,黏贴下面的代码,挂载到第三步骤创建的GameObject就好了

using UnityEngine;

[RequireComponent(typeof(TapRecognizer))]
public class InputHelper : MonoBehaviour
{
// Use this for initialization
void Start ()
{
TapRecognizer tapRecognizer = GetComponent<TapRecognizer> ();
tapRecognizer.OnGesture += Tap_Gesture; }
void Tap_Gesture (TapGesture e)
{
GameObject hittedObject = e.Selection; if (null != hittedObject) { Vector3 hitPos3d = e.Raycast.Hit3D.point;
Debug.Log (hittedObject.name + " pos:" + hitPos3d); } else { }
}
}

第二种广播法:

1:设置Tap Recognizer,如下把我们第三部创建的GameObject拖放到MessageTarget上

2:代码:

去掉第一种代理法里Start()方法,就可以了

总结:

1:本文中推荐的步骤或者少配置、或者性能好,请使用的时候倾向于这些方式。

2:要碰撞的物体请设置一个Collider,在Component的Physics目录下。

3:添加的两个组件的作用:

Tap Recognizer:触摸事件识别类

Screen RayCaster:物体被碰撞的时候,需要知道这道光线从哪里过来(和摄像头的方向一致)

unity手势插件《FingerGestures 》使用入门的更多相关文章

  1. 2017年Unity游戏开发视频教程(入门到精通)

    本文是我发布的一个Unity游戏开发的学习目录,以后我会持续发布一系列的游戏开发教程,都会更新在这个页面上,适合人群有下面的几种: 想要做独立游戏的人 想要找游戏开发相关工作的人 对游戏开发感兴趣的人 ...

  2. 开发unity DLL插件

    最近开发一款设备的SDK,想着要开发unity版本,怎么做呢?首先想到的就是在外部编写相关的驱动程序然后集成成几个dll作为unity的SDK使用了.So,我就开始了unity外部插件的研究之旅了. ...

  3. chrome插件编写基本入门

    chrome插件编写基本入门  http://igeekbar.com/igeekbar/post/331.htm #精选JAVASCRIPTCHROME 作为一名程序猿,怎么能不会写chrome插件 ...

  4. (转)Unity Cinemachine插件,实现单目标和多目标之间切换

    Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换*版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插件 ...

  5. unity常用插件

    Unity3D常用插件,网址:http://jingyan.baidu.com/article/7f766daf4ef2844100e1d079.html ,想想自己也有小半年unity经验了,于是整 ...

  6. unity自带寻路Navmesh入门教程(一)

    说明:从今天开始,我阿赵打算写一些简单的教程,方便自己日后回顾,或者方便刚入门的朋友学习.水平有限请勿见怪.不过请尊重码字截图录屏的劳动,如需转载请先告诉我.谢谢! unity自从3.5版本之后,增加 ...

  7. 【转】unity自带寻路Navmesh入门教程(一)

    http://liweizhaolili.blog.163.com/blog/static/16230744201271161310135/ 说明:从今天开始,我阿赵打算写一些简单的教程,方便自己日后 ...

  8. 开源Unity小插件CheatConsole

    我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...

  9. 编写 Unity Editor 插件

    Editor Style Viewer 在开发过程中,我喜欢编写一些辅助的Editor插件,方便在游戏开发过程进行调试. 下面是摘自Asset Store的一个查看Unity 默认GUI样式的小工具 ...

随机推荐

  1. hdu 4685(匹配+强连通分量)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4685 思路:想了好久,终于想明白了,懒得写了,直接copy大牛的思路了,写的非常好! 做法是先求一次最 ...

  2. php 将一个字符串分割为组成它的字符

    问: php里如何将一个字符串分割为组成它的字符? 比如hello  -> [h, e, l, l, o]   以下有三种方法: 这是需要被分割的字符串:  $str = 'Hello小样'; ...

  3. AWS系列-EC2实例添加磁盘

    注意:添加的磁盘,必须和挂载的实例是在同一可用区. 1.1 如下图,打开EC2控制台,打开卷,点击创建卷 1.2 选择磁盘配置 磁盘类型:如下图 磁盘大小:如图,最小500G,最大16T 可用区:注意 ...

  4. 【BZOJ2253】[2010 Beijing wc]纸箱堆叠 cdq分治

    [BZOJ2253][2010 Beijing wc]纸箱堆叠 Description P 工厂是一个生产纸箱的工厂.纸箱生产线在人工输入三个参数 n p a , , 之后,即可自动化生产三边边长为 ...

  5. Linux安装vsftpd

    卸载vsftpd sudo yum remove vsftpd 安装vsftpd sudo yum -y install vsftpd 创建一个文件夹用来当作ftp得仓库 cd / sudo mkdi ...

  6. wxshop_my移动端前端开发项目

    **************************************************************************************************** ...

  7. style、currentStyle、getComputedStyle(不同浏览器获取css样式)区别介绍

    style.currentStyle.getComputedStyle区别介绍   样式表有三种方式 内嵌样式(inline Style) :是写在Tag里面的,内嵌样式只对所有的Tag有效. 内部样 ...

  8. Python IDE软件PyCharm通用激活方法

    1,打开软件点击help-Register 2,输入地址http://xidea.online激活

  9. PAT 1026 Table Tennis (30)

    A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For a ...

  10. Servlet------>jsp自定义标签SimpleTag(jsp2.0以后的方法,1-5已经淘汰了)

    自定义标签能做什么: 1.移除java代码 2.控制jsp页面某一部分是否执行 3.控制整个jsp是否执行 3.jsp内容重复输出 4.修改jsp内容输出 位置: TagDemo1.java pack ...