- Home /
how do you disable a key for 5 seconds?
I want to disable the key S for just 5 seconds, so if you press the S once do an action and within those 5 seconds if you press the S again it won't do anything here's my code
float cuenta = 5.0f;
if(Input.GetKeyDown(KeyCode.S) && _instancia == false)
{
cuenta -= Time.deltaTime;
_instancia = true;
Debug.Log(_instancia);
if(cuenta <= 0.0f)
{
_instancia = false;
cuenta = 5.0f;
Debug.Log(_instancia);
}
}
Answer by msnyder102 · Aug 20, 2014 at 04:24 AM
float lastTime;
void Start(){
lastTime = Time.Time;
}
void Update(){
if(Input.GetKeyDown(KeyCode.S) && (Time.Time - lastTime > 5.0f)){
DoSomething();
lastTime = Time.Time;
}}
Is how I would probably do it.
this works as this _instancia = Input.Get$$anonymous$$eyDown ($$anonymous$$eyCode.S); if(Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.S) && (Time.time - lastTime > 5.0f)) { Debug.Log(_instancia); lastTime = Time.time; }
but as soon I added the next code it stops working as I want
_instancia = Input.Get$$anonymous$$eyDown ($$anonymous$$eyCode.S); if(Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.S) && (Time.time - lastTime > 5.0f)) { Debug.Log(_instancia); GameObject charScout = (GameObject)Instantiate (this.gameObject, this.transform.localPosition, Quaternion.identity); charScout.renderer.material.color = Color.grey; this.rigidbody2D.is$$anonymous$$inematic = true; this.GetComponent ().enabled = false; Destroy(charScout,5); lastTime = Time.time; }
thanks guys! msnyder102, your code works but it doesn't allow me to get an input the first 5 seconds of the game and copypasteearth, your code do the same thing as $$anonymous$$e xD but you both help me a lot, thank you very much!
change lastTime = Time.Time in the Start() function to something like lastTime = -5.0f; that should allow you to use it right away
Answer by copypasteearth · Aug 20, 2014 at 04:24 AM
use Time to keep track and put it in your if statement, something like this
float cuenta = 5.0f;
float timer = 0f;
if(Input.GetKeyDown(KeyCode.S) && _instancia == false && Time.time > timer + 5)
{
cuenta -= Time.deltaTime;
_instancia = true;
Debug.Log(_instancia);
if(cuenta <= 0.0f)
{
_instancia = false;
cuenta = 5.0f;
Debug.Log(_instancia);
}
timer = Time.time;
}
Just so you know, their variable cuenta is actually Spanish and is equivalent to timer meaning in this script you technically have 2 timers.
Your answer

Follow this Question
Related Questions
How do you save timer with PlayerPrefs? 1 Answer
Can't activate my timer for shooting script? 2 Answers
How to stop a countdown from counting down 1 Answer
Destroy happens immediately 1 Answer