Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Unity no siempe me detecta el input del raton

Iniciado por xCarras, Marzo 01, 2017, 09:56:40 AM

Tema anterior - Siguiente tema
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?

Marzo 01, 2017, 01:50:23 PM #1 Ultima modificación: Marzo 01, 2017, 01:54:43 PM por lightbug
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!

Etiquetas: