Jump to content
JuanchiBM

ANSWERED ¿Como puedo crear un If que solo se active si la rotacion de un objeto es mayor a 20°??

Recommended Posts

Bueno, basicamente es lo que dice en el titulo, solo queria saber si alguno sabe una forma para crear un "If" que se active solo si la rotacion de un objeto es mayor a 20°, gracias 😄

Share this post


Link to post
Share on other sites

Hola si estas trabajando con angulos eules creo que deberías comprobar la rotación del transform en el eje que deseas saber

por ejemplo en el angulo x

if ( transform.eulerAngles.x >= 20)

........

Edited by paio458
Error de sitaxis

Share this post


Link to post
Share on other sites

euler angles puede dar un valor "raro" dependiendo s

de como este rotado el objeto....

si quieres saber si el objeto "mira" hacia arriba mas de 20 grados puedes usar "transform.forward.y"...

el seno de 20 es 0.34202

si "transform.forward.y" es mayor de 0.342 el objeto mira para arriba mas de 20 grados

(si lo que quieres es saber si es mayor de 20 grados hacia abajo sera "transform.forward.y < -0.342f")

Edited by Igor

Share this post


Link to post
Share on other sites
15 hours ago, paio458 said:

Hola si estas trabajando con angulos eules creo que deberías comprobar la rotación del transform en el eje que deseas saber

por ejemplo en el angulo x

if ( transform.eulerAngles.x >= 20)

........

 

10 hours ago, Igor said:

euler angles puede dar un valor "raro" dependiendo s

de como este rotado el objeto....

si quieres saber si el objeto "mira" hacia arriba mas de 20 grados puedes usar "transform.forward.y"...

el seno de 20 es 0.34202

si "transform.forward.y" es mayor de 0.342 el objeto mira para arriba mas de 20 grados

(si lo que quieres es saber si es mayor de 20 grados hacia abajo sera "transform.forward.y < -0.342f")

No me anduvo con ninguna forma (Obviamente cambie los signos por z) y no se porque

Lo hice asi:

 // Si cumple entre -20° y 20° arbol de Jugador == true
        if (collision.transform.tag == "Jugador")
        {
            if (gameObject.transform.eulerAngles.z >= 20 || gameObject.transform.eulerAngles.z <= -20)
            {
                Player.GetComponent<Jugador>().arbol = true;
            }
            else
            {
                Player.GetComponent<Jugador>().arbol = false;
            }
        }
    

Y asi:

// Si cumple entre -20° y 20° arbol de Jugador == true
        if (collision.transform.tag == "Jugador")
        {
            if (transform.forward.z > 0.342f || transform.forward.z < -0.342f)
            {
                Player.GetComponent<Jugador>().arbol = true;
            }
            else
            {
                Player.GetComponent<Jugador>().arbol = false;
            }
        }

 

Funciona pero no reconoce el angulo, como que no pasan los 20 angulos y sigo pudiendome parar (A penas toco el arbol ya la variable "Arbol" Se hace true)

El tag "Jugador" Es de mi jugador y el booleano "Arbol" Si no es verdadero, el personaje no se puede parar encima del mismo

Share this post


Link to post
Share on other sites

si es el angulo z el que quieres comprobar en vez de "transform.forward.z" pon "transform.right.y"

Edited by Igor
  • Like 3

Share this post


Link to post
Share on other sites
1 hour ago, Igor said:

si es el angulo z el que quieres comprobar en vez de "transform.forward.z" pon "transform.right.y"

Sos un genio maestro, muchas gracias

Share this post


Link to post
Share on other sites

×
×
  • Create New...