Unity 中获取手机触屏的方法,,,

触屏函数写在Update()中,用于实时监测,,方法很好用我做2048的时候用过了,,,下面是示例代码,分享给大家,,,

//有触摸点,且滑动if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved){int dieX = 0;int dieY = 0;//获取滑动的距离  Input.GetTouch(0).deltaPositionVector2 touchDelPos = Input.GetTouch(0).deltaPosition;//比较两个方向滑动的绝对值的大小,,那个大,认为在那个方向在滑动if(Mathf.Abs(touchDelPos.x)> Mathf.Abs(touchDelPos.y)){//滑动距离,,这个值很灵敏,注意不要设置的太小if (touchDelPos.x > 10)  {dieX = 1;}//X方向的作用滑动else if(touchDelPos.x < -10){dieX = -1;}}else{if (touchDelPos.y > 10){dieY = 1;}else if (touchDelPos.y < -10){dieY = -1;}}}

上面的代码等同于在Update中写,按下A,W,S,D,,键是一样的,,,,

 //PC  端测试int dieX = 0;int dieY = 0;if (Input.GetKeyDown(KeyCode.A)){dieX = -1;}elseif (Input.GetKeyDown(KeyCode.D)){dieX = 1;}elseif (Input.GetKeyDown(KeyCode.W)){dieY = 1;}elseif (Input.GetKeyDown(KeyCode.S)){dieY = -1;}


放大缩小的处理

public class Gesture : MonoBehaviour {private Touch oldTouch1;  //上次触摸点1(手指1)private Touch oldTouch2;  //上次触摸点2(手指2)void Update(){//没有触摸,就是触摸点为0if (Input.touchCount <= 0){return;}   if(Input.touchCount >= 2){//多点触摸, 放大缩小Touch newTouch1 = Input.GetTouch(0);Touch newTouch2 = Input.GetTouch(1);//第2点刚开始接触屏幕, 只记录,不做处理if (newTouch2.phase == TouchPhase.Began){oldTouch2 = newTouch2;oldTouch1 = newTouch1;return;}//计算老的两点距离和新的两点间距离,变大要放大模型,变小要缩放模型float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);//两个距离之差,为正表示放大手势, 为负表示缩小手势float offset = newDistance - oldDistance;//放大因子, 一个像素按 0.01倍来算(100可调整)float scaleFactor = offset / 100f;Vector3 localScale = transform.localScale;Vector3 scale = new Vector3(localScale.x + scaleFactor,localScale.y + scaleFactor,localScale.z + scaleFactor);//在什么情况下进行缩放if (scale.x >= 0.05f && scale.y >=0.05f && scale.z >= 0.05f){transform.localScale = scale;}//记住最新的触摸点,下次使用oldTouch1 = newTouch1;oldTouch2 = newTouch2;}}
}

单击,双击,长按,旋转


//=============单击,双击==========
if (Input.GetMouseButtonDown(0)){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hitInfo;if (Physics.Raycast(ray, out hitInfo)){if (hitInfo.collider.gameObject.tag == "Target"){Debug.Log("射线检测是目标标签");if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began){Debug.Log("单击");if (Input.GetTouch(0).tapCount == 2){Debug.Log("双击操作");}}}}}//===========长按===========if (Input.GetMouseButton(0)){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hitInfo;if (Physics.Raycast(ray, out hitInfo)){if (hitInfo.collider.gameObject.tag == "Target"){Debug.Log("射线检测是目标标签");if (Input.touchCount == 1){if (Input.GetTouch(0).phase == TouchPhase.Began){touchTime = Time.time;touchDown = true;}else if (Input.GetTouch(0).phase == TouchPhase.Stationary){if (touchDown && touchTime - Time.time > 1f){touchDown = false;Debug.Log("长按");}}else{touchDown = false;}}}}}//===========旋转==============if (Input.GetMouseButton(0)){if(Input.touchCount == 1){if(Input.GetTouch(0).phase == TouchPhase.Moved){transform.Rotate(Vector3.up*Input.GetAxis("Mouse X")*Time.deltaTime*rotateSpeed,Space.World);Debug.Log("模型旋转");}}}

拖拽物体的脚本:


public class Drag : MonoBehaviour {private Vector3 vec3TargetScreenSpace;// 目标物体的屏幕空间坐标private Vector3 vec3TargetWorldSpace;// 目标物体的世界空间坐标private Transform trans;// 目标物体的空间变换组件private Vector3 vec3MouseScreenSpace;// 鼠标的屏幕空间坐标private Vector3 vec3Offset;// 偏移void Awake() { trans = transform; }IEnumerator OnMouseDown(){// 把目标物体的世界空间坐标转换到它自身的屏幕空间坐标vec3TargetScreenSpace = Camera.main.WorldToScreenPoint(trans.position);// 存储鼠标的屏幕空间坐标(Z值使用目标物体的屏幕空间坐标)vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z);// 计算目标物体与鼠标物体在世界空间中的偏移量vec3Offset = _trans.position - Camera.main.ScreenToWorldPoint(vec3MouseScreenSpace);// 鼠标左键按下while (Input.GetMouseButton(0)){// 存储鼠标的屏幕空间坐标(Z值使用目标物体的屏幕空间坐标)vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, vec3TargetScreenSpace.z);// 把鼠标的屏幕空间坐标转换到世界空间坐标(Z值使用目标物体的屏幕空间坐标),加上偏移量,以此作为目标物体的世界空间坐标vec3TargetWorldSpace = Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace) + _vec3Offset;// 更新目标物体的世界空间坐标trans.position = _vec3TargetWorldSpace;// 等待固定更新yield return new WaitForFixedUpdate();}}
}

Unity 获取手机触摸方法相关推荐

  1. unity获取手机IMEI码

    1.Android小白的体会:unity获取Android手机的IMEI码 在AndroidStudio中的撸代码,如下: /*** 获取手机IMEI(需要"android.permissi ...

  2. android应用获取手机存储空间方法

    获取手机内部空间和存储卡空间方法: public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundl ...

  3. Android之用adb命令快速获取手机IP方法总结

    方法1 adb shell netcfg 方法2 adb shell netstat 找到local address 方法3 手机root 安装busyboxadb shell ifconfig

  4. android程序获取手机imei方法

    IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台 ...

  5. unity获取手机设备信息(待修改,结合版)

    using System.Collections; using System.Collections.Generic; using System.Net.NetworkInformation; usi ...

  6. 安卓获取手机路径方法

  7. Unity 获取手机键盘弹出高度

    目的 在手机上进行聊天时,键盘弹起会盖住聊天窗口,所以需要键盘弹起的时候,将界面也进行上移. 解决 安卓 publicint GetKeyboardHeight(){using (var unityC ...

  8. Unity之手机键盘自定义输入栏位置适配不同手机分辨率适配

    Unity之手机键盘自定义输入栏位置适配&不同手机分辨率适配 效果图 PC端展示 手机端展示(手机是顶部带摄像头的IQOO Neo 5 ) 设计思路 也没啥思路不思路的,就是获取键盘高度,在安 ...

  9. Unity获取Android手机的RAM和剩余RAM和ROM

    Unity获取Android手机的RAM和剩余RAM和ROM 前言 一.Android工程方法的实现 二.生成aar 三.Untiy中的调用 前言 项目工作需要,在游戏APP运行时,获取当前手机的剩余 ...

最新文章

  1. 用递归法计算斐波那契数列的第n项
  2. 001_Redis介绍
  3. ABAP常用字符串操作收集整理
  4. 中国银行业100强发布,头部名企为何选择永洪科技?
  5. 【Lucene4.8教程之六】QueryParser与Query子类:如何生成Query对象
  6. js 随机1-10随机数_寻找随机的错误-一个真实的故事
  7. 如何给ppt编辑页码_拒绝千篇一律:Word插入“侧边”页码,让文档别具一格!...
  8. 《Python面向对象编程指南》——2.7 __del__()方法
  9. c 语言五子棋游戏代码,C语言案例:控制台版本的五子棋游戏【代码】
  10. 计算机图标用鼠标双击和右键都无法启动,电脑桌面只有“我的电脑”图标双击找不开,用右键资源管理器能打开,为什么...
  11. 量子计算还没搞懂,光子计算又要来统治世界?
  12. 面试再问 HashMap,求你把这篇文章发给他!
  13. 上拉电阻和下拉电阻的选型和计算
  14. linux 基础林海峰,word数学公式编辑器-官方版合集下载-多特
  15. 次世代建模是什么?学到什么程度才能接单赚钱
  16. 设置 IDEA走easyconnect代理
  17. 浅谈:电商系统常见的几种模式
  18. 第四扩展fs_四个fs
  19. 【opencv人脸识别1】从图片中检测人脸
  20. 本地通过配置代理访问远端服务器

热门文章

  1. dropdownlist下拉框变透明_Unity3D 4.x利用原生UGUI完成下拉列表DropDownList
  2. alitum designer 快速制作元器件封装
  3. 用pcs,gfs2,lvm2-cluster和pacemaker 搭建FNS cluster
  4. Yolanda,Withings,PICOOC以及RyFit四款智能人体成分秤对比评测
  5. win10 内存溢出修复
  6. 布斯乘法 Mips实现 - Booth Algorithm
  7. 二十一世纪大学英语读写教程(第三册)学习笔记(原文)——4 - College Pressures(大学生的压力)
  8. hbase 常用命令行操作总结
  9. 【光线追踪系列九】物体动态模糊
  10. 三年来我听过的耳机——顺便侃侃我的观念