NPCs to look in the direction the target is
Hey guys, We're working on a beat em up style game. The NPCs always face th3e direction to the player character, but so far as it stands, they can only look towards the absolute left or right position, no angles between left and right. This is causing them to moonwalk facing left or right when they walk on the Z axis. Here is our code, I can't really seem to make em rotate on their Y axis as well. Any and all help is appreciated, sorry, a noob here, but this quaternion thing drives me nuts :)
public void LookAtTarget(Transform _target){
if(_target != null){
Vector3 newDir = Vector3.zero;
int dir = _target.transform.position.x >= transform.position.x ? 1 : -1;
currentDirection = (DIRECTION)dir;
if (animator != null) animator.currentDirection = currentDirection;
newDir = Vector3.RotateTowards(transform.forward, Vector3.forward * dir, rotationSpeed * Time.deltaTime, 0.0f);
transform.rotation = Quaternion.LookRotation(newDir);
}
}
I usually only use this bit of code:
Vector3 dir = target.transform.position - this.transform.position; //this returns a vector pointing from this to the target.
dir.x = 0;
dir.z = 0;
this.transform.rotation = Quaternion.LookRotation(dir);
This only rotates around the y-axis (which is usually desirable). If the NPCs are flying you probably want them to rotate around the x-axis aswell.
Not sure why you're using the animator here? Do you actually want to use root motion?
Also, is this 2D or 3D? If you're in 2D, simply flip the Y-axis(?) (multiply by -1).
Your answer
Follow this Question
Related Questions
Stop player going up when camera looks up. 1 Answer
Move Foward key W sometimes keeps walking after I let go of W, only happens afew times 1 Answer
How do I make a centipede/conga line out of game objects? 0 Answers
How to make an object move, not teleport? 0 Answers
Trying to make a a chase scene 0 Answers