*has been resolved and deleted*

has been resolved and deleted

Have a look through this little sample:

Use it as an example to learn from, don’t try shoehorn it in if you don’t get what’s going on! But do ask questions if you have any :slight_smile:

[SerializeField] private float holdDelay = 0.7f;
[SerializeField] private float deadZone = 0.1f;

float holdStartTime = float.MaxValue;

// If we set the holdStartTime to greater than our current time it's because we weren't holding
// Saves us using an extra bool called 'wasHolding' but you could also do that if it's easier to read!
private bool WasHolding => holdStartTime < Time.time;

private void Update()
{
    // rename these two or replace with whatever you're getting your input from
    float joyStickX = Input.GetAxis("<JoystickX>");
    float joyStickY = Input.GetAxis("<JoystickY>");

    // are we pushing the joystick in any direction?
    bool isInputPresent = Mathf.Abs(joyStickX) > deadZone  || Mathf.Abs(joyStickY) > deadZone ;
    
    if (isInputPresent )
    {
        if (WasHolding)
        {
            // if we're holding now and we were holding in the last frame, 
            //    then have we held for long enough to activate the held input?
            if (Time.time - holdStartTime > holdDelay)
            {
                // do the thing!
            }
        }
        else
        {
            // We've just started holding so we can perform the initial action
            holdStartTime = Time.time;
            // do the thing!
        }
    }
    else if (WasHolding)
    {
        // We were holding previously but not anymore so reset the held start
        holdStartTime = float.MaxValue;
    }
}