/// <summary> /// Update the moving to tile state /// </summary> /// <param name="dt"></param> private void UpdateMovingToTile(float dt) { if (shouldWaitBeforeMovingToTile) { beforeMovingTimer += dt; if (beforeMovingTimer >= timeToWaitDoorToOpen) { shouldWaitBeforeMovingToTile = false; beforeMovingTimer = 0.0f; return; } } timeMovingToTile += dt; float t = timeMovingToTile / timeToMoveBetweenTiles; t = Mathf.Clamp01(t); float s = CustomInterpolation.Interpolate(t, interpFunction); moveTo = CalcPlayerPositionOverTile(tileMovingTo); Vector3 newPos = Vector3.Lerp(moveFrom, moveTo, s); transform.position = newPos; RotateVisualsTowardsNextTile(dt); if (t >= 1.0f) { SwitchState(PlayerState.Idle, false); } }
/// <summary> /// Update the fade in state /// </summary> /// <param name="dt"></param> private void UpdateFadingIn(float dt) { float t = timer / timeToFade; t = Mathf.Clamp01(t); float s = CustomInterpolation.Interpolate(t, fadeType); Vector3 newScale = Vector3.Lerp(fadedOutValue, fadedInValue, s); SetCurrScale(newScale); if (t >= 1.0f) { OnFinishedFadingIn(); SwitchState(FadeState.FadedIn, 0.0f, false); } }
/// <summary> /// Update the fade in state /// </summary> /// <param name="dt"></param> private void UpdateFadingIn(float dt) { float t = timer / timeToFade; t = Mathf.Clamp01(t); float s = CustomInterpolation.Interpolate(t, fadeType); s = Mathf.Lerp(fadedOutValue, fadedInValue, s); SetCurrFocusDistance(s); if (t >= 1.0f) { SwitchState(FadeState.FadedIn, 0.0f, false); } }
/// <summary> /// Update the fade out state /// </summary> /// <param name="dt"></param> private void UpdateFadingOut(float dt) { float t = timer / timeToFade; t = Mathf.Clamp01(t); t = 1.0f - t; float s = CustomInterpolation.Interpolate(t, fadeType); s = Mathf.Lerp(fadedOutValue, fadedInValue, s); SetCurrVolume(s); if (t <= 0.0f) { OnFinishedFadingOut(); SwitchState(FadeState.FadedOut, 0.0f, false); } }
/// <summary> /// Update the moving state /// </summary> /// <param name="dt"></param> private void UpdateMoving(float dt) { float t = timer / timeToMoveBetweenTiles; t = Mathf.Clamp01(t); float s = CustomInterpolation.Interpolate(t, movingFunction); Vector3 initPos = CalcPositionOverTile(path[currPathPoint]); Tile nextTile = GetNextTile(); Vector3 endPos = CalcPositionOverTile(nextTile); Vector3 newPos = Vector3.Lerp(initPos, endPos, s); transform.position = newPos; if (t >= 1.0f) { // exit moving SwitchState(EnemyState.Idle, false); RefreshCurrentTile(GetNextTile()); } }