Noticias

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

No veo mi problema!

Iniciado por Null, Agosto 22, 2016, 05:42:23 PM

Tema anterior - Siguiente tema
Hola.
 
Tengo un pequeño problema a la hora de hacer que mi

personaje corra.
 
Bien, resulta que ya tengo escrito el código para que pueda correr

pulsando shift, y todo eso.

Y funciona perfectamente.
 
El problema que tengo, es que quiero que cuando el personaje

choque contra un muro, deje de correr para que no quede tan feo.

Lo cual hasta el momento también funcionaba perfectamente:
 

void OnTriggerEnter(Collider other)
{
  if (other.gameObject.tag == "Muro")
  {
    Debug.Log("He chocado contra este muro.");
    puedeCorrer = false;
  }
}
void OnTriggerExit(Collider other)
{
  if (other.gameObject.tag == "Muro")
  {
    puedeCorrer = true;
  }
}

 
 
 
Pero luego, perfeccionando el personaje, me di cuenta de que si está en aire y

pulso shift, puedo correr en el aire y queda feo.


Entonces lo quise arreglar de esta manera:
 

void Saltar()
{
  if (cc.isGrounded)   // cc = CharacterController.
  {
    puedeSaltar = true;
    puedeCorrer = true;
   
    if (puedeSaltar)
    {
      if (Input.GetButtonDown("Jump"))
          _velocidadVertical = maxAlturaSalto;
      else
         _velocidadVertical = 0f;
    }
  }
  else
  {
    puedeSaltar = false;
    puedeCorrer = false;
  }
}

 
 
 
Pero entonces ahora al chocar contra algún muro,

no funciona. Es decir, puedo seguir corriendo contra el muro.


Alguna sugerencia?

Gracias.

El problema esta en que OnTriggerEnter() te pone al valor de puedeCorrer a false solo en el frame en el que los colliders empiezan a colisionar, pero luego el método Saltar() te va a cambiar el valor de puedeCorrer a true, ya que se cumple que esta tocando el suelo (además de la pared)

Cita de: Trunex date=1471891335El problema esta en que OnTriggerEnter() te pone al valor de puedeCorrer a false solo en el frame en el que los colliders empiezan a colisionar, pero luego el método Saltar() te va a cambiar el valor de puedeCorrer a true, ya que se cumple que esta tocando el suelo (además de la pared)
   


OHHH, si es cierto.

No estaba pensando en eso.


Creo que necesito dormir más.

Jajajaja
 
Voy a ver cómo lo soluciono entonces.

Gracias! :D

Etiquetas: