I am using the in-built character controller and when I rotate my character towards an enemy target, my whole character object (I have a capsule) will also rotate so then my character ends up standing diagonal rather than vertical and if I look at the enemy target again, my character object will turn completely horizontal.
public class LookAt : MonoBehaviour
{
public Transform lookAtOpponent;
void Update()
{
Vector3 relativePosition = lookAtOpponent.position - transform.position;
Quaternion rotation = Quaternion.LookRotation(relativePosition, Vector3.up);
transform.rotation = rotation;
}
}
I know rigidbody has contraints for each axis that you can tick but I can’t figure this out with a controller.
>Solution :
This way x,z don’t change they are always set to 0
public class LookAt : MonoBehaviour
{
public Transform lookAtOpponent;
void Update()
{
Vector3 relativePosition = lookAtOpponent.position - transform.position;
Quaternion rotation = Quaternion.LookRotation(relativePosition, Vector3.up);
transform.localEulerAngles = new Vector3(0,rotation.eulerAngles.y,0);
}
}