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?