- /*
- 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());
- }
unity3d 触屏多点触控(旋转与缩放)
最新推荐文章于 2024-08-08 09:43:21 发布