private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            _currentAction = _currentAction == HandAction.None
        ? HandAction.Hold
        : HandAction.None;
            UpdateUpper();
        }

        if (_currentAction == HandAction.Hold && Input.GetKeyDown(KeyCode.Space))
        {
            spine.AnimationState.SetAnimation(
                1, $"Hit/{DirectionUtil.GetActualName(_currentDirection)}",
                false);
            spine.AnimationState.AddAnimation(
                1, $"Hold/{DirectionUtil.GetActualName(_currentDirection)}", true,
                0);
            return;
        }

        bool isWalking = Math.Abs(_characterController.Magnitude) > 0;

        Direction direction =
            DirectionUtil.ConvertDegrees(_characterController.AngleDeg);

        if (isWalking && direction != _currentDirection)
        {
            _currentDirection     = direction;
            spine.Skeleton.ScaleX = DirectionUtil.IsFlippable(direction) ? -1 : 1;
            UpdateBase();
            UpdateUpper();
        }

        if (isWalking != _currentIsWalking)
        {
            _currentIsWalking = isWalking;
            UpdateBase();
        }
    }