Jump to content
UnitySpain
Sign in to follow this  
DavidV

Pequeño bug

Recommended Posts

Hola, iniciando un nuevo proyecto me ha resultado un pequeño error en el que no sé si es algo general, o sólo sucede en mi pc.

Tengo el siguiente código:

void FixedUpdate () {
		if (Input.GetKeyDown(KeyCode.X)) {
			stop = !stop;
			print (stop);
		}

		switch (stop) {
		case false:
			//GetComponent<Rigidbody2D> ().velocity = Vector2.zero;
			flecha.transform.RotateAround (Aro.transform.position, -Vector3.forward, velocidadFlecha * Time.deltaTime);
			Aro.SetActive (true);
			break;
		case true:
			flechaPosition = flecha.transform.localPosition;
			//GetComponent<Rigidbody2D> ().velocity = flechaPosition * velocidad;
			Aro.SetActive (false);
			break;
		}
	}
		
}

El error está en el if (Input.GetKeyDown(KeyCode.X)) {  stop = !stop;}, como ustedes ya saben esto cambia una variable bool de verdadero a falso y viceversa cada vez que se presiona la tecla X. Pero casi siempre, realiza dos veces la acción que se encuentra dentro de ese condicional, es decir; si era true, pasa a false y enseguida pasa nuevamente a true, cuando solo lo he presionado una sola vez, algo que por supuesto daña el resto del script.

¿A alguien más le ha sucedido o sólo es un problema en mi pc?, ¿Tiene esto alguna solución?

De antemano muchas gracias por su ayuda. 

Edited by DavidV

Share this post


Link to post
Share on other sites

No es un bug, el input.GetKeyDown devuelve true en el frame  que se pulso la tecla y se resetea al pasar al siguiente  frame, si lo usas en fixedUpdate se ejecutara mas de una vez en un frame.Utiliza el input.GetKeyDown en un update()

Share this post


Link to post
Share on other sites

Y aparte lo va a hacer cientos de veces. Tienes que poner un timer con el deltaTime que solamente se active lo que quieras al cabo de 0.5 segundos por ejemplo.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...