private void UpdateInputData()
    {
        GameInput.PlayerActions playerInput = gameInput.Player;

        InputData result = InputData.none;

        Vector2 move = playerInput.Move.ReadValue <Vector2>();

        move = Quaternion.AngleAxis(LookAtYAngle, Vector3.back) * move;

        ActionKeyCode keyCode = ActionKeyCode.None;

        if (move.x != 0)
        {
            keyCode |= move.x < 0 ? ActionKeyCode.Left : ActionKeyCode.Right;
        }

        if (move.y != 0)
        {
            keyCode |= move.y > 0 ? ActionKeyCode.Up : ActionKeyCode.Down;
        }

        if (playerInput.Move.phase == InputActionPhase.Started)
        {
            keyCode |= ActionKeyCode.Axis;
        }

        if (playerInput.Attack.triggered)
        {
            keyCode |= ActionKeyCode.Attack;
        }

        if (playerInput.Attack.phase == InputActionPhase.Started)
        {
            keyCode |= ActionKeyCode.Attacking;
        }

        if (playerInput.Skill.triggered)
        {
            keyCode |= ActionKeyCode.Skill;
        }

        if (playerInput.Dash.triggered)
        {
            keyCode |= ActionKeyCode.Dash;
        }
        result.SetKeyCode(keyCode);
        result.SetAxisFromDir(move);

        AddInput(inputTargetId, result);
        lastInput = result;
    }
    private void UpdateGlobalInputData()
    {
        GameInput.PlayerActions playerInput = gameInput.Player;
        Vector2 lookDelta = playerInput.Look.ReadValue <Vector2>();

        if (Mathf.Abs(lookDelta.x) > 0.3f)
        {
            lookDelta.y = 0f;
        }

        lookAtOffset      = (lookAtOffset + lookDelta.x) % 360f;
        lookAtHeightScale = Mathf.Clamp01(lookAtHeightScale - lookDelta.y * Time.deltaTime);
    }