Jump to content
Sign in to follow this  
rublo

Angulo a Vector2

Recommended Posts

Hola a todos, el tema es que estoy simulando un radar mas o menos realista para mi proyecto, y despues de hacer los complicado, llevo un par de tardes dandole ostias al monitor con el teclado 😂😂.

Solo necesito pasar un angulo y una distancia a un vector2d para representar el contacto en la ui del radar, despues de ojear por google, leer un par de tutos de trigonometria, algun ejemplo de radar en unity y demas esto es a lo que e llegado pero sin exito y no logro dar con el error, alguna idea?

 

private Vector2 CalcuPos2D(float distanLoc, float anguloLoc) 
    {
        float radians= anguloLoc  * Mathf.Deg2Rad; //convertir a radianes
        float blipX = Mathf.Cos(radians) * distanLoc;
        float blipY = Mathf.Sin(radians) * distanLoc;
        blipX *= 0.032f; // multiplicamos por (RangoDeteccion / tamaño imagen radar) para escalar
        blipY *= 0.032f; // multiplicamos por (RangoDeteccion / tamaño imagen radar) para escalar
        return new Vector2(blipX, blipY) ;
    }

void MuestraDetecciones()
    {
        //Minave = Vector3 de la emision del radar
        //DeteccionesRadar[] = array con los objetos detectados en el radar 
        Vector3 targetDir = NaveScript.DeteccionesRadar[1].transform.position - MiNave.transform.position;    
        angulo = Vector3.Angle(targetDir, MiNave.transform.forward);
        float dist = Vector3.Distance(MiNave.transform.position, NaveScript.DeteccionesRadar[1].transform.position);
        Vector2 dir = CalcuPos2D(dist,angulo); //devuelve posicion 2d del contacto
        Contacto1.rectTransform.localPosition = dir; //posicionamos imagen del contacto 
    }            

 

 

Share this post


Link to post
Share on other sites

Solucionado, ni idea que fallaba en el metodo anterior.

Vector2 RotarV2(Vector2 DetecLoc, float AnguLoc)
        {
            float rad = AnguLoc * Mathf.Deg2Rad;
            float s = Mathf.Sin(rad);
            float c = Mathf.Cos(rad);
            return new Vector2(DetecLoc.x * c - DetecLoc.y * s, DetecLoc.y * c + DetecLoc.x * s);
        }

 

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...