x


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 ?

more ▼

asked Oct 11 '11 at 10:29 AM

jonathan.sant gravatar image

jonathan.sant
16 8 8 9

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?

Oct 11 '11 at 10:44 AM BerggreenDK

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.

Oct 11 '11 at 11:06 AM jonathan.sant

hmm ... oh yeah ... Tan and ATan only give values from 90 to -90 that's why

Oct 11 '11 at 11:40 AM jonathan.sant
(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

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);
more ▼

answered Oct 11 '11 at 12:10 PM

jonathan.sant gravatar image

jonathan.sant
16 8 8 9

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x2166
x653
x211
x97

asked: Oct 11 '11 at 10:29 AM

Seen: 1081 times

Last Updated: Oct 11 '11 at 12:10 PM