1. using UnityEngine;
    using System.Collections;
    using System.IO;

    public class ScaleAndRotate : MonoBehaviour
    {
    private Touch oldTouch1; //上次触摸点1(手指1)
    private Touch oldTouch2; //上次触摸点2(手指2)

    void Start()
    {

    }

    void Update () {

    //没有触摸
    if ( 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);
    transform.Rotate(Vector3.right * deltaPos.y , Space.World);
    }

    //多点触摸, 放大缩小
    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);

    //最小缩放到 0.3 倍
    if (scale.x > 0.3f && scale.y > 0.3f && scale.z > 0.3f) {
    transform.localScale = scale;
    }

    //记住最新的触摸点,下次使用
    oldTouch1 = newTouch1;
    oldTouch2 = newTouch2;
    }

    }

Unity中用触摸控制物体旋转和放大的更多相关文章

  1. Hololens开发笔记之Gesture手势识别(Manipulation手势控制物体旋转)

    Manipulation gesture:保持点击手势,在3D世界中绝对运动 当你想要全息图像1:1响应用户手部移动时,操纵手势能被用于移动.缩放或旋转全息图像.如此的一个用处是使得用户可以在世界中绘 ...

  2. unity 使用OnDrag实现物体旋转

    通过监听UGUI的OnDrag事件 实现对3D物体的旋转 实现IDragHandler接口 void IDragHandler.OnDrag(PointerEventData eventData) { ...

  3. Unity3d 控制物体移动、旋转、缩放

    在Unity中通过利用 Input Manager(输入管理器)可以很简单的实现对一个物体进行移动.旋转.缩放操作. 演示代码: //通过虚拟轴控制物体移动.旋转.缩放 public class Mo ...

  4. 【转载】ArcBall二维控制三维旋转

    原文:http://oviliazhang.diandian.com/post/2012-05-19/40027878859 由于目前大多的显示器是二维的,要控制三维物体的旋转就显得不那么直接了.Ar ...

  5. Unity在UI界面上显示3D模型/物体,控制模型旋转

    Unity3D物体在UI界面的显示 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  6. Unity3D 几个基本动画(控制物体移动、旋转、缩放)

    Transform基本移动函数: 1.指定方向移动: //移动速度 float TranslateSpeed = 10f; //Vector3.forward 表示"向前" tra ...

  7. Unity编程回忆录之控制物体移动

    最新心血来潮,然后开始学习Unity3D游戏开发引擎,对于一个主流的跨平台3D游戏开发引擎,我已经深深的为他着迷了,于是果断的开始学习这个引擎,而且刚刚预装的游戏引擎最新版中4.3版本已经开始原生支持 ...

  8. UNITY polygon collider不随物体旋转

    U3D中的一般包围框如 boxcollider, meshcollider, capsule collider等都会随物体旋转而旋转.然而polygon collider却不会. 补充:原来所有2D包 ...

  9. Unity —— 通过鼠标点击控制物体移动

    //ClickMove - - 通过鼠标点击控制物体移动 using System.Collections; using System.Collections.Generic; using Unity ...

随机推荐

  1. GNU C中的零长度数组

    http://blog.csdn.net/ssdsafsdsd/article/details/8234736 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个非常奇怪的 ...

  2. POJ 2112 Optimal Milking(最大流)

    题目链接:http://poj.org/problem?id=2112 Description FJ has moved his K (1 <= K <= 30) milking mach ...

  3. DP SRM 661 Div2 Hard: ColorfulLineGraphsDiv2

    Problem Statement Bob is going to create a graph with N nodes. The graph will be constructed in two ...

  4. android下载

    1. 源码下载链接: http://source.android.com/source/downloading.html 参考链接: Android源码下载方法详解 2. SDK下载 http://d ...

  5. 阿里云RDS同步到本地自建mysql数据库从库

    RDS mysql版本为5.6.29 x86_64 1.下载数据备份.binlog备份 内网中转?数据量不大,直接下载 下载数据备份(外网下载链接) wget -c "https://rds ...

  6. iOS开发-应用之间的跳转及通信

    Update 2016-08-12: 在Github的Demo上增加Mac自定义Url Scheme,可以在Safari上输入特定协议头打开应用,并传递参数) 简介 我们接下来将要实现应用程序之间的跳 ...

  7. post请求乱码

    jsp页面中    <meta http-equiv="content-type" content="text/html; charset=UTF-8"& ...

  8. ubuntu下c语言hello world

    1.首先用vi编写一个c语言程序文件,命令行输入:vi helloworld.c,建立一个名叫"helloworld.c"的文件 2.在文件中输入内容 #include <s ...

  9. Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17539199),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...

  10. 虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?

    五条基本规则: 1.如果基类已经插入了vptr, 则派生类将继承和重用该vptr.vptr(一般在对象内存模型的顶部)必须随着对象类型的变化而不断地改变它的指向,以保证其值和当前对象的实际类型是一致的 ...