Unity移动端手势操作——缩放3D物体
来源:互联网 发布:事件提醒软件app 编辑:程序博客网 时间:2024/04/29 20:08
自己写的一套用于Unity移动端手势操作的判断,主要有单指移动3D物体、单指旋转3D物体、双指缩放3D物体,这里首先分开介绍双指缩放3D物体,如下所示:
using UnityEngine;using System.Collections;public class ZoomControl : GestureControl{ //记录上一次手机触摸位置判断用户是在左放大还是缩小手势 private Vector2 oldPosition1; private Vector2 oldPosition2; //实时大小 Vector3 RealScale = new Vector3(1f, 1f, 1f); //原始大小 float InitialScale = 0; //缩放速度 public float ScaleSpeed = 0.1f; //缩放比例 public float MaxScale = 2.5f; public float MinScale = 0.5f; void Start() { //获取物体最原始大小 InitialScale = this.transform.localScale.x; } protected override void InputCheck() { #region 多点触摸缩放(真实模型缩放) if (Input.touchCount > 1) { status = 2; StartCoroutine(CustomOnMouseDown()); } #endregion } IEnumerator CustomOnMouseDown() { //当检测到一直触碰时,会不断循环运行 while (Input.GetMouseButton(0)) { //实时记录模型大小 RealScale = this.transform.localScale; if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved) { //触摸位置 Vector3 tempPosition1 = Input.GetTouch(0).position; Vector3 tempPosition2 = Input.GetTouch(1).position; //函数返回真为放大,返回假为缩小 if (isEnlarge(oldPosition1, oldPosition2, tempPosition1, tempPosition2)) { //判断是否超过边界 if (RealScale.x < InitialScale * MaxScale) { this.transform.localScale += this.transform.localScale * ScaleSpeed; } } else { //判断是否超过边界 if (RealScale.x > InitialScale * MinScale) { this.transform.localScale -= this.transform.localScale * ScaleSpeed; } } //备份上一次的触摸位置 oldPosition1 = tempPosition1; oldPosition2 = tempPosition2; } yield return new WaitForFixedUpdate(); } } //记录手指位置与初始位置是缩小或放大 bool isEnlarge(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2) { float leng1 = Mathf.Sqrt((oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y)); float leng2 = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y)); if (leng1 < leng2) { return true; } else { return false; } }}
0 0
- Unity移动端手势操作——缩放3D物体
- Unity移动端手势操作——移动3D物体
- Unity移动端手势操作——旋转3D物体
- Unity 3D鼠标操作实现旋转、缩放观察物体
- unity移动端操作方式(旋转、缩放手势)总结
- UNITY移动平台上的手势操作——旋转、缩放
- Unity移动端手势操作——3种手势互斥判断
- Unity 移动端简单手势控制(移动,旋转,缩放)
- Unity 控制物体移动 旋转 缩放
- Unity设置物体移动、缩放和旋转
- Unity 3D 控制物体上下左右均匀移动脚本
- Unity 3D 控制物体前后左右均匀移动脚本
- unity 手势控制物体旋转缩放(ar)
- Unity 3D:控制相机旋转、移动、缩放等功能
- Android开发:对图片的手势操作——旋转、缩放、移动
- Unity物体缩放
- Unity移动设备手势操作拾遗
- [Unity3D]手机3D游戏开发:简单的移动和缩放鼠标手势脚本源码
- 双向LSTM NLP序列标志读书笔记
- file复制
- Android Studio 多渠道打包以及常见错误
- 深入学习GC之-GC日志解读
- springMVC工作原理
- Unity移动端手势操作——缩放3D物体
- IO多路复用 - poll
- Android 后台优化
- centos或者ubuntu中关于.vimrc的配置
- 常用算法和数据结构的复杂度速查表
- dubbo环境搭建
- iOS LaunchScreen设置启动图片 启动页停留时间
- JAVA IO
- 【编撰】Directfb 深入 002 DirectFB内存分配与管理:surface pool