Currently I am using
if ( Vector3.Distance( leader.position, transform.position ) >= distance) {
transform.LookAt(leader);
controller.SimpleMove(forward * speed );
But I am curious as to another way to get a npc to follow the ‘leader’. This is fine in theory, but the npc’s z points towards the leader unrealisticly. Is there a way to get the npc to face the player while keeping its z normal?
Right now I am restricting its z bu using
transform.rotation.z = 0;
I don’t want to have such a restriction on it though. In the future I want to add functions to allow the npc to rotate to the ground beneath it, and restrictions like that will be a huge problem. I basically need a new way to get it to follow something more naturally.
Thanks for any help
What I have done is the past is create a Quaternion that points the character in the right direction, then add the other Quaternion that defines the slope.
Edit:
Quaternions are actually really simple to use. Basically you use something like Quaternion.LookRotation to make one, then you make another, then just use the * operator to add them.
Quaternion.LookRotation(transform.forward, Vector3.up) * Quaternion.RotateTowards(something)
The docs are pretty good for this.
function Update () {
transform.rotation.z = 0;
var hit : RaycastHit;
var castPos = Vector3(transform.position.x,transform.position.y-.25,transform.position.z);
if (Physics.Raycast (castPos, -transform.up, hit)) {
transform.rotation.x = Quaternion.FromToRotation (Vector3.up, hit.normal).x;
}
}
This makes the character extremely buggy and trippy. I think something is screwy in its update function?