void MovePlacementTemplateBuildingInput() { Vector2 lastTouched_WorldPos = Camera.main.ScreenToWorldPoint(MobileInput.GetInstance().GetLastTouchedPosition()); Vector2 startTouch_WorldPos = Camera.main.transform.position;//Camera.main.ScreenToWorldPoint(MobileInput.GetInstance().GetStartTouchPosition()); m_TemplateBuildingPlacementOffset = lastTouched_WorldPos - startTouch_WorldPos; }
void MoveCameraInput() { float moveSpeed = 15.0f; Vector2 swipeDelta = MobileInput.GetInstance().GetSwipeDelta(); swipeDelta.Normalize(); swipeDelta = -swipeDelta * moveSpeed * Time.deltaTime; m_TargetCameraPosition += (Vector3)swipeDelta; }
void ZoomCameraInput() { Vector2 curZeroPos = MobileInput.GetInstance().GetLastTouchedPosition(); Vector2 swipeDeltaZero = MobileInput.GetInstance().GetSwipeDelta(); Vector2 prevZeroPos = curZeroPos - swipeDeltaZero; Vector2 curOnePos = MobileInput.GetInstance().GetLastTouchedPosition(1); Vector2 swipeDeltaOne = MobileInput.GetInstance().GetSwipeDelta(1); Vector2 prevOnePos = curOnePos - swipeDeltaOne; float prevDist = (prevZeroPos - prevOnePos).sqrMagnitude; float curDist = (curZeroPos - curOnePos).sqrMagnitude; float zoomDiff = curDist - prevDist; zoomDiff *= 0.00001f; Camera.main.orthographicSize = Mathf.Clamp(Camera.main.orthographicSize - zoomDiff, m_MinZoomOut, m_MaxZoomOut); }
/// <summary> /// Detects Player Input and decides what to do with it /// </summary> void DetectFingerInput() { // Check for Touch Input if (MobileInput.GetInstance().GetTouchCount() == 1 && MobileInput.GetInstance().GetTouchPhase() != TouchPhase.Began) // Only one Finger { // Decide on what to move if (!m_MovingSomething) { // Move Camera or Building? if (MapManager.GetInstance().GetPlacementBrushActive()) { if (!MobileInput.GetInstance().IsFingerTouching_GO(MapManager.GetInstance().GetTemplateBuilding().GetSpriteGO(), 0, LayerMask.NameToLayer("BuildingPlaceRef"))) { m_MovingTemplateBuilding = false; } else { m_MovingTemplateBuilding = true; } } else if (MapManager.GetInstance().GetMovementBrushActive()) { } else { m_MovingTemplateBuilding = false; } // Keep on moving that Object, DO NOT need to check again on next frame m_MovingSomething = true; } GameObject gameObj = MobileInput.GetInstance().IsFingerTouching_GO(); if (gameObj != null) { InteractableObjBase interactableObj = gameObj.GetComponent <InteractableObjBase>(); if (interactableObj != null) { interactableObj.OnInteract(); } else { interactableObj = gameObj.GetComponent <InteractableObjBase>(); if (interactableObj) { interactableObj.OnInteract(); } } } // Move that Object if (!m_MovingTemplateBuilding) { MoveCameraInput(); } else { MovePlacementTemplateBuildingInput(); } } else if (MobileInput.GetInstance().GetTouchCount() > 1) // More than one finger { ZoomCameraInput(); } else // No Fingers detected { m_MovingSomething = false; } }