Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

172
Views
Rotación de 90 grados la unidad

Estoy tratando de rotar mi objeto 2d alrededor de mi mouse. Este es el código que tengo:

 void Update() { Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector3 direction = mousePosition - transform.position; float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0, 0, angle); // Debug.Log(angle); }

Mi objeto, que es una flecha, apunta hacia abajo de manera predeterminada, por lo que antes de comenzar el script establecí su rotación z en 90, para que mire hacia la derecha. Si elimino la línea transform.rotation , el ángulo que se muestra será el correcto, cuando mi cursor está arriba dice 90, a la izquierda dice 180, etc. Entonces mi pregunta es: ¿Por qué necesito agregar 90 grados al ángulo para hacer esto realmente funciona? ¿Por qué no funciona esta versión?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Mathf.Atan2 (Ver también Wikipedia - Atan2 )

El valor de retorno es el ángulo entre el eje x [= Vector3.right ] y un vector 2D que comienza en cero y termina en (x,y).

Funcionaría como se esperaba si su flecha por defecto apuntara a la derecha pero la suya es

por defecto apuntando hacia abajo


simplemente puede agregar la rotación de compensación en la parte superior como

 transform.rotation = Quaternion.Euler(0, 0, angle + 90);

Alternativamente, si necesita esto para múltiples objetos con diferentes compensaciones, use un campo configurable como

 [SerializeField] private float angleOffset; ... transform.rotation = Quaternion.Euler(0, 0, angle + angleOffset);

O puede girarlo manualmente para que mire correctamente a la derecha antes de iniciar la aplicación y almacenar esa rotación de desplazamiento predeterminada como

 private Quaternion defaultRotation; private void Awake () { defaultRotation = transform.rotation; }

y luego hacer

 transform.rotation = defaultRotation * Quaternion.Euler(0, 0, angle);
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!