触摸操作(单手旋转双手缩放)
在使用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;}
}
触摸操作(单手旋转双手缩放)相关推荐
- Unity 3D鼠标操作实现旋转、缩放观察物体
1.实现思路:操作摄像头围绕物体中心点(远点),做球面旋转移动来实现旋转观察物体,控制球的半径大小来实现物体的缩放效果. 2.C#摄像头源码脚本 //放在摄像头上,实现旋转.缩放观察物体 using ...
- 【Unity3D】3D 视图操作 ( 视图基本元素 | 导航器 | 栅格 | 天空盒 | 3D 视图操作 | 视图旋转 | 视图缩放 | 视图平移 | 导航器操作 | 恢复方向 | 顶、右、前视图 )
文章目录 一.3D 视图基本元素 1.导航器 Gizmo 2.栅格 Grid 3.天空盒 Skybox 二.3D 视图操作 1.视图旋转 2.视图缩放 3.视图平移 三.导航器操作 1.恢复方向 2. ...
- unity移动端操作物体旋转、缩放手势
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Eve ...
- 【J2me3D系列学习文章之三】(立即模式)对立方体进行变换操作-旋转、缩放、平移...
本文源地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/09/6064367.aspx Himi 原创, 转载请注明! 谢谢. 上一篇文章 ...
- openGL-读取off、stl、obj文件并旋转平移缩放操作
说明 很多朋友反馈,加载完毕后是一片空白-不用担心.我认为你很大程度上已经配置成功.这时候你可以试一试点击数字1.2.3进行查看. 此外我建议你使用点面数目规模较小的模型例如bunny等而不是使用ki ...
- tinkerCAD入门操作(2):移动、旋转和缩放对象
tinkerCAD入门操作:移动.旋转和缩放对象 介绍 现在您已经学会了如何在工作平面上旋转,是时候真正开始处理对象了. 在本课中,您将了解有关对象物理属性的更多信息. 放置一个盒子 我们需要一个对象 ...
- 深度学习数据增强方法,利用仿射变换实现图像进行各种操作如平移、缩放、旋转、翻转
导读 在深度学习的数据增强中,我们经常需要对图像进行各种增强操作如平移.缩放.旋转.翻转等,这些其实都是图像的仿射变换.通过本篇文章,你能够知道它们的实现原理以及如何应用它们.本文讲述如何通过仿射变换 ...
- android控件旋转、缩放、平移完美版方案(双指操作、单指操作都有)
前言 项目要求模仿时光手杖APP做一个可平移.旋转.缩放的控件,于是就开始研究了起来,网上找的方案加上自己的思考,得出了以下完美版平移.缩放.旋转控件,双指缩放旋转,单指缩放旋转都支持. 效果图 我们 ...
- android-ImageView的拖动、旋转、缩放、边界回弹、双击缩放、单击销毁及源码下载
博客地址:http://blog.csdn.net/u010156024 TouchImageViewActivity 是本人一句一句代码写的,参考了网上大牛的博客. 不过其中的效果是网上没有的,也是 ...
最新文章
- oracle 10g SYSAUX表空间快速增长之WRH$_SQL_PLAN篇
- 我有个师兄,毕业后投身了学术自媒体行业
- 帆软报表调用mysql存储过程_FineReport单行与数据库交互的方法
- MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
- 天线决定接受频率_你从没思考过的天线定义
- MySQL备份/还原 Unknown storage engine 'InnoDB'
- 计算机驱动程序检测,驱动人生(检测电脑硬件自动安装驱动程序)
- 计算机位移指令的作用,移位指令
- 京东云引擎:免费好用的web应用托管平台
- link library 、target library、symbol library、synthetic library对照分析-基础小知识(九)
- 使用Python编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的集合。
- 29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
- [领卓教育]童言无忌——王以太
- 物联网中常用的方法,16进制二进制之间的转换
- 机器学习入门案例:鸢尾花数据集分类 绘制PR曲线
- mysql在 union 与group by后order by排序混乱
- 1354柯南的变声蝴蝶结
- VSphere系列教程(一):ESXI 6.5 的安装和使用
- 苹果产品购买信息查询
- 交换技术(CCNA魔鬼训练营系列)-陈鑫杰-专题视频课程
热门文章
- Linux:如何让内网的服务器能上网
- Unity3d如何实现四格漫画动态播放
- Nginx配置WebSocket 【支持wss与ws连接】
- Android 横竖屏幕切换(layout-land和layout-port)
- android land,Mirror Land
- django - html模板
- 4星|《心流:最优体验心理学》:如何在工作生活中发现幸福:找到意义与目标并且专注其中...
- SVN conflict的解决办法
- 乐优商城(三十九)—— 订单中心
- python bokeh_使用 Bokeh 为你的 Python 绘图添加交互性