public void Update(float deltaTime) { frictionDelta = CameraController.widthInMeters / Screen.width; if (UpdateController.platform == UpdateController.Platform.PC) { float xAxisValue = Input.GetAxis("Horizontal"); float yAxisValue = Input.GetAxis("Vertical"); float zAxisValue = Input.GetAxis("Perspective"); if (xAxisValue * xAxisValue + yAxisValue * yAxisValue > 0) { CameraController.cameraPosition += new Vector2(xAxisValue, yAxisValue); } if (zAxisValue != 0) { CameraController.cameraSize += zAxisValue; } if (Input.GetMouseButtonDown(0)) { isSliding = true; SetTouchesStart(); cameraPositionStart = Camera.main.transform.position; UpdateController.OnButtonDown(Input.mousePosition); } if (Input.GetMouseButtonUp(0)) { isSliding = false; if (Vector2.Distance(firstTouchStart, firstTouch) < 20) { UpdateController.OnClick(Input.mousePosition); } UpdateController.OnButtonUp(Input.mousePosition); } } else { if (Input.touchCount == 0) { if (lastTouches >= 1) { UpdateController.OnButtonUp(new Vector2(-10007, -10007)); } isSliding = false; isZooming = false; } if (Input.touchCount >= 2) { if (!isZooming) { isSliding = false; isZooming = true; SetTouchesStart(); zoomDeltaStart = Vector2.Distance(firstTouchStart, secondTouchStart); mapWidthStart = CameraController.widthInMeters; } } if (Input.touchCount == 1) { //UpdateController.OnOver (Input.GetTouch (0).position); if (Input.GetTouch(0).phase == TouchPhase.Began) { UpdateController.OnButtonDown(Input.GetTouch(0).position); } if (Input.GetTouch(0).phase == TouchPhase.Ended) { UpdateController.OnButtonUp(Input.GetTouch(0).position); if (Vector2.Distance(firstTouchStart, firstTouch) < 7) { UpdateController.OnClick(Input.mousePosition); } } if (Input.GetTouch(0).phase != TouchPhase.Stationary) { if (!isSliding) { isZooming = false; isSliding = true; SetTouchesStart(); cameraPositionStart = Camera.main.transform.position; } } } } lastTouches = Input.touchCount; SetTouches(); if (mode == Mode.Slide || mode == Mode.SlideAndZoom) { if (isSliding) { delta = firstTouchStart - firstTouch; if (!SetCameraPositionX(cameraPositionStart.x + delta.x * frictionDelta)) { /* * float oldY = firstTouchStart.y; * SetTouchesStart (); * firstTouchStart = new Vector2 (firstTouchStart.x, oldY); * * cameraPositionStart = new Vector3 (Camera.main.transform.position.x, Camera.main.transform.position.y, * cameraPositionStart.z); */ } if (!SetCameraPositionY(cameraPositionStart.z + delta.y * frictionDelta)) { /* * float oldX = firstTouchStart.x; * SetTouchesStart (); * firstTouchStart = new Vector2 (oldX, firstTouchStart.y); * * cameraPositionStart = new Vector3 (cameraPositionStart.x, Camera.main.transform.position.y, * Camera.main.transform.position.z); */ } } } if (mode == Mode.Zoom || mode == Mode.SlideAndZoom) { if (isZooming) { zoomDelta = Vector2.Distance(firstTouch, secondTouch); ResizeCamera((1 + (zoomDeltaStart - zoomDelta) * frictionZoom) * mapWidthStart); } } }