diff --git a/Assets/Scenes/CourseAPieds/sceneCourseAPied.unity b/Assets/Scenes/CourseAPieds/sceneV7.unity
similarity index 98%
rename from Assets/Scenes/CourseAPieds/sceneCourseAPied.unity
rename to Assets/Scenes/CourseAPieds/sceneV7.unity
index 656723f02c062a4f4b204181086c50530cf37e29..d0d94dba8a501b6c3497eb572b9b5adcb49e7c81 100644
--- a/Assets/Scenes/CourseAPieds/sceneCourseAPied.unity
+++ b/Assets/Scenes/CourseAPieds/sceneV7.unity
@@ -214,11 +214,16 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 86c7bfd105ba6e14180f833234cbc0b8, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  debugMode: 1
   nombreDePointsAGenerer: 10
+  largeurDuChemin: 10
+  offsetDeLaHauteur: -0.5
   terrain: {fileID: 0}
-  terrainDeph: 20
-  heightmapWidth: 256
-  heightmapHeight: 256
+  pronfondeurDuTerrain: 40
+  heightmapWidth: 512
+  heightmapHeight: 512
+  terrainWidth: 256
+  terrainHeight: 256
   scale: 2
   ptProches: 
 --- !u!1 &705507993
diff --git a/Assets/Scenes/CourseAPieds/sceneCourseAPied.unity.meta b/Assets/Scenes/CourseAPieds/sceneV7.unity.meta
similarity index 100%
rename from Assets/Scenes/CourseAPieds/sceneCourseAPied.unity.meta
rename to Assets/Scenes/CourseAPieds/sceneV7.unity.meta
diff --git a/Assets/Scripts/CourseAPieds/V7.cs b/Assets/Scripts/CourseAPieds/V7.cs
index dcab6fd23a20f1726aa796907089019a178cec10..990688724f80dc5fddc098eb2c0f3d5fddcd7be2 100644
--- a/Assets/Scripts/CourseAPieds/V7.cs
+++ b/Assets/Scripts/CourseAPieds/V7.cs
@@ -1,28 +1,35 @@
 /* 
-République de Clément Geraudie
+Clément Géraudie
 */
 
 using UnityEngine;
 
 public class V7 : MonoBehaviour
 {
+    [Header("Debug Mode")]
+    public bool debugMode = false;
+
     [Header("Initialisation")]
     public int nombreDePointsAGenerer = 5;
+    public int largeurDuChemin = 5;
+    public float offsetDeLaHauteur = -0.1f;
 
     [Header("Terrain")]
     [SerializeField] private Terrain terrain;
-    public int terrainDeph = 20;
+    public int pronfondeurDuTerrain = 20;
 
     // Constantes pour la heightmap
     [SerializeField] private int heightmapWidth = 256;
     [SerializeField] private int heightmapHeight = 256;
+    [SerializeField] private int terrainWidth = 256;
+    [SerializeField] private int terrainHeight = 256;
 
 
     public float scale = 2f;
     public int[,] pointsDuChemin;
     public int[] ptProches;
-    int ptsCheminX;
-    int ptsCheminY;
+    int ptsChemAbscisse;
+    int ptsChemIndex;
 
 
     //public float offsetX = 100f;
@@ -33,26 +40,26 @@ public class V7 : MonoBehaviour
         // Création du tableau des points aléatoires (chemin)
         pointsDuChemin = new int[2, nombreDePointsAGenerer];
         // Récupère les dimensions du tableau de manière optimisée
-        ptsCheminX = pointsDuChemin.GetLength(0);
-        ptsCheminY = pointsDuChemin.GetLength(1);
+        ptsChemAbscisse = pointsDuChemin.GetLength(0);
+        ptsChemIndex = pointsDuChemin.GetLength(1);
         
         // On va générer les points de sorte à ce qu'il ne puissent pas se croiser
         // On va découper le terrain en N partie, n étant le nombre de pts à générer
         int lastBorder = 0;
         int newBorder;
-        for (int x = 0; x < ptsCheminX; x++)
+        for (int abscisse = 0; abscisse < ptsChemAbscisse; abscisse++)
         {
-            for (int y = 0; y < ptsCheminY; y++)
+            for (int indexPt = 0; indexPt < ptsChemIndex; indexPt++)
             {
-                if(x==1){
-                    // Si i = 0, ça veut dire qu'on est sur l'axe Y du terrain
+                if(abscisse==1){
+                    // Si abscisse = 1, ça veut dire qu'on est sur l'axe Y du terrain
                     newBorder = (heightmapWidth / nombreDePointsAGenerer) + lastBorder; // On calcule dynamiquement la taille de la zone de terrain où l'on va générer le pt
-                    pointsDuChemin[x, y] = Random.Range(lastBorder, newBorder); // On génère un pt aléatoire dans la zone définie
+                    pointsDuChemin[abscisse, indexPt] = Random.Range(lastBorder, newBorder); // On génère un pt aléatoire dans la zone définie
                     // Debug.Log("Point Y=" + pointsDuChemin[x, y]);
                     lastBorder = newBorder; // On met à jour la zone de terrain où l'on va générer le pt
                 }else{
                     // Normalement, on est sur 0 (c'set un tableau de taille 2)
-                    pointsDuChemin[x, y] = Random.Range(0, heightmapWidth);
+                    pointsDuChemin[abscisse, indexPt] = Random.Range(0, heightmapWidth);
                     // Debug.Log("Point X=" + pointsDuChemin[x, y]);
                 }
             }
@@ -81,7 +88,7 @@ public class V7 : MonoBehaviour
     {
         terrainData.heightmapResolution = heightmapWidth + 1;
 
-        terrainData.size = new Vector3(heightmapWidth, terrainDeph, heightmapHeight);
+        terrainData.size = new Vector3(terrainWidth, pronfondeurDuTerrain, terrainHeight);
 
         terrainData.SetHeights(0, 0, GenerateHeights());
 
@@ -125,6 +132,83 @@ public class V7 : MonoBehaviour
     private void tracerChemin()
     {
         // On va parcourir les pointsDuChemin et tracer le chemin entre ces points
+        for(int i=0; i<nombreDePointsAGenerer-1; i++)
+        {
+            // Debug.Log("Point 1 : " + pointsDuChemin[0, i] + " " + pointsDuChemin[1, i]);
+            // Debug.Log("Point 2 : " + pointsDuChemin[0, i+1] + " " + pointsDuChemin[1, i+1]);
+            tracerChemin(pointsDuChemin[0, i], pointsDuChemin[1, i], pointsDuChemin[0, i+1], pointsDuChemin[1, i+1]);
+        }
+    }
+
+    private void tracerChemin(int x1, int y1, int x2, int y2)
+    {
+        int x = x1;
+        int y = y1;
+        // On va faire un lerp entre les points
+        float lerp = 0f;
+        while(lerp < 1f)
+        {
+            lerp += 0.01f;
+            x = Mathf.RoundToInt(Mathf.Lerp(x1, x2, lerp));
+            y = Mathf.RoundToInt(Mathf.Lerp(y1, y2, lerp));
+            //Debug.Log("x = " + x + " y = " + y);
+            float hauteur, hauteurAvant, hauteurApres;
+
+            // On va tracer le chemin en largeur
+            for(int i=0; i<largeurDuChemin; i++)
+            {
+                if(x+i < heightmapWidth && y+i < heightmapHeight)
+                {
+                    // On va calculer la hauteur du point par rapport aux coordonées d'avant, et d'après
+                    if(x+i-1 < 0 || y+i-1 < 0){
+                        hauteurAvant = 0;
+                    }else{
+                        hauteurAvant = terrain.terrainData.GetHeight(x+i-1, y+i-1);
+                    }
+                    if(x+i+1 >= heightmapWidth || y+i+1 >= heightmapHeight){
+                        hauteurApres = 0;
+                    }else{
+                        hauteurApres = terrain.terrainData.GetHeight(x+i+1, y+i+1);
+                    }
+                    // On va faire la moyenne des deux hauteurs si elles sont != 0
+                    if(hauteurAvant != 0 && hauteurApres != 0){
+                        hauteur = (hauteurAvant + hauteurApres) / 2;
+                    }else if(hauteurAvant != 0){
+                        hauteur = hauteurAvant;
+                    }else if(hauteurApres != 0){
+                        hauteur = hauteurApres;
+                    }else{
+                        hauteur = 0;
+                    }
+                    
+                    hauteur += offsetDeLaHauteur;
+                    // On va changer l'échelle de la hauteur sur 1
+                    hauteur = hauteur / terrain.terrainData.size.y;
+
+                    Debug.Log("hauteur = " + hauteur);
+                    terrain.terrainData.SetHeights(x+i, y+i, new float[,] { { hauteur, hauteur }});
+                }
+            }
+        }
+    }
+
+    void OnDrawGizmosSelected()
+    {
+        if(debugMode){
+            // On définie les paramètres de la gizmo sphere
+            Gizmos.color = Color.red;
+
+            if(pointsDuChemin != null)
+            {
+                float xPositionMultiplier = terrain.terrainData.size.x / heightmapWidth;
+                float yPositionMultiplier = terrain.terrainData.size.z / heightmapHeight;
+                // On va tracer une gizmo sphere sur chaque point du chemin
+                for(int i=0; i<nombreDePointsAGenerer; i++)
+                {
+                    Gizmos.DrawSphere(new Vector3(pointsDuChemin[0, i] * xPositionMultiplier, 0, pointsDuChemin[1, i] * yPositionMultiplier), largeurDuChemin);
+                }
+            }
+        }
     }
 
     float[,] GenerateHeights()
@@ -133,21 +217,21 @@ public class V7 : MonoBehaviour
         float[,] terrainHeightsList = new float[heightmapWidth, heightmapHeight];
         
         // On remplit le tableau
-        for (int widthIndex = 0; widthIndex < heightmapWidth; widthIndex++)
+        for (int x = 0; x < heightmapWidth; x++)
         {
-            for (int heightIndex = 0; heightIndex < heightmapHeight; heightIndex++)
+            for (int y = 0; y < heightmapHeight; y++)
             {
                 // On calcule hauteur
-                terrainHeightsList[widthIndex, heightIndex] = CalculateHeight(widthIndex, heightIndex);
+                terrainHeightsList[x, y] = CalculateHeight(x, y);
             }
         }
         
         // Pour chaque point à générer, on va définir la hauteur à 0
         for (int i = 0; i < nombreDePointsAGenerer; i++)
         {
-            terrainHeightsList[pointsDuChemin[0, i], pointsDuChemin[1, i]] = 0; // terrainHeightsList[ ptPosX, ptPosY ] = 0;
-            Debug.Log("Point: "+pointsDuChemin[0, i] + ";" + pointsDuChemin[1, i]);
+            terrainHeightsList[pointsDuChemin[1, i], pointsDuChemin[0, i]] = 0; // terrainHeightsList[ ptPosX, ptPosY ] = 0;
         }
+
         return terrainHeightsList;
     }
 
diff --git a/Assets/Terrains/terrainCourseAPied.asset b/Assets/Terrains/terrainCourseAPied.asset
index 3841391704b1421f5b1abc88baa4670b6d2fc4ca..baa1dc50838b14c30a4bfd4e924981f372240052 100644
Binary files a/Assets/Terrains/terrainCourseAPied.asset and b/Assets/Terrains/terrainCourseAPied.asset differ