Need help to move in different position

how to interpolate between 3 position ( left- right -middle ) in a infinite runner game like subway surfs
i have try this script

#pragma strict
var speed=5.0;
var speedtrans=50.0;
var poscentre:GameObject;
var posgauche:GameObject;
var posdroite:GameObject;
var centre:boolean;
var droite:boolean;
var gauche:boolean;
 
function Start () {
 
centre=true;
droite=false;
gauche=false;
}
 
function Update () {
this.transform.Translate(speed*Time.deltaTime,0,0,Space.World);
 
       if(centre==true){
          if(Input.GetKeyDown("a")){ transform.position=Vector3.Lerp(transform.position,posgauche.transform.position,0.37);
 
          gauche=true;
          centre=false;
          droite=false;
 
         }
         else if(Input.GetKeyDown("d")){ transform.position=Vector3.Lerp(transform.position,posdroite.transform.position,0.37);
 
                 droite=true;
                 centre=false;
                 gauche=false;
                 }
       }
       else if(droite==true){
              if(Input.GetKeyDown("a")){ transform.position=Vector3.Lerp(transform.position,poscentre.transform.position,0.37);
 
                 droite=false;
                 centre=true;
                 gauche=false;
              }
         }
          else if(gauche==true){
                 if(Input.GetKeyDown("d")){ transform.position=Vector3.Lerp(transform.position,poscentre.transform.position,0.37);
                 droite=false;
                  centre=true;
                 gauche=false; 
 
                   }
          }

I think it would be better to use transform.Translate Unity - Scripting API: Transform.Translate, as Lerp wouldn’t be the best choice for any movement, maybe except for top-down games click to run, like league of legend, but even for that i would use Vector3.MoveTowards Unity - Scripting API: Vector3.MoveTowards