Unity 手势缩放UI
来源:互联网 发布:金仕达期货交易软件 编辑:程序博客网 时间:2024/06/05 17:17
今天,我们来实现手势缩放图片。
不需要太复杂的场景,只需要新建一个 Image,
然后给摄像机添加一个名为 TouchTest 的脚本,然后编辑它
using UnityEngine;using UnityEngine.UI;using System.Collections;public class TouchTest : MonoBehaviour { /// <summary> /// 上一帧两指间距离 /// </summary> private float lastDistance = 0; /// <summary> /// 当前两个手指之间的距离 /// </summary> private float twoTouchDistance = 0; /// <summary> /// 得到图片 /// </summary> public RectTransform image; /// <summary> /// 第一根手指按下的坐标 /// </summary> Vector2 firstTouch = Vector3.zero; /// <summary> /// 第二根手指按下的坐标 /// </summary> Vector2 secondTouch = Vector3.zero; /// <summary> /// 是否有两只手指按下 /// </summary> private bool isTwoTouch = false; // Use this for initialization void Start () { } // Update is called once per frame void Update () { //如果有两个及以上的手指按下 if (Input.touchCount > 1) { //当第二根手指按下的时候 if (Input.GetTouch(1).phase == TouchPhase.Began) { isTwoTouch = true; //获取第一根手指的位置 firstTouch = Input.touches[0].position; //获取第二根手指的位置 secondTouch = Input.touches[1].position; lastDistance = Vector2.Distance(firstTouch, secondTouch); } //如果有两根手指按下 if (isTwoTouch) { //每一帧都得到两个手指的坐标以及距离 firstTouch = Input.touches[0].position; secondTouch = Input.touches[1].position; twoTouchDistance = Vector2.Distance(firstTouch, secondTouch); //当前图片的缩放 Vector3 curImageScale = new Vector3(image.localScale.x, image.localScale.y, 1); //两根手指上一帧和这帧之间的距离差 //因为100个像素代表单位1,把距离差除以100看缩放几倍 float changeScaleDistance = (twoTouchDistance - lastDistance) / 100; //因为缩放 Scale 是一个Vector3,所以这个代表缩放的Vector3的值就是缩放的倍数 Vector3 changeScale = new Vector3(changeScaleDistance, changeScaleDistance, 0); //图片的缩放等于当前的缩放加上 修改的缩放 image.localScale = curImageScale + changeScale; //控制缩放级别 image.localScale = new Vector3(Mathf.Clamp(image.localScale.x, 0.5f, 10f), Mathf.Clamp(image.localScale.y, 0.5f, 10f), 1); //这一帧结束后,当前的距离就会变成上一帧的距离了 lastDistance = twoTouchDistance; } //当第二根手指结束时(抬起) if (Input.GetTouch(1).phase == TouchPhase.Ended) { isTwoTouch = false; firstTouch = Vector3.zero; secondTouch = Vector3.zero; } } }}
具体的看代码吧。现在运行程序,在手机上通过两根手指,就能缩放图片了。注意缩放级别根据自己的手机大小来定。
如果不会打包到安卓的可以看我的这两篇博客
Android Studio 2.1 和 Unity3D 5.3.4 交互
Android Studio 2.1 和 Unity3D 5.3.4 交互(二)
0 0
- Unity 手势缩放UI
- 【Unity】手势缩放屏幕和旋转视角
- unity 手势控制物体旋转缩放(ar)
- unity移动端操作方式(旋转、缩放手势)总结
- Unity 移动端简单手势控制(移动,旋转,缩放)
- 手势缩放
- Unity滚轮控制UI和摄像机缩放冲突问题
- Unity手势
- ui手势
- ui手势
- UI手势
- UI 手势
- UI手势
- UI手势
- ui--手势
- unity 缩放
- Unity移动端手势操作——缩放3D物体
- UNITY移动平台上的手势操作——旋转、缩放
- java数据结构(二)——栈
- CF 675ETrains and Statistic(线段树 + Dp)
- Face Recognizer
- Foundation库下的NSString,NSArray, NSDictionary……可以被继承吗
- react-native 把图片转化base64字符串
- Unity 手势缩放UI
- windows linux共享
- VC读取文件的文件版本号
- cell自适应高度
- 传智播客助力数以万计的大学生,让就业不再迷茫!
- yii2数据库增删改查询操作
- 我的 “开始”菜单
- 关于Context
- android广播机制