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
[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;
}
}