using System; using UnityEngine; public class UpdateZoomOnSmoothZoomProcessExample:MonoBehaviour { private Vector3 originalPosition; private void Start() { OnlineMapsTileSetControl.instance.OnSmoothZoomBegin += OnSmoothZoomBegin; OnlineMapsTileSetControl.instance.OnSmoothZoomProcess += OnSmoothZoomProcess; } private void OnSmoothZoomBegin() { originalPosition = OnlineMapsTileSetControl.instance.transform.position; } private void OnSmoothZoomProcess() { Transform t = OnlineMapsTileSetControl.instance.transform; Vector2 p1 = Input.GetTouch(0).position; Vector2 p2 = Input.GetTouch(1).position; Vector2 zoomPoint = Vector2.Lerp(p1, p2, 0.5f); while (t.localScale.x > 2 || t.localScale.x < 0.5) { if (t.localScale.x > 2) { OnlineMapsControlBase.instance.ZoomOnPoint(1, zoomPoint); t.position = (t.position - originalPosition) / 2 + originalPosition; t.localScale /= 2; } else if (t.localScale.x < 0.5) { OnlineMapsControlBase.instance.ZoomOnPoint(-1, zoomPoint); t.position = (originalPosition - t.position) * 2 + t.position; t.localScale *= 2; } } } }