protected override void _Step() { if (m_pauseInputTime <= 0.0f) { IssueInputs(); } else { countDownTimer?.AddTime(m_bonusTimeValue * Time.deltaTime); m_pauseInputTime -= Time.deltaTime; } Vector3 tempVelocity = calculateTempVelocity(); // Collision! float distance = speed * Time.deltaTime; Vector2 direction = tempVelocity.normalized; velocity = direction * distance; CheckLeftRight(direction.x, velocity.x); CheckUpDown(direction.y, velocity.y); transform.position += velocity; CheckPointOfInterests(); // Sprite stuff!!! if (Maths.EqualZero(direction.y) && !Maths.EqualZero(direction.x)) { if (Maths.EqualZero(animator.speed)) { animator.speed = 1f; } if (direction.x >= 0f) { spriteRenderer.flipX = false; animator.Play("Side"); } else { spriteRenderer.flipX = true; animator.Play("Side"); } } else if (!Maths.EqualZero(direction.y)) { if (Maths.EqualZero(animator.speed)) { animator.speed = 1f; } if (direction.y >= 0f) { animator.Play("Down"); } else { animator.Play("Up"); } } else { animator.speed = 0f; } }