- Home /
Making an enemy face the Player
I am trying to make the enemy look at the player and follow him, however I can't just use transform.LookAt since I want the motion to be realistic and not immediately snap to face the player. so what I was doing is calculate the angle between the player and the enemy an rotating the enemy with a certain speed to that angle, like so:
angleToTarget = Mathf.Atan((moveTo.x - transform.position.x) /
(moveTo.z - transform.position.z)) * Mathf.Rad2Deg;
transform.eulerAngles = new Vector3(0, Mathf.MoveTowardsAngle(transform.eulerAngles.y, angleToTarget, Time.deltaTime * horizontalRotation), 0);
This is working for certain angles but at some point (I can't figure out when exactly) the enemy rotates exactly the opposite way that it should be facing.
Can anyone help please ?
two suggestions: 1) make sure the enemy forward is Z+ axis, not Z- axis 2) angles are 360 for a circle, why not just add or subtract 180 from the result?
Sorry but I didn't get your first comment. moveTo is the player's position in this case while the transform is that of the enemy. As for the second one, I thought of that but the problem is that I can't figure out exactly when it suddenly decides to rotate to the other way.
hmm ... oh yeah ... Tan and ATan only give values from 90 to -90 that's why
Answer by jonathan.sant · Oct 11, 2011 at 12:10 PM
Since Tan and ATan can only return values between 90 and -90 I had to use ATan2 like so:
angleToTarget = Mathf.Atan2((moveTo.x - transform.position.x), (moveTo.z - transform.position.z)) * Mathf.Rad2Deg;
transform.eulerAngles = new Vector3(0,
Mathf.MoveTowardsAngle(transform.eulerAngles.y, angleToTarget, Time.deltaTime * horizontalRotation), 0);
Your answer
![](https://koobas.hobune.stream/wayback/20220613003908im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Rotate Center Pivot based Object like a Draw Bridge 2 Answers
Find intersection (with Picture) 2 Answers
Changing the forward rotation for LookAt 2 Answers
Rotation problem: Check is failing/ endlessly spins 1 Answer
Make 3D Player look exactly at mouse with ScreenToWorldPoint? (maths Question) 2 Answers