ItWeen on another script for path constrained characters

hello
I use an Itween-based script to move vehicles. It works.

But if I put it on characters, they don’t stay vertical when going up and down.
How to modify this script to keep the characters vertical?
it’s on line 88 but how change ?

            transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.1f));

Important note .
I must have 2 scripts
Trajetvl for vehicles and another TrajtCharacter for characters.
Both scripts must work independently

thank you.
My script

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;

public class TrajetVl : MonoBehaviour {
    public GameObject target_Path;
    public float kmh; // vitesse voulue
    public float kmhActuel; // vitesse reelle
    public float mEntrePoint = 5.0f;
    private float time;
    public float fraction;
    public Transform[] tabtList = new Transform[11];
    public int minTab = 0;
    public Transform detecteur;
    public LayerMask layerPanneau;
    public Collider[] toucheDetecteur;
    public bool coupeDetecteur;
    private Light jourNuit;
    private GameObject eclairage;
    private GameObject eclairageFreins;
    public GameObject clignotantsDroits;
    public GameObject clignotantsGauche;
    private IEnumerator coroutineClignotants;

    public InterieurVl interieur;

    public void DemrageVl () {
        tabtList = new Transform[11];
        TabDynamique ();
        if (transform.FindChild("Detecteur"))
            detecteur = transform.FindChild("Detecteur").transform;

        jourNuit = GameObject.Find("Sky Dome").transform.FindChild("Light").GetComponent<Light>();

        //cherche dans ces enfants un object avec le nom Eclairage
        //si existe alors on ajoute l'object portant le nom "Eclairage" dans la variable eclairage
        if (this.transform.FindChild ("Eclairage")) {
            eclairage = this.transform.FindChild ("Eclairage").gameObject;
        }

        if (this.transform.FindChild ("Eclairage_Freins")) {
            eclairageFreins = this.transform.FindChild ("Eclairage_Freins").gameObject;
            eclairageFreins.SetActive (false);
        }
      
        if (this.transform.FindChild ("Eclairage_Clignotants_droits")) {
            clignotantsDroits = this.transform.FindChild ("Eclairage_Clignotants_droits").gameObject;
            clignotantsDroits.SetActive (false);
        }

        if (this.transform.FindChild ("Eclairage_Clignotants_gauche")) {
            clignotantsGauche = this.transform.FindChild ("Eclairage_Clignotants_gauche").gameObject;
            clignotantsGauche.SetActive (false);
        }

        StartCoroutine("WalkThePath");
    }

    public void TabDynamique () {
        fraction = 0.1f;
        int count = 0;

        for (int i = 0; i < 11; i++) {
            if (minTab+i < target_Path.transform.childCount) {
                tabtList[i] = target_Path.transform.GetChild(minTab+i);
                count++;
            }
        }

        if (minTab+8 < target_Path.transform.childCount)
            minTab += 8;
        else
            minTab += count;
    }

    public void StopCoroutine () {
        StopCoroutine("WalkThePath");
    }

    IEnumerator WalkThePath () {
        while(true){
            time = (tabtList.Length * mEntrePoint)/(kmhActuel / 3.6f);
            transform.position = iTween.PointOnPath (tabtList, fraction);
            fraction += Time.deltaTime / time;
            if (fraction > 1.0f)
                fraction = 0.0f;
            transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.1f));
            if (kmhActuel < kmh){
                kmhActuel += 0.7f;// acceleration jusqu'à la vitesse kmh 0.7f
            } else if (kmhActuel > kmh && kmh != 0) {
                kmhActuel -= 0.9f;// decceleration douce 0.9
            } else if (kmh == 0) {
                kmhActuel = 0;// on stoppe brutalement le VL
            }

            if (fraction >= 0.9f) //0.9f
                TabDynamique();

            GestionDetecteur ();
            GestionLumiere ();
            GestionFreins ();

            yield return null;
        }
    }

    void GestionDetecteur () {
        if (detecteur != null) {
            if (gameObject.tag == "VEHICULE")
                toucheDetecteur = Physics.OverlapSphere(detecteur.position, 0.75f, layerPanneau);
            else
                toucheDetecteur = Physics.OverlapSphere(detecteur.position, 0.5f, layerPanneau);

            if (toucheDetecteur.Length != 0) {
                foreach (var other in toucheDetecteur) {
                    if (other.tag == "CoupeDetecteur") {
                        coupeDetecteur = other.GetComponent<CoupeDetecteur>().detecteur;
                        kmhActuel = 50.0f;// pour degager les croisements
                    }

                    if (other.tag == "CoupeDetecteurAutre") {
                        coupeDetecteur = other.GetComponent<CoupeDetecteur>().detecteur;
                        kmhActuel = 4.0f;
                    }

                    if (coupeDetecteur == false) {
                        if (other.tag == "ModifVitesse") {
                            kmh = other.GetComponent<Panneau>().vitesse;
                        } else if (other.tag == "EntreeInstersection") {
                            kmh = other.GetComponent<Priorite>().vitesse;
                        } else if (other.tag == "VEHICULE") {

                            if (kmh > other.GetComponent<TrajetVl>().kmh)
                            kmh = other.GetComponent<TrajetVl>().kmh;
                        } else if (other.tag == "ClignotantsOn") {
                            kmh = other.GetComponent<GestionClignotants>().vitesse;
                            if (other.GetComponent<GestionClignotants>().trajet == target_Path) {
                                ClignotantsOff ();
                                if (other.GetComponent<GestionClignotants>().enumClignotants == EnumClignotants.Droites) {
                                    coroutineClignotants = ClignotantsDroits();
                                    StartCoroutine (coroutineClignotants);
                                } else {
                                    coroutineClignotants = ClignotantsGauche();
                                    StartCoroutine (coroutineClignotants);
                                }
                            }
                        } else if (other.tag == "ClignotantsOff") {
                            kmh = other.GetComponent<GestionClignotants>().vitesse;
                            ClignotantsOff ();
                        }
                    }
                }
            }

            if (kmhActuel == 0 && toucheDetecteur.Length == 0)
                kmhActuel = 30.0f;

        }
    }

    void GestionLumiere () {
        if (eclairage != null) {
            if (jourNuit.intensity < 0.15f) {
                if (eclairage.activeInHierarchy == false)
                    eclairage.SetActive (true);
            }
            else {
                if (eclairage.activeInHierarchy == true)
                    eclairage.SetActive (false);
            }
        }
    }

    void GestionFreins () {
        if (eclairageFreins != null){
            if (kmhActuel > kmh+3 || kmhActuel == 0) {
                if (eclairageFreins.activeInHierarchy == false)
                    eclairageFreins.SetActive (true);
            } else {
                if (eclairageFreins.activeInHierarchy == true)
                    eclairageFreins.SetActive (false);
            }
        }
    }

    IEnumerator ClignotantsDroits () {
        if (clignotantsDroits != null) {
            while (true) {
                clignotantsDroits.SetActive (true);
                yield return new WaitForSeconds (0.3f);
                clignotantsDroits.SetActive (false);
                yield return new WaitForSeconds (0.3f);
            }
        }
    }

    IEnumerator ClignotantsGauche () {
        if (clignotantsGauche != null) {
            while (true) {
                clignotantsGauche.SetActive (true);
                yield return new WaitForSeconds (0.3f);
                clignotantsGauche.SetActive (false);
                yield return new WaitForSeconds (0.3f);
            }
        }
    }

    void ClignotantsOff () {
        if (coroutineClignotants != null) {
            StopCoroutine (coroutineClignotants);

            if (clignotantsDroits != null)
                clignotantsDroits.SetActive (false);
            if (clignotantsGauche != null)
                clignotantsGauche.SetActive (false);
           
            coroutineClignotants = null;
        }
    }

}

Hello, I can edit my post.
My characters have rigidbody.
I saw somewhere ItWeen can used this for character vertical but i Don’t know how do this.