IEnumerator <float> JumpToBed() { Player.anim.Play("PrepareToSleep"); Player.anim.SetBool("Sleeping", true); PlayerAnimationHelper.StopPlayer(); SpriteControler.Instance.FaceDOWN(); yield return(0f); PlayerCommands.LastPositionBeforeJump = GameLibOfMethods.player.transform.position; //SpriteControler.Instance.ChangeSortingOrder(1); GameLibOfMethods.player.transform.parent.transform.parent = transform; while (true) { var state = Player.anim.GetCurrentAnimatorStateInfo(0); if (!state.IsName("PrepareToSleep")) { Debug.Log("Something is wrong.. this finished before firing the method. Make sure you don't call this from FixedUpdate."); break; } if (Player.anim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 62 / 120f) { break; } yield return(0f); } Player.col.enabled = false; Vector2 targetPos = useableFunctionality.PlayerStandPosition; Vector2 currentPos = GameLibOfMethods.player.transform.position; while (true) { currentPos = Vector2.MoveTowards(currentPos, targetPos, .8f * GameTime.Time.deltaTime); GameLibOfMethods.player.transform.position = currentPos; if (currentPos == targetPos) { break; } yield return(0f); } yield return(0f); if (Random.Range(0f, 1f) > 0.5f) { PlayerBuff.Add <DeepSleep>(); } GameLibOfMethods.isSleeping = true; GameLibOfMethods.cantMove = true; HandlePlayerSprites(enable: false); StartCoroutine(SleepSpeedChangeDelay()); //Covers.sortingOrder = 2; useState = ObjectUseState.InUse; CurrentAction.BeginAction(); }