c# - unity - Objeto gira 180 grados en el eje z en-z y-x esquina
unity programming language (1)
El problema parecía ser que me perdí una combinación de .x, .y y .z. Cuando traté de reemplazar "transform.up.x" con "transform.up.y" dejé de tener el problema.
Básicamente tengo un objeto en rotación. Es un tipo de rotación de clic y arrastre, pero cuando el objeto está orientado hacia la esquina -z -x, o hacia la esquina inferior izquierda, tiene la posibilidad de voltearse 180 grados al revés cuando se vuelve a hacer clic. Esto es muy problemático e incluso sé en qué línea tiene lugar. Aquí está el código con el clic:
void OnMouseDown()
{
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
baseAngle = Mathf.Atan2(pos.y, pos.x) * Mathf.Rad2Deg;
baseAngle -= Mathf.Atan2(transform.right.y, transform.up.x) * Mathf.Rad2Deg;
startRotation = transform.rotation;
}
baseAngle - = Mathf.Atan2 (transform.right.y, transform.up.x) * Mathf.Rad2Deg;
^^^ Esta línea me está dando el mayor dolor de cabeza. Intenté jugar con los finales ".x" y ".z" y simplemente no puedo entenderlo. Cuando cambio ".x" por ".z", el problema está teniendo lugar en la esquina inferior derecha. Si me meto con ".y" solo me alejo más de lo que quiero.
Imagen:
Por cierto, el eje Z está subiendo verticalmente y el eje X va horizontalmente hacia la derecha. Cualquier ayuda apreciada.