Turn character by force

I am moving the character by force using this:

``````var vertical = Input.GetAxisRaw ("Vertical");
var forwardMoveAmount = vertical * moveSpeed * 100;

if (vertical > 0.0f) {
} else if (vertical < 0.0f) {
} else {
if (rigidbody.velocity.z != 0) {
rigidbody.AddRelativeForce (0, 0, -forwardMoveAmount * moveSpeed * Time.deltaTime * 2);
}
}
``````

And turning the character like this:

``````float h = Input.GetAxisRaw ("Horizontal");

Vector3 a = transform.localEulerAngles;

// Turns the character to the forward direction
if (h > 0.1)
transform.localEulerAngles = new Vector3 (a.x, a.y + (turnSpeed * Time.deltaTime * 20), a.z);
else if (h < 0)
transform.localEulerAngles = new Vector3 (a.x, a.y - (turnSpeed * Time.deltaTime * 20), a.z);
``````

This works fine to player, but I’m trying to develop an AI and I can’t figure out how to smoothly change the direction of the AI to the new point in path. For now I am setting the new waypoint and just pointing the AI to there using LookAt. How can I “smooth” or damp the curve to a more natural behaviour?

Here’s what I’m doing, hope it works/answers (although this is not via Force)

Define/set rotationspeed, myTransform is cached reference to Enemy self (transform)

``````	private void controlledLookAtTarget ()
{
Vector3 lookDir = (myTarget.position - myTransform.position);
lookDir.y = 0f;
myTransform.rotation = Quaternion.Slerp (myTransform.rotation, Quaternion.LookRotation (lookDir), rotationSpeed * Time.deltaTime);

}
``````