Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda