缩放原理
我所使用的缩放逻辑原理与其他人的可能不太一样,但也不是什么非常复杂的算法,可以说就是摄像机的拉近拉远,通过这种方式实现图像上的放大缩小。
代码
protected readonly Transform m_zoom = null;
private float max = 3.7f;
private float min = 0;
protected static float current = 0;
private float last = -1;
public void Update()
{
if (Input.touchCount == 2)
{
float dis = Vector2.Distance(Input.touches[0].position, Input.touches[1].position);//两指之间的距离
if (-1 == last) last = dis;
float result = dis - last;//与上一帧比较变化
if (result + current < min)//区间限制:最小
result = min - current;
else if (result + current > max)//区间限制:最大
result = max - current;
result *= 0.1f;//系数
m_zoom.position += m_zoom.forward.normalized * result;
current += result;//累计当前
last = dis;//记录为上一帧的值
}
else
{
last = -1;//不触发逻辑时
}
}
属性与方法
m_zoom
是摄像机的对象,或摄像机某层父节点的对象,通过对它与场景中物体之间的位置变换,达到图像上放大缩小的效果。Input.touchCount
用于检测当前触碰的数量。Input.touchCount == 2
表示当前接收到2个触碰信息。Input.touches[0]
和Input.touches[1]
是获取触碰信息,其中的数字便是触碰信息的相关索引。