精华内容
下载资源
问答
  • 1、unitytouch这个主要是用来对有触摸屏的设备进行交互控制的一种逻辑实现,就像电脑上通过鼠标点击进行逻辑交互一样。2、Touch这个中的一些方法:touchCount:获取当前的触摸个数,就是几个手指触摸了屏幕这...

    9ad25ec87e4469d5908028838233307c.png

    1、unity中touch这个类主要是用来对有触摸屏的设备进行交互控制的一种逻辑实现,就像电脑上通过鼠标点击进行逻辑交互一样。

    2、Touch这个类中的一些方法:

    • touchCount:获取当前的触摸个数,就是几个手指触摸了屏幕这个就会输出几。
      • 当我有10个指头触碰了屏幕:Debug.Log(Input.touchCount)就会输出:10
    • deltaTime:获取本次记录touch状态和上次记录touch状态的时间差。
      • 当我触碰了一下屏幕后经过两秒中又触碰了一次:Debug.Log(input.GetTouch(0).deltaTime)就会输出这两次点击的时间差。
    • deltaPosition:获取两次点击屏幕的位置差
      • Debug.Log(input.GetTouch(0).deltaPosition)就会返回这两次触屏的位置差,返回值是个二位向量。
    • tapCount:获取的是点击屏幕的次数
      • 当我点击屏幕5次时,Debug.Log(input.GetTouch(0).tapCount就会返回5.
    • TouchPhase.Began:这个只有当手指触摸到屏幕时才触发
      • 当我手指触摸到屏幕时,Debug.Log(input.GetTouch(0).phase == TouchPhase.Began)就会输出true。
    • TouchPhase.Moved:当手指在屏幕上移动时才会触发
    • TouchPhase.Stationary:当手指在屏幕上按住不动时触发
    • TouchPhase.Ended:当手指离开屏幕时触发
    • position:用于获得手指在屏幕上的坐标
      • Debug.Log(input.GetTouch(0).position)将会返回此时触摸屏幕的那根手指的屏幕坐标。

    这是本次测试用的代码,自己需要创建UI。

    8904d0a73ccb68ad7d500b78eb90dbcc.png

    54344252f516bec161a5007344ff2b19.png
    展开全文
  • unityTouch类相关知识

    2020-02-06 14:01:07
    首先:所有Touch类在PC端均不生效 每当一个手指触摸屏幕时,Unity都会为其生成一个Touch对象 Input.touchCount可以获取当前Touch对象的个数 Unity会将当前存在的所有Touch对象放在Input.touches这个数组中 获取Touch...

    首先:所有Touch类在PC端均不生效

    每当一个手指触摸屏幕时,Unity都会为其生成一个Touch对象

    Input.touchCount可以获取当前Touch对象的个数

    Unity会将当前存在的所有Touch对象放在Input.touches这个数组中

    获取Touch对象
    Touch myTouch = Input.touches[0];
    另一种方式获取指定Index的Touch对象:Input.GetTouch(index);

    fingerId是用来识别当前手指的唯一标示
    myTouch.fingerId

    deltaPosition当前位置与上次位置之间的差
    myTouch.deltaPosition

    deltaTime本次记录Touch对象状态与上次记录Touch状态之间的时间差
    myTouch.deltaTime

    Touch对象的生命周期的结束并不是手指离开屏幕后立刻销毁
    如果一根手指在同一位置快速点击,则视作同一Touch对象
    tapCount为Touch对象所对应的手指点击屏幕的次数
    myTouch.tapCount

    phase表示当前手指所对应的Touch对象的阶段(状态)
    myTouch.phase
    当一个手指刚按下时,其对应的Touch对象的Phase是Began
    TouchPhase.Began
    当一个手指在屏幕上移动时,其对应的Touch对象的Phase是Moved
    TouchPhase.Moved
    当一个手指在屏幕上按住不动时,其对应的Touch对象的Phase是Stationary
    TouchPhase.Stationary
    当一个手指离开屏幕时,其对应的Touch对象的Phase是Ended
    TouchPhase.Ended
    当因为某些原因(系统原因)取消对某个手指的追踪时,其对应的Touch对象的Phase是Canceled
    TouchPhase.Canceled

    rawPosition为当前Touch对象所对应的手指的初始(刚按下时)屏幕坐标
    myTouch.rawPosition
    position为当前Touch对象所对应的手指的屏幕坐标
    myTouch.position

    unity打包出来的软件返回键是由该软件接管的而非由安卓接管
    返回键的键码为Escape
    Input.GetKeyDown(KeyCode.Escape)

    该操作可将返回键控制权交回给安卓
    Input.backButtonLeavesApp = true;

    注意:
    以下三行在移动端也生效,带来方便的同时也会带来隐患
    Input.GetMouseButton(0)
    Input.GetAxis(“Mouse X”)
    Input.GetAxis(“Mouse Y”)

    展开全文
  • [Unity移动端]Touch类

    2018-01-07 16:22:00
    [Unity移动端]Touch类 Touch类的信息只能在移动端(触摸屏)上能够获取,在编辑器上是不能获取到的。因此,为了方便测试,可以打包apk后在模拟器上跑: unity打包apk:...

    Touch类的信息只能在移动端(触摸屏)上能够获取,在编辑器上是不能获取到的。因此,为了方便测试,可以打包apk后在模拟器上跑:

    unity打包apk:https://www.jianshu.com/p/3c67fbfbb67c

     

    一.常用api

    1.Input.touches:返回上一帧中所有的触摸信息。每一条触摸信息代表着一只手指在屏幕上的触碰状态。因为是一帧的触摸信息,所以建议在Update中调用。长度为1时,表示1只手指在屏幕上,如此类推。

    2.Input.GetTouch:返回指定的一条触摸信息。一般传0,表示返回第一条触摸信息,即在屏幕上的第一只手指的触摸信息。

    3.TouchPhase:触摸状态。其取值为:Began(手指开始触摸屏幕)、Moved(手指在屏幕上移动)、Stationary(手指触摸屏幕,但并没有移动)、Ended(手指从屏幕上移开。这是一个触摸的最后状态)、Canceled(系统取消跟踪触摸,如用户把屏幕放到他脸上或超过五个接触同时发生(个数根据平台而定)。这是一个触摸的最后状态)

     

    二.测试

    代码如下:

     1 using System.Collections.Generic;
     2 using UnityEngine;
     3 
     4 public class TestTouch : MonoBehaviour {
     5 
     6     private string touchesStr;//当前记录
     7     private List<string> logList = new List<string>();//历史记录
     8     private Vector2 scrollPosition = Vector2.zero;
     9 
    10     private void Update()
    11     {
    12         Touch[] touches = Input.touches;
    13         touchesStr = string.Format("Input.touches({0}):", touches.Length);
    14 
    15         for (int i = 0; i < touches.Length; i++)
    16         {
    17             Touch touch = touches[i];
    18             string pos = touch.position.ToString();
    19             string phase = touch.phase.ToString();
    20             string content = string.Format("{0},{1}", pos, phase);
    21             touchesStr = touchesStr + content;
    22         }
    23 
    24         if (touches.Length > 0)
    25         {
    26             AddLog(touchesStr);
    27         }
    28     }
    29 
    30     private void OnGUI()
    31     {
    32         GUILayout.Label(touchesStr);
    33 
    34         scrollPosition = GUILayout.BeginScrollView(scrollPosition, true, true, GUILayout.Width(Screen.width), GUILayout.Height(Screen.height / 2));
    35         for (int i = 0; i < logList.Count; i++)
    36         {
    37             GUILayout.Label(logList[i]);
    38         }
    39         GUILayout.EndScrollView();
    40 
    41         if (GUILayout.Button("清除log"))
    42         {
    43             ClearLog();
    44         }
    45     }
    46 
    47     void AddLog(string str)
    48     {
    49         logList.Add(str);
    50     }
    51 
    52     void ClearLog()
    53     {
    54         logList = new List<string>();
    55     }
    56 }

     

    1.点击

    2.拖拽

    posted on 2018-01-07 16:22 艰苦奋斗中 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lyh916/p/8228317.html

    展开全文
  • 简述Unity中的Touch类

    2020-11-12 11:29:26
    所幸Unity有自带的触摸类Touch可以解决一部分问题,但他真的很鸡肋(或许 是我不会用,但网上的相关插件是真的多,比如EasyTouch,大家都说它好用,但我去找的时候UnityAssetStore把 他下架了,痛哭)。鸡肋也敌不过...
    **前言:**
    最近在一家公司实习的时候接触面向移动端开发游戏,这时候触摸就是一个不可避免的东西,虽然在导出的时候,写在
    脚本中的Mouse时间也能够触发,但是Unity底层的东西,我也不太明白,所以可能会出一些问题。
    而且这样写能够实现的功能就很少了。所幸Unity有自带的触摸类Touch可以解决一部分问题,但他真的很鸡肋(或许
    是我不会用,但网上的相关插件是真的多,比如EasyTouch,大家都说它好用,但我去找的时候UnityAssetStore把
    他下架了,痛哭)。鸡肋也敌不过简单,而且我只需要一些简单的功能(拖拽移动,放缩,点击,旋转等),所以我
    把官网的API搬运了一下
    

    Input.Touch Untiy触摸类(以下只是其中的一部分)

    1、先来说说Input.TouchCount这是获取当前有几个手指在触摸屏幕(为什么我在网上看了很多说按着他就会自增的文章,这也是我为什么要写这篇文章的原因。我产生过自我怀疑,然后自己的打印了一下确实是几根手指,建议读者也去自己尝试,眼见为实)
    2、Input.touches 会返回一个Touch的对象数组,当前所有的触摸。
    3、Input.multiTouchEnabled 是否允许多指操作,禁止后只会检测第一个触摸
    4、Input.GetTouch(int touchIndex)可以获取一个Touch对象,touchIndex是你手指触摸的顺序
    5、touch.phase 触摸的状态,对应emnu TouchPhase {Began:触摸伊始,Moved:移动,Stationary:触摸静止(长按), Ended:触摸结束, Canceled:触摸取消(系统取消对触摸的追踪)}
    6、touch.fingerId 一个触摸的唯一标识,当你手指触摸屏幕的时候会产生一个touch对象,而这个fingerId是唯一标识一个touch对象的,手指不离开他就不会改变。注(双击的时候fingerId也是不会变得,因为那个时间间隔不会让这个touch对象释放)。
    7、touch.tapCount 一个触摸的点击次数,如上面fingerId所说短时间松手并不会造成touch的消亡,所以他能够检测到点击的次数
    8、touch.position 一个触摸的坐标,对应屏幕坐标。
    9、touch.deltaPosition 没帧的位置增量。

    我用到的就是这些了,没什么技术含量。下面上一个应用实例

        //人物上下移动,旋转(移动端)
        private void YMove() {
            if (Input.touchCount == 1) {
                Vector2 oriPos = new Vector2(0, 0);
                if (Input.GetTouch(0).phase == TouchPhase.Began) {
                    oriPos = Input.GetTouch(0).deltaPosition;
                    //AvatarSys.instance.ajo.Call("CloseViewPage");
                }
    
                if (Input.GetTouch(0).phase == TouchPhase.Moved) {
                    Vector2 move = (Input.GetTouch(0).deltaPosition - oriPos) / 500;
    
                    float top = transform.position.y + transform.localScale.y / 2;
                    float buttom = transform.position.y - transform.localScale.y / 2;
    				/*这里可以加你想要的控制*/
                    transform.Rotate(Vector3.up, -move.x * 100);
                }
    
          
            }
    
        }
    
        //人物放缩
        private void Scale() {
            if (Input.touchCount == 2) {
                Touch touch1 = Input.GetTouch(0);
                Touch touch2 = Input.GetTouch(1);
                float oldDis, newDis;//两点之间的变化距离
    
                if (touch2.phase == TouchPhase.Began) {
                    oldTouch1 = touch1;
                    oldTouch2 = touch2;
                    return;
                }
    
                if (touch1.phase == TouchPhase.Moved || touch2.phase == TouchPhase.Moved) {
                    oldDis = Vector2.Distance(oldTouch1.position, oldTouch2.position);
                    newDis = Vector2.Distance(touch1.position, touch2.position);
    
                    float change = (newDis - oldDis) / 200;
                    Vector3 moveDis = new Vector3(change, change, change);
                    if (transform.localScale.x < 6 && transform.localScale.x > 1) {
                        transform.localScale += moveDis;
    
                    } else if (transform.localScale.x >= 6 && change < 0) {
                        transform.localScale += moveDis;
                    } else if (transform.localScale.x <= 1 && change > 0) {
                        transform.localScale += moveDis;
                    }
                    oldTouch1 = touch1;
                    oldTouch2 = touch2;
    
                }
    
            }
        }
    
        //检测人物碰撞
        public void OnCollisionClick() {
            if (Input.GetMouseButtonDown(0)) {//判断是否是点击事件
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hitInfo;
                if (Physics.Raycast(ray, out hitInfo)) {
                    //如果是一根手指触摸屏幕而且是刚开始触摸屏幕 
                    if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began) {
                        if (Input.GetTouch(0).tapCount == 1) {//判断点击的次数
                            Debug.Log(hitInfo);
                            //AvatarSys.instance.ajo.Call("HitInfo", hitInfo.transform.gameObject.name);//调用Android
                        }
                    }
    
                }
            }
        }
        
    

    菜鸟一枚,欢迎大牛评论指导补充,谢谢。

    展开全文
  • 1、unitytouch这个主要是用来对有触摸屏的设备进行交互控制的一种逻辑实现,就像电脑上通过鼠标点击进行逻辑交互一样。2、Touch这个中的一些方法:touchCount:获取当前的触摸个数,就是几个手指触摸了屏幕这...
  • UnityTouch类的简单介绍

    千次阅读 2018-04-16 17:37:28
    using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class TouchDemo : MonoBehaviour{ public Text infoText; private string info; private voi...
  • Touch类 phase共有5个状态,分别是: Began 开始状态 Moved 移动状态 Stationary 不动状态 Ended 结束状态 Canceled 取消状态 手指追踪Demo 步骤如下: 1.新建Sphere,并Reset; 2.添加Trail...
  • unity的触摸类touch使用

    千次阅读 2017-09-05 16:03:55
    这篇博文将简单的记录,如何用unity处理在移动设备上的触控操作。  iOS和Android设备能够支持多点触控。在unity中你可以通过Input.touches属性集合访问在最近一帧中触摸在屏幕上的每一根手指的状态数据。简单的触控...
  • (1)Touch类介绍 (2)编写Touch管理类 (3)修改摇杆控制 4.资源下载 5.推送 6.结语 1.效果展示 2.博客介绍  手游开发和端游总会有很多的差别,在端游中获取点击的方式我们会选择Input.GetMouseButton...
  • Unity3D手机中Input类touch详解

    万次阅读 2015-04-14 07:25:26
    Unity3D手机中Input类touch详解: 1.Input.touchCount 触摸随之增长,一秒50次增量。 2.Input.GetTouch(0).phase==TouchPhase.Moved 手指滑动中最后一帧滑动的状态是运动的。 3.TouchPhase 触摸的几个状态...
  • 1.Input.touchCount 触摸随之增长一秒50次增量 2.Input.GetTouch(0).phase==TouchPhase.Moved 手指滑动中最后一帧滑动的状态 是 运动的 3.TouchPhase触摸的几个状态 4.Touch.deltaPosition 增量位置 (Input....
  • Unity Touch简单知识

    千次阅读 2018-03-07 14:14:08
    熟练几种常见的类,看手册即可deltaPosition:两点...对应Touch类中的phase属性。这是状态分别是:Began、Move、Stationary、Ended、Canceled。 position :触摸点的位置,向上,下 Input.GetTouch(0).positiontap...
  • 多点触控时,下标是从0开始的,两个触控点下标就是0,1。 ...if(touchCount == Input.touchCount()){ vector2 touchPosition1 = Input.GetTouch(0).position; vector2 touchPosition2 = In...
  • 1.Input.touchCount 触摸随之增长 一秒50次增量 2.Input.GetTouch(0).phase==TouchPhase.Moved 手指滑动中最后一帧滑动的状态 是 运动的 3.TouchPhase 触摸的几个状态 4.Touch.deltaPosition 增量位置 ...
  • unity中Input.Touch详解

    2020-07-29 11:41:57
    1、Touch类:用来记录一个手指触摸在屏幕上的状态与位置的各种相关数据。这其它中只有两个属性是你要注意的,就是Touch.fingerId和Touch.tapCount。 Touch.fingerId: 一个Touch的标识。Input.touches数组中的同一个...
  • 想要在使用LeanTouch 插件时...该案例为每一个小球添加了Lean Selectable组件,然后添加进对应的处理事件脚本LeanSelectableBehaviour.cs,该脚本继承自LeanSelectableBehaviour,并且重写了里面的Awake(), OnSelect
  • 在端游上大家应该多数都使用过的EasyTouch插件,在EasyTouch 5.0.17 最新版本扩展方法中我有过简单的介绍,今天说一下另一款触摸插件,它非常适合做展示大屏幕的多点触控TouchScript,在Unity上的AssetStore也是...
  • 为了在移动设备上操控角色,本人便开发了UGUI Touch Input Component输入插件. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ib38gelK-1583407565243)...
  • 在端游上大家应该多数都使用过的EasyTouch插件,在EasyTouch 5.0.17 最新版本扩展方法中我有过简单的介绍,今天说一下另一款触摸插件,它非常适合做展示大屏幕的多点触控TouchScript,在Unity上的AssetStore也是...
  • Unity—Input

    2018-04-17 16:24:00
    Unity Input常用&函数: TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true); Input.GetKey(KeyCode.A); Touch [] touch =Input.touches; ...
  • unity基础

    2015-11-30 14:21:04
    编辑器结构: ... 组件 (的实例){Transform,Render,Audio Listener etc.}  属性 MVC结构:  Model : 脚本 , 逻辑关系  View : GUI , Audio  Controller : 输入事件,mouse , touch
  • Unity 触屏缩放模型

    2016-06-07 23:31:00
    Unity官网API中提供了Input类和Touch类,在该类里提供了许多接口。相信只要我们稍微看下,就可以自己应用了!下面以模型的旋转与缩放为例,学习下是如何实现多点触控的! 1,打开Unity建一个空的项目工程。 2,以...
  • 本文实例为大家分享了unity实现手游虚拟摇杆的具体代码,供大家参考,具体内容如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 绑定到摇杆...
  • Unity3D游戏中Android本地推送通知整理

    千次阅读 2018-04-16 23:00:16
    现在手游中出现了越多的定时通知的需求,...在Unity3D官方提供的API中,UnityEngine.iOS中有一个:LocalNotification 它只实现了iOS的本地推送,即仅适用于iphone/ipad/ipod Touch. Unity3D API链接:https://do...
  • Unity中的人物控制

    千次阅读 2018-10-27 22:23:43
    需要用到Input,它可以监听键盘,鼠标,手柄,以及移动设备上的Touch事件。由于全局输入没有提供触发事件,需要在Update中通过每一帧的更新去判断是否执行。 1、Input中的GetKey方法有三种:GetKey(...
  • Input中对触摸操作的方法或变量如下图所示: 通过GetTouch或者touches可以访问移动没备的触摸数据,数据保存在Touch的结构体中。下图是Touch的结构体变量: 二、基本用法示例 1、示例1(遍历所有Touch并输出Touch...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

touch类unity