Из документации Unity API на https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html
public static Vector3 Lerp(Vector3 a, Vector3 b, float t);
Когда t = 0 возвращает a.Когда t = 1, возвращается b.Когда t = 0,5 возвращает точку на полпути между a и b.
В этой симметричной ситуации, когда x = 0 точно между начальной и конечной точкой, вы можете просто использовать lerp с t, начинающимся с t = 0.5,Возможно, что-то вроде этого:
Vector3 pos1, pos2, pos0, pos3;
private float t;
void Start()
{
pos0 = transform.position;
pos1 = pos0 + new Vector3(10, 0, 0);
pos2 = pos0 - new Vector3(10, 0, 0);
pos3 = pos1;
t = 0.5
}
void FixedUpdate()
{
t += Mathf.PingPong(Time.deltaTime * 0.5f, 1.0f);
transform.position = Vector3.Lerp(pos2, pos1, t);
}
И, как указал @BugFinder, вам, вероятно, следует использовать Time.deltaTime
вместо Time.time