using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Planeouch : MonoBehaviour
{
//定义两个(早的)触摸点
Touch oldTouchOne;
Touch oldTouchTwo;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
switch (Input.touchCount)//判断触摸点(屏幕上手指)数量
{
case 0:
//没有手指在屏幕上,return
return;
case 1:
//一个手指在屏幕上,调用旋转函数
OnePoint();
break;
case 2:
//两个手指在屏幕上,调用放大缩小函数
TwoPoint();
break;
}
}
/// <summary>
/// 一个手指触摸,旋转函数
/// </summary>
void OnePoint()
{
//获取一个手指
Touch touch = Input.GetTouch(0);
//获取这个手指的位置
Vector2 v2 = touch.deltaPosition;
//沿着y轴旋转手指x的改变量
transform.Rotate(Vector3.back* v2.x, Space.World);
}
/// <summary>
/// 两个手指触摸,放大缩小函数
/// </summary>
void TwoPoint()
{
//定义两个新的触摸点
Touch newTouchOne = Input.GetTouch(0);
Touch newTouchTwo = Input.GetTouch(1);
if (newTouchTwo.phase == TouchPhase.Began)//第二个手指放到屏幕上
{
//新的触摸点赋值给早先的触摸点
oldTouchOne = newTouchOne;
oldTouchTwo = newTouchTwo;
return;
}
//早先的两个触摸点(手指)之间的距离
float oldDistance = Vector2.Distance(oldTouchOne.position, oldTouchTwo.position);
//新的(两个手指触摸位置改变后)的两个触摸点(手指)之间的距离
float newDistance = Vector2.Distance(newTouchOne.position, newTouchTwo.position);
//两个距离的差值/1000
float offset = (newDistance - oldDistance) / 1000;//差值/1000
//定义一个v3类型变量LocalScal,用来记录物体的localScale
Vector3 LocalScal = transform.localScale;
//定义一个v3类型变量scal,它等于上一个的LocalScal变量加上两个距离的差值
Vector3 scal = new Vector3(LocalScal.x + offset, LocalScal.y + offset, LocalScal.z + offset);
//如果物体的scal大于或等于0.25(也就是物体最小和缩小到0.25)
if (scal.x >= 0.25f && scal.y >= 0.25f && scal.z >= 0.25f)
{
transform.localScale = scal;//把scal赋值给物体的localScale
}
//记录新的触摸点为老的触摸点
oldTouchOne = newTouchOne;
oldTouchTwo = newTouchTwo;
}
}