Unity在ipad上触屏双指上下左右移动,单指上下左右旋转

在ipad上触屏双指上下左右移动,单指上下左右旋转,代码如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;


public class MoveAndScoll : MonoBehaviour {
	
	public Text text;


   public  Transform tar;
	void Start () {
	
	}
		
    Vector3 lastPos;
    Vector3 cunPos;
    float cunDir;
    float lastDir;
    public float fingerDir= 5;//手指间距偏移量
    Vector3 lastmosPos;
    bool move;
    bool scl;

    public float sclspeed =1;
    public float rotespeed=7; 
	void Update () 
    {
		
		OneTouch ();
		TwoTouch ();
      
	}

	//单指
	void OneTouch()
	{

		if (Input.touchCount==1)//旋转
		{

			Vector3 aimPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.GetTouch(0).position.x, Input.GetTouch(0).position.y, Camera.main.transform.position.y));
			Vector3 dir = (aimPos - transform.position).normalized;
			if (lastmosPos!=Vector3.zero)
			{
				Vector3 m = (Input.mousePosition - lastmosPos).normalized * rotespeed;
				tar.Rotate(new Vector3(m.y, -m.x, m.z), Space.World);
				text.text = "旋转";
			}

			lastmosPos = Input.GetTouch(0).position;
			if (Input.GetTouch(0).phase == TouchPhase.Ended )
			{
				lastmosPos = Vector3.zero;
			}
		}

	}

	//双指
	void TwoTouch(){


		if(Input.touchCount>=2)
		{

			cunDir = Vector3.Distance(Input.GetTouch(0).position, Input.GetTouch(1).position);

			float d = Mathf.Abs(cunDir - lastDir);
			Vector3 cun = new Vector3
				(
					Input.GetTouch(0).position.x + Input.GetTouch(1).position.x,
					Input.GetTouch(0).position.y + Input.GetTouch(1).position.y,
					0
				);
			Vector3 cuPos = Camera.main.WorldToScreenPoint(tar.position);
			Vector3 p = new Vector3(cun.x, cun.y, cuPos.z);
			cunPos = Camera.main.ScreenToWorldPoint(p);



			if (d > fingerDir && lastDir != 0  )//缩放
			{
				scl = true;
				move = false;
				if (cunDir / lastDir > 1)
				{
					text.text = "放大";
					Camera.main.fieldOfView -= sclspeed;
				}
				if (cunDir / lastDir < 1)
				{
					Camera.main.fieldOfView += sclspeed;
					text.text = "缩小";
				}
			}
			else  if (d < fingerDir && lastPos != Vector3.zero)//移动
			{
				move = true; 
				scl = false;
				tar.position = tar.position + (cunPos - lastPos);  
				text.text = "移动";
			}
				
			lastPos = cunPos;
			lastDir = cunDir;
			if (Input.GetTouch(0).phase==TouchPhase.Ended||Input.GetTouch(1).phase==TouchPhase.Ended)
			{
				lastPos =Vector3.zero;
				lastDir = 0;
				move = false;
				scl=false;
			}

		}

	}
		
}


猜你喜欢

转载自blog.csdn.net/elegentbeauty/article/details/60572365
今日推荐