private Vector3 TargetPositionForState(PanAnimationState state) { switch (state) { case PanAnimationState.Max: return(_startingPosition + panMax); case PanAnimationState.Min: return(_startingPosition + panMin); } return(_startingPosition); }
private PanAnimationState NextState(PanAnimationState state) { switch (state) { case PanAnimationState.Max: return(PanAnimationState.Min); case PanAnimationState.Min: return(PanAnimationState.Max); } return(PanAnimationState.Max); }
// Update is called once per frame void Update() { Vector3 targetPosition = TargetPositionForState(_state); float progress = Mathf.Clamp01((Time.time - _stateStartingTime) / panDuration); this.transform.position = Vector3.Lerp(_stateStartingPosition, targetPosition, EaseInOutQuad(progress)); if (progress > 0.99f) { _state = NextState(_state); _stateStartingPosition = this.transform.position; _stateStartingTime = Time.time; } }