- Home /
2d rotation to follow mouse when shifting from left to right facing direction
I have a tree of gameobjects. The parent is the player, beneath that is an arm socket empty gameobject positioned on each shoulder, and under each arm socket gameobject is the actual arm sprite gameobject. With the script below when my character is facing left it works great, the arms follow the mouse without a problem. When my character moves right the x axis is flipped on the parent gameobject to mirror the character image. When this happens, the rotation for the children objects do not calculate correctly with this script. This sort of math is not my forte and I would appreciate if someone could provide some assistance on how to rectify this problem.
I'm guessing it is not as simple as just multiplying x by -1 which I've tried. I also tried using transform.inverseTransformPoint(point) which also didn't to work for this scenario.
I know unity has hinge joints but I'd prefer not to use them for this specific task.
Vector3 mouse_pos;
Transform target; //Assign to the object you want to rotate
Vector3 object_pos;
float angle;
void Update ()
{
target = this.transform;
mouse_pos = Input.mousePosition;
mouse_pos.z = 0f; //The distance between the camera and object
object_pos = gameManager.mainCamera.WorldToScreenPoint(target.position);
mouse_pos.x = mouse_pos.x - object_pos.x;
mouse_pos.y = mouse_pos.y - object_pos.y;
angle = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle+105.0f));
}
http://answers.unity3d.com/questions/10615/rotate-objectweapon-towards-mouse-cursor-2d.html
Your answer
![](https://koobas.hobune.stream/wayback/20220613152603im_/https://answers.unity.com/themes/thub/images/avi.jpg)