Transition between Vector3s using AnimationCurve

How would I move an object from one location to another, smoothly along an AnimationCurve in C#? I’m not sure if I would use a Vector3.Lerp or AnimationCurve.Evaluate.

There are a few different things you can mean by ‘smoothly along an AnimationCurve’. One use of an AnimationCurve is to vary the speed of movement along…for example to ease the movement at the ends. Below is a test class. Put it on a cube and adjust the AnimationCurve in the inspector. As a first test, make sure your AnimationCurve starts at 0.0 and ends at 1.0.

using UnityEngine;
using System.Collections;

public class Bug25b : MonoBehaviour {

	public AnimationCurve ac;
	public Vector3 pos1 = new Vector3(-4.0f, 0.0f, 0.0f);
	public Vector3 pos2 = new Vector3( 4.0f, 0.0f, 0.0f);

	void Update() {
		if (Input.GetKeyDown (KeyCode.Space)) {
			StartCoroutine(Move(pos1, pos2, ac, 3.0f));

	IEnumerator Move(Vector3 pos1, Vector3 pos2, AnimationCurve ac, float time) {
		float timer = 0.0f;
		while (timer <= time) {
			transform.position = Vector3.Lerp (pos1, pos2, ac.Evaluate(timer/time));
			timer += Time.deltaTime;
			yield return null;