Changing character X axis rotation so that gun points at target issue
Good evening everyone!
I am making a WWII shooter and currently working on the AI
I am simply trying to have the back of my character move up or down in order for my gun object to point at the target (currently 1500m away), anyway, I got the Y rotation working fine, so I rotate the entire character so that the weapon faces the target on the Y axis, but I cannot get the X axis to work.
I have spent the day on this I am going crazy at this point I would appreciate any help with this Here is my short code and a picture of the situation:
// Rotating the whole character on the Y axis (left/right)
Quaternion bodyRot = Quaternion.LookRotation(targetCtrlrGO.transform.position - wpnGO.transform.position, this.controllerGO.transform.up);
bodyRot *= Quaternion.Inverse(wpnGO.transform.rotation);
bodyRot *= this.controllerGO.transform.rotation;
this.controllerGO.transform.rotation = Quaternion.RotateTowards(this.controllerGO.transform.rotation, Quaternion.Euler(0, bodyRot.eulerAngles.y, 0), 100 * Time.deltaTime);
// Rotating the chest on the X axis (up/down)
Quaternion chestRot = Quaternion.LookRotation(targetCtrlrGO.transform.position - wpnGO.spawnProjectile_transform.position, this.controllerGO.transform.up);
this.controllerGO.chest.transform.localRotation = Quaternion.RotateTowards(this.controllerGO.chest.transform.localRotation, Quaternion.Euler(chestRot.eulerAngles.x, 0, 0), 100 * Time.deltaTime);
My issue is that there is an offset of 0.33 degrees between what the direction vector is and the final rotation, and I have no clue as to why, since I checked the vector and it is the right one, but it is the finally rotation based on that vector that isn't correct. 0.33 degrees isn't much, but over such a distance it creates a several meters gap which makes my AI shoot on the sides