zoukankan      html  css  js  c++  java
  • unity3d 触屏多点触控(旋转与缩放)

    unity3d 触屏多点触控(旋转与缩放)

    /*
    Touch Orbit
    Programmed by: Randal J. Phillips (Caliber Mengsk)
    Original Creation Date: 12/16/2011
    Last Updated:                   12/16/2011
    Desctiption: Simple orbit by one touch and drag, as well as pinch to zoom with two fingers.
    */


    var x:float;

    var y:float;

    var xSpeed:float;

    var ySpeed:float;

    var pinchSpeed:float;

    var distance:float = 10;

    var minimumDistance:float = 5;

    var maximumDistance:float = 100;

    private var touch:Touch;

    private var lastDist:float = 0;

    private var curDist:float = 0;

    private var gameCamera:Camera;

    function Start ()

    {

            gameCamera = Camera.mainCamera;

    }


    function Update ()

    {

            if (Input.GetKeyDown(KeyCode.Escape))

            {

                    Application.Quit();

            }

           
            if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)

            {

                    //One finger touch does orbit

                    touch = Input.GetTouch(0);

                    x += touch.deltaPosition.x * xSpeed * 0.02;

                    y -= touch.deltaPosition.y * ySpeed * 0.02;

            }

            if (Input.touchCount > 1 && (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved))

            {

                    //Two finger touch does pinch to zoom

                    var touch1 = Input.GetTouch(0);

                    var touch2 = Input.GetTouch(1);

                    curDist = Vector2.Distance(touch1.position, touch2.position);

                    if(curDist > lastDist)

                    {

                            distance += Vector2.Distance(touch1.deltaPosition, touch2.deltaPosition)*pinchSpeed/10;

                    }else{

                            distance -= Vector2.Distance(touch1.deltaPosition, touch2.deltaPosition)*pinchSpeed/10;

                    }

                    lastDist = curDist;

            }

           
            if(distance <= minimumDistance)

            {

                    //minimum camera distance

                    distance = minimumDistance;

            }

           

            if(distance >= maximumDistance)

            {

                    //maximum camera distance

                    distance = maximumDistance;

            }
           
           

            //Sets rotation

            var rotation = Quaternion.Euler(y, x, 0);

           

            //Sets zoom

            var position = rotation * Vector3(0.0, 0.0, -distance) + Vector3(0,0,0);

       //Applies rotation and position

            transform.rotation = rotation;

            transform.position = position;

    }

    function OnGUI()

    {

            //Simple output to display the distance from the center

            GUI.Label(Rect(0,0,Screen.width, Screen.height),distance.ToString());

    }

  • 相关阅读:
    DOS_Edit 常用快捷键
    学_汇编语言_王爽版 要点采集笔记(未完待续...)
    Linux常用命令
    Vi/Vim常用命令(附快捷切换方法)
    Java包机制package之间调用问题-cmd运行窗口编译运行
    Java中自定义注解类,并加以运用
    jquery让form表单异步提交
    当h5页面图片加载失败后,给定一个默认图
    MySQL中对字段内容为Null的处理
    springboot应用在tomcat中运行
  • 原文地址:https://www.cnblogs.com/waterdragon/p/3975420.html
Copyright © 2011-2022 走看看