在使用Unity3D制作移动端的软件时候,对于一些3D物体的操作和展示,单手滑动进行旋转、双手滑动进行缩放操作是很普遍的一项功能。代码如下:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;/// <summary>
///  缩放和旋转
/// </summary>
public class ScaleAndRotate : MonoBehaviour
{private Touch oldTouch1;  //上次触摸点1(手指1)private Touch oldTouch2;  //上次触摸点2(手指2)void Update(){//没有触摸,就是触摸点为0if (Input.touchCount <= 0){return;}//单点触摸, 水平上下旋转if (1 == Input.touchCount){Touch touch = Input.GetTouch(0);Vector2 deltaPos = touch.deltaPosition;transform.Rotate(Vector3.down * deltaPos.x, Space.World);//绕Y轴进行旋转transform.Rotate(Vector3.right * deltaPos.y, Space.World);//绕X轴进行旋转,下面我们还可以写绕Z轴进行旋转}//多点触摸, 放大缩小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 / 500f;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;}
}

触摸操作(单手旋转双手缩放)相关推荐

  1. Unity 3D鼠标操作实现旋转、缩放观察物体

    1.实现思路:操作摄像头围绕物体中心点(远点),做球面旋转移动来实现旋转观察物体,控制球的半径大小来实现物体的缩放效果. 2.C#摄像头源码脚本 //放在摄像头上,实现旋转.缩放观察物体 using ...

  2. 【Unity3D】3D 视图操作 ( 视图基本元素 | 导航器 | 栅格 | 天空盒 | 3D 视图操作 | 视图旋转 | 视图缩放 | 视图平移 | 导航器操作 | 恢复方向 | 顶、右、前视图 )

    文章目录 一.3D 视图基本元素 1.导航器 Gizmo 2.栅格 Grid 3.天空盒 Skybox 二.3D 视图操作 1.视图旋转 2.视图缩放 3.视图平移 三.导航器操作 1.恢复方向 2. ...

  3. unity移动端操作物体旋转、缩放手势

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Eve ...

  4. 【J2me3D系列学习文章之三】(立即模式)对立方体进行变换操作-旋转、缩放、平移...

     本文源地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/09/6064367.aspx  Himi  原创, 转载请注明! 谢谢. 上一篇文章 ...

  5. openGL-读取off、stl、obj文件并旋转平移缩放操作

    说明 很多朋友反馈,加载完毕后是一片空白-不用担心.我认为你很大程度上已经配置成功.这时候你可以试一试点击数字1.2.3进行查看. 此外我建议你使用点面数目规模较小的模型例如bunny等而不是使用ki ...

  6. tinkerCAD入门操作(2):移动、旋转和缩放对象

    tinkerCAD入门操作:移动.旋转和缩放对象 介绍 现在您已经学会了如何在工作平面上旋转,是时候真正开始处理对象了. 在本课中,您将了解有关对象物理属性的更多信息. 放置一个盒子 我们需要一个对象 ...

  7. 深度学习数据增强方法,利用仿射变换实现图像进行各种操作如平移、缩放、旋转、翻转

    导读 在深度学习的数据增强中,我们经常需要对图像进行各种增强操作如平移.缩放.旋转.翻转等,这些其实都是图像的仿射变换.通过本篇文章,你能够知道它们的实现原理以及如何应用它们.本文讲述如何通过仿射变换 ...

  8. android控件旋转、缩放、平移完美版方案(双指操作、单指操作都有)

    前言 项目要求模仿时光手杖APP做一个可平移.旋转.缩放的控件,于是就开始研究了起来,网上找的方案加上自己的思考,得出了以下完美版平移.缩放.旋转控件,双指缩放旋转,单指缩放旋转都支持. 效果图 我们 ...

  9. android-ImageView的拖动、旋转、缩放、边界回弹、双击缩放、单击销毁及源码下载

    博客地址:http://blog.csdn.net/u010156024 TouchImageViewActivity 是本人一句一句代码写的,参考了网上大牛的博客. 不过其中的效果是网上没有的,也是 ...

最新文章

  1. oracle 10g SYSAUX表空间快速增长之WRH$_SQL_PLAN篇
  2. 我有个师兄,毕业后投身了学术自媒体行业
  3. 帆软报表调用mysql存储过程_FineReport单行与数据库交互的方法
  4. MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
  5. 天线决定接受频率_你从没思考过的天线定义
  6. MySQL备份/还原 Unknown storage engine 'InnoDB'
  7. 计算机驱动程序检测,驱动人生(检测电脑硬件自动安装驱动程序)
  8. 计算机位移指令的作用,移位指令
  9. 京东云引擎:免费好用的web应用托管平台
  10. link library 、target library、symbol library、synthetic library对照分析-基础小知识(九)
  11. 使用Python编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的集合。
  12. 29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
  13. [领卓教育]童言无忌——王以太
  14. 物联网中常用的方法,16进制二进制之间的转换
  15. 机器学习入门案例:鸢尾花数据集分类 绘制PR曲线
  16. mysql在 union 与group by后order by排序混乱
  17. 1354柯南的变声蝴蝶结
  18. VSphere系列教程(一):ESXI 6.5 的安装和使用
  19. 苹果产品购买信息查询
  20. 交换技术(CCNA魔鬼训练营系列)-陈鑫杰-专题视频课程

热门文章

  1. Linux:如何让内网的服务器能上网
  2. Unity3d如何实现四格漫画动态播放
  3. Nginx配置WebSocket 【支持wss与ws连接】
  4. Android 横竖屏幕切换(layout-land和layout-port)
  5. android land,Mirror Land
  6. django - html模板
  7. 4星|《心流:最优体验心理学》:如何在工作生活中发现幸福:找到意义与目标并且专注其中...
  8. SVN conflict的解决办法
  9. 乐优商城(三十九)—— 订单中心
  10. python bokeh_使用 Bokeh 为你的 Python 绘图添加交互性