I'm making a 2D top-down shooter in unity. Currently, I'm using the code below to point my player towards my cursor at all times, this works but isn't exactly what I want.
//Find the mouse position on the camera view
Vector3 mousePoint = theCamera.ScreenToWorldPoint(Input.mousePosition);
//Find how the mouse relates to the object's position
Vector3 difference = mousePoint - transform.position;
difference.Normalize();
//Find wanted angle of rotation
float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
Quaternion newRotation = Quaternion.Euler(new Vector3(0.0f, 0.0f, rotZ + adjustmentAngle));
//Apply wanted angle of rotation
transform.rotation = Quaternion.Lerp(transform.rotation, newRotation, Time.deltaTime * smoothing);
While this works, my player's gun isn't in the centre of my player so when the gun fires it actually skims past the cursor missing slightly.
How can I get my player to rotate so his gun is what points towards the cursor rather than himself? I have a child GameObject
at the end of the barrel of his gun used to Raycast
and stuff which I figure can be used?