public PlayerEvent(Rigidbody playerRigidbody, PlayerCamera playerCamera)
    {
        _PhysicsPlayer = new PlayerPhysics(playerRigidbody);
        _CameraPlayer  = playerCamera;

        _IdleEvent   = new PlayerIdleEvent();
        _WalkEvent   = new PlayerWalkEvent(_PhysicsPlayer, playerRigidbody);
        _SprintEvent = new PlayerSprintEvent(_PhysicsPlayer, playerRigidbody);
        _FallEvent   = new PlayerFallEvent(_PhysicsPlayer, playerRigidbody);

        _CurrentPlayerEvent = _IdleEvent;
    }
    private void OnPlayerIdle(PlayerIdleEvent gameEvent)
    {
        StopAllCoroutines();

        var targetAlpha = gameEvent.idle ? 1.0f : 0.0f;
        var fader       = FadeAlpha(1.0f - targetAlpha, targetAlpha, 1.0f);

        if (gameEvent.idle)
        {
            StartCoroutine(fader);
            StartCoroutine(Spin(fader, c => true));
        }
        else
        {
            StartCoroutine(Spin(fader, c => c.MoveNext()));
        }
    }