// Update is called once per frame
        void FixedUpdate()
        {
            if (Frozen)
            {
                return;
            }


            float h = Input.GetAxisRaw("Horizontal");
            float v = 0f;

            if (Math.Abs(h) < 0.0001f)
            {
                v = Input.GetAxisRaw("Vertical");
            }


            PlayerAnimator.SetInteger("Vertical", Mathf.RoundToInt(v));
            PlayerAnimator.SetInteger("Horizontal", Mathf.RoundToInt(h));

            Vector3 inputs = new Vector3(h, v);


            if (inputs.magnitude > 0)
            {
                _raycastRay.origin    = _playerTransform.position;
                _raycastRay.direction = (_playerTransform.position + inputs) - _raycastRay.origin;
            }

            inputs *= Speed;
            inputs *= Input.GetAxisRaw("Run") > 0 ? _runSpeedMultiplier : 1f;
            inputs *= Time.fixedDeltaTime;

            if (Input.GetAxisRaw("Fire") > 0 && _snowballTimer >= _snowBallCooldown)
            {
                Vector3 dest = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                dest.z = -5;
                GameObject instance = Instantiate(_snowBallPrefab, transform.position + inputs, Quaternion.identity);
                instance.transform.DOMove(dest, 0.5f).SetEase(Ease.Linear).OnComplete(() =>
                {
                    Destroy(instance);
                });
                _snowballTimer = 0;
            }
            _snowballTimer += Time.deltaTime;
            _body.velocity  = inputs;

            if (!(Input.GetAxis("Interact") > 0))
            {
                return;
            }
            RaycastHit raycastHit;

            if (!Physics.Raycast(_raycastRay, out raycastHit, _raycastRange))
            {
                return;
            }

            if (raycastHit.transform.CompareTag("InteractiveObject"))
            {
                InteractiveObject obj = raycastHit.transform.GetComponent <InteractiveObject>();
                if (obj != null)
                {
                    obj.Interact();
                }

                LevelLoader lvl = raycastHit.transform.GetComponent <LevelLoader>();
                if (lvl != null)
                {
                    lvl.LoadLevel();
                }

                EndAnimation endAn = raycastHit.transform.GetComponent <EndAnimation>();
                if (endAn != null)
                {
                    endAn.PlayEndAnimation();
                }
            }
        }