Estoy intentando hacer un runner pero tengo problemas con los clicks del ratón ya que a veces no me los detecta. Es un simple runner de un touch donde antes de cada curva o salto
pongo un trigger para decirle que al hacer click gire en la dirección de la curva o le aplique una fuerza para saltar. Por ejemplo el primer trigger de la escena es el salto.
void OnTriggerEnter(Collider col)
{
if (col.gameObject.name == "izquierda")
{
giro = 1;
}
if (col.gameObject.name == "derecha")
{
giro = 2;
}
if (col.gameObject.name == "salto")
{
puedoSaltar = 1;
}
}
este es el código para los triggers (para decirle cuando girar izquierda, derecha o en este caso si saltar o no).
void FixedUpdate()
{
if ((puedoSaltar == 1) && (Input.GetMouseButtonDown(0)))
{
rb.AddForce(new Vector3(0, salto, 0));
anim.Play("jump", -1,0);
puedoSaltar = 0;
}
}
Aquí le digo que cuando haga click y puedoSaltar sea igual a 1 previamente activado por el trigger me haga el salto y cambie a la animación de salto pero no siempre reacciona al click. He descartado el fallo por parte del trigger ya que he hecho un print de la variable puedoSaltar y efectivamente esta siempre cambia a 1 al entrar en el trigger así que el fallo tiene que estar en la función del click. Alguien sabe que estoy haciendo mal?
Estas usando FIxedUpdate para las Input , jamas debes usar esto, para Inputs usa Update, si queres usar fixed para fisicas usa un bool en update y en fixedUpdate la condicion de dicho bool:
void Update()
{
if(Input....)
flag = true;
else
flag = false;
}
void FixedUpdate()
{
//algo de fisicas
if(flag)
hacerFisicas();
}
Anim play iria en Update y si queres el AddForce en FixedUpdate()
saludos
Genial, parece que ahora no falla nunca. Me imaginaba que algo del código fallaba. Muchas gracias!