直接将下面的update方法放在mono类下即可。
指定一下所要控制的物体。
有问题添加 QQ群 207019099
void Update()
{
Ray ray = new Ray();
ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(0).phase == TouchPhase.Stationary)
{
Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
transform.Translate(touchDeltaPosition.x * Time.deltaTime *0.03f, touchDeltaPosition.y * Time.deltaTime * 0.03f, 0);
}
if (Input.touchCount > 1)
{
//当第二根手指按下的时候
if (Input.GetTouch(1).phase == TouchPhase.Began)
{
isTwoTouch = true;
//获取第一根手指的位置
firstTouch = Input.touches[0].position;
//获取第二根手指的位置
secondTouch = Input.touches[1].position;
lastDistance = Vector2.Distance(firstTouch, secondTouch);
}
//如果有两根手指按下
if (isTwoTouch)
{
//每一帧都得到两个手指的坐标以及距离
firstTouch = Input.touches[0].position;
secondTouch = Input.touches[1].position;
twoTouchDistance = Vector2.Distance(firstTouch, secondTouch);
//当前图片的缩放
Vector3 curImageScale = new Vector3(image.localScale.x, image.localScale.y, 1);
//两根手指上一帧和这帧之间的距离差
//因为100个像素代表单位1,把距离差除以100看缩放几倍
float changeScaleDistance = (twoTouchDistance - lastDistance) / 100;
//因为缩放 Scale 是一个Vector3,所以这个代表缩放的Vector3的值就是缩放的倍数
Vector3 changeScale = new Vector3(changeScaleDistance, changeScaleDistance, 0);
//图片的缩放等于当前的缩放加上 修改的缩放
image.localScale = curImageScale + changeScale;
//控制缩放级别
image.localScale = new Vector3(Mathf.Clamp(image.localScale.x, 0.5f, 10f), Mathf.Clamp(image.localScale.y, 0.5f, 10f), 1);
//这一帧结束后,当前的距离就会变成上一帧的距离了
lastDistance = twoTouchDistance;
}
//当第二根手指结束时(抬起)
if (Input.GetTouch(1).phase == TouchPhase.Ended)
{
isTwoTouch = false;
firstTouch = Vector3.zero;
secondTouch = Vector3.zero;
}
}