RESOLU [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

RESOLU [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par freepl » 09 Mars 2022 17:56

Bonjour
imaginons 1 velo à 15 kmh puis la voiture 1 à 50 et la voiture 2 à 50 mais éloignée.
avec ce script ( ligne 180) la voiture 1 rattrape le vélo et roule à 15 km.
Peu après la voiture 2 rattrape la voiture 1, mais "elle la traverse" sans prendre sa vitesse jusqu'à ce qu'elle détecte le vélo et là elle se met bien à 15 kmh.

Je ne vois pas le bug qui fait qu'elle ne prenne pas la vitesse de la voiture.

Ligne de code disant de se mettre à la vitesse du VEHICULE de devant et du VELO

Code : Tout sélectionner

////// Pour que  vehicule se mette à la vitesse du vehicule qui est devant
					
					if (other.tag == "VEHICULE") {
						coupeDetecteur = other.GetComponent<TrajetVl>().detecteur;
						kmhActuel = other.GetComponent<TrajetVl>().kmh;  //
					}
					//////////////////////////
					/////// Pour que  vehicule se mette à la vitesse du velo qui est devant
					
					if (other.tag == "VELO") {
						coupeDetecteur = other.GetComponent<TrajetVl>().detecteur;
						kmhActuel = other.GetComponent<TrajetVl>().kmh;  //
					}
					//////////////////////////


Code complet

Code : Tout sélectionner

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
// la fonction de trajet aérien est bloquée
/* Create by :
 * Fabian Métayer
 * 27/10/2015
 * 
 * Modifle 15-1-2019 pour véhicules et perso escalier
 * 
 * 
 * Modifier 04-03-2022 pour Tunnel 
 * 
 * AJOUTER AU 3° POINTS DE TOUS LES TRAJETS le cube de detecteur ON du PREFAB  Stop_Cédez le passage FOS
 * car quand on a mofidié  si vl touche le vl de devant il prend sa vitesse  
 * ça a mis à false coupeDetecteur donc les vehicules ne reçoivent plus de consigne 
 * ça bug pour les clignotants et la camera aérienne regardait dans son dos
 * 
 * si 2 vl se croisent sur la MEME trajectoire mais en sens inverse cela désactive le détecteur
 * donc il faudra mettre APRES le croisement le cube de detecteur ON du PREFAB  Stop_Cédez le passage FOS
 * 
 * 
 */
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
	private GameObject eclairage;             //private
	private bool dansUnTunnel = false;       // pour allumage des feux dans un tunnel, le tunnel est tagué en TUNNEL et a la forme 3D du tunnel réel
	
	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");
	}
	
	
	/*
    // version du createur DOTWEENN
    void LateUpdate () {
        //nombre de point * distance entre point / km/h / 3.6
        time = (tabt.Length * mEntrePoint)/(kmh / 3.6f);
        if (start) {			
            transform.position = iTween.PointOnPath(tabt, fraction);
			
            fraction += Time.deltaTime / time;
            if (fraction > 1.0f)
                fraction = 0.0f;
			
            transform.LookAt(iTween.PointOnPath(tabt, fraction + 0.001f));
         }
    }*/
	
	IEnumerator WalkThePath () {
		while(true){
			time = ((tabtList.Length * mEntrePoint)/(kmhActuel / 3.6f)*0.88f);//   original (tabtList.Length * mEntrePoint)/(kmhActuel / 3.6f)   
			/*
			scene 2x2
			362 x 5m = 1 810m 
				130 kmh/h fait 36.1111 mn/s        donc   1 810m à 130km/h  fait  50 sec / 55 sec réelles donc x0.91 pour avoir 50 sec
				110 kmh/h fait 30.5555 mn/s        donc   1 810m à 110km/h  fait  59 sec / 64 sec réelles donc x0.91 pour avoir 59 sec


             scene bi-di
             305 x 5m = 1 525m 
				90 kmh/h fait 25     mn/s        donc   1 525m à 90km/h  fait  61 sec /  66 sec réelles donc x0.91 pour avoir 60 sec
				50 kmh/h fait 13.888 mn/s        donc   1 525m à 50km/h  fait  110 sec/ 117 sec réelles donc x0.91 pour avoir 107 sec

			 */
			
			
			
			transform.position = iTween.PointOnPath (tabtList, fraction);
			fraction += Time.deltaTime / time;
			if (fraction > 1.0f)
				fraction = 0.0f;
			
			/* modif pour vehicule ou personnage*/
			
			
			if (gameObject.tag == "VELO" || gameObject.tag == "VEHICULE" || gameObject.tag == "BUS"/*Et tous les autres comme MOTO, CAMION, etc*/) 
			{
				transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.08f)); //0.05F  plus c'est petit est plus de tremblote pour s'orienter sur le point à 0.005m
			}
			
			
			else //c'est les pietons, qui restent verticaux, ou la camera aérienne qui n'a pas besoin de suivre la pente du terrain 
			{
				Vector3 direction =iTween.PointOnPath(tabtList, fraction + 0.08f); //0.05F
				direction.y = this.transform.position.y;
				transform.LookAt(direction);
			}
			
			
			
			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 (Collider other in toucheDetecteur) {
					if (other.tag == "CoupeDetecteur") {
						coupeDetecteur = other.GetComponent<CoupeDetecteur>().detecteur;
						kmhActuel = 30.0f;// pour degager les croisements  à 30 km/h 
						// tant que la sphere du détecteur est dans l'objet sa vitesse est de 30 km/h
						// apres le VL reprend sa vitesse normale
					}
					
					if (other.tag == "CoupeDetecteurAutre") {
						coupeDetecteur = other.GetComponent<CoupeDetecteur>().detecteur;
						kmhActuel = 4.0f; 
					}
					
					/////// Pour que  vehicule se mette à la vitesse du vehicule qui est devant
					
					if (other.tag == "VEHICULE") {
						coupeDetecteur = other.GetComponent<TrajetVl>().detecteur;
						kmhActuel = other.GetComponent<TrajetVl>().kmh;  //
					}
					//////////////////////////
					
					
					
					
					
					/////// Pour que  vehicule se mette à la vitesse du velo qui est devant
					
					if (other.tag == "VELO") {
						coupeDetecteur = other.GetComponent<TrajetVl>().detecteur;
						kmhActuel = other.GetComponent<TrajetVl>().kmh;  //
					}
					//////////////////////////
					
					if (coupeDetecteur == false) {
						if (other.tag == "ModifVitesse") {
							kmh = other.GetComponent<Panneau>().vitesse;
							
							
						} else if (other.tag == "EntreeInstersection") {
							kmh = GetPrioriteVitesse(other);
						} 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;
			
		}
	}
	//------------------------------------------------------------------------------------
	//                allumage et extinction des feux dans un tunnel
	
	void OnTriggerEnter(Collider other) //ENTREE DU TUNNEL 
		//le collider MAYA 3D en forme de tunnel doit etre tagué TUNNEL et que ce script est attaché a un objet tagué VEHICULE ou VELO
	{                               
		if (other.tag == "TUNNEL" && (gameObject.tag == "VEHICULE" || gameObject.tag == "VELO")) 
		{
			dansUnTunnel = true;
		}
	}
	
	void OnTriggerExit(Collider other) //SORTIE DU TUNNEL (UN SEUL COLLIDER ENTIER MAYA 3D en forme de tunnel)
	{
		if (other.tag == "TUNNEL" && (gameObject.tag == "VEHICULE" || gameObject.tag == "VELO"))
		{
			dansUnTunnel = false;
		}
	}
	
	
	// ------------------------------
	void GestionLumiere () {
		if (eclairage != null)
		{
			// SI TU ES DANS UN TUNNEL TU ALLUMES LES FEUX QUEL QUE SOIT LE JOUR/NUIT
			if (dansUnTunnel) {
				eclairage.SetActive (true);
			}
			// SINON C'EST LE JOUR/NUIT QUI S'EN OCCUPE
			else {
				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;
		}
	}
	
	float GetPrioriteVitesse(Collider other){
		Priorite priorite = other.GetComponent<Priorite> ();
		if (priorite != null) {
			return priorite.vitesse;
		} else {
			PrioriteOllioules prioriteOllioules = other.GetComponent<PrioriteOllioules> ();
			return prioriteOllioules.vitesse;
		}
	}
	
}
vl 1 suit le velo à 15 km
ScreenShot008.jpg
ScreenShot008.jpg (20.96 Kio) Consulté 1790 fois
vl 2 traverse vl1
ScreenShot009.jpg
ScreenShot009.jpg (25.97 Kio) Consulté 1790 fois
VL1 et vl2 confondus à vitesse du velo
ScreenShot010.jpg
ScreenShot010.jpg (42.15 Kio) Consulté 1790 fois
Dernière édition par freepl le 10 Mars 2022 12:55, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par boubouk50 » 09 Mars 2022 18:25

J'ai pas tout lu.

Je vois que tu affectes kmhActuel en prenant kmh.
Donc quand la voiture 1 arrive sur le vélo, kmhActuel prend 15 mais son kmh reste à 50.
Quand la voiture 2 arrive sur la voiture 1, elle prend le kmh de voiture 1, donc 50, donc elle continue. Elle prend ensuite le kmh du vélo qui est a 15.
Il ne faut donc pas lire le kmh mais le kmhActuel.

Code : Tout sélectionner

kmhActuel = other.GetComponent<TrajetVl>().kmhActuel;
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par freepl » 09 Mars 2022 21:09

Merci

Une question ( de plus ) pourrais tu m'expliquer un peu plus clairement le principe d'accélération/ralentissement

Code : Tout sélectionner

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
			}
Je l'avais annoté au tout début mais je m'aperçois que mon explication n'est pas aussi claire que ce que je pensais.
kmhActuel+=0.7f, c'est l'accélération mais 0.7 fois quoi ?

Merci

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par jmhoubre » 09 Mars 2022 22:07

Bonjour,

je te conseille cette vidéo de Sebastian Lague : Kinematics Equations, qui explique tout cela. Il y a aussi deux autres vidéos utiles sur le problème du missile ou de la balle.

Sinon, en bref : une vitesse c'est une accélération fois une durée.
Dernière édition par jmhoubre le 10 Mars 2022 10:57, édité 1 fois.

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par freepl » 10 Mars 2022 09:52

Merci et en plus on a le choix de la langue :super: , la 3° est super come explication

donc kmhActuel += 0.7f; veut dire qu'à chaque calcul du pc, la vitesse monte par pas de 0.7 ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par boubouk50 » 10 Mars 2022 10:12

Cela veut dire que la vitesse augmente de 0.7 à chaque Update, donc 21kmh par seconde quand tu es à 30fps, 42 si tu es à 60.
Pour que ce soit toujours la même accélération quelque soit le taux de rafraichissement (framerate), il faut le multiplier par Time.deltaTime (et l'ajuster du coup sinon l'accélération sera de 0.7 par seconde)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par freepl » 10 Mars 2022 10:32

Code : Tout sélectionner

	
	public float kmh; // vitesse voulue
	public float kmhActuel; // vitesse reelle
	......
	......
	
	if (kmhActuel < kmh){
				kmhActuel += 0.7f*Time.deltaTime;
				// acceleration de la vitesse de 0.7kmh par seconde(?) jusqu'à ce que kmhActuel ==kmh
			} else if (kmhActuel > kmh && kmh != 0) {
				kmhActuel -= 0.9f*Time.deltaTime;
				// decceleration de la vitesse de 0.9kmh par seconde(?) jusqu'à ce que kmhActuel ==kmh
			} else if (kmh == 0) {
				kmhActuel = 0;// on stoppe brutalement le VL
			}else if (kmhActuel == kmh ){
				kmhActuel ==kmh; 
			}

si j'ai bon à chaque calcul du temps" *Time.deltaTime", j'ajoute 0.7 (m/s) ou j'enlèe 0.9 (m/s) à ma vitesse
jusqu'à ce que ma vitesse actuelle "kmhactuel" soit égale à la vitesse voulue "kmh" ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par boubouk50 » 10 Mars 2022 11:06

Oui.
Tu peux voir ça comme une interpolation linéaire si tu veux.
En multipliant une valeur par deltaTime, tu t'assures qu'elle vaudra sa valeur complète au bout d'une seconde.

Ex:
x = x + 7 * deltaTime;
x vaudra 7 lorsque la somme des deltaTimes vaudra 1. Tu fais donc du "7 par seconde" quelque soit le taux de rafraîchissement de la fenêtre.
Ainsi, si tu veux que ta voiture prenne 15 kmh en une seconde, il te faut remplacer 0.7 par 15.
Si tu veux qu'elle freine de 20 kmh en une seconde, il te faut remplacer 0.9 par 20.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par freepl » 10 Mars 2022 11:18

Code : Tout sélectionner

			if (kmhActuel < kmh){
				kmhActuel += 15f*Time.deltaTime;
				// acceleration de la vitesse de 15 km/h par seconde
			} else if (kmhActuel > kmh && kmh != 0) {
				kmhActuel -= 25f*Time.deltaTime;
				// decceleration de la vitesse de 25kmh par seconde
			} else if (kmh == 0) {
				kmhActuel = 0;// on stoppe brutalement le VL
			}else if (kmhActuel == kmh ){
				kmhActuel == kmh; 
			}
J'ai mis en dernière condition que si kmhActuel = kmh, donc que la vitesse du véhicule qu'il a à l'instant t soit égale à la vitesse désirée , il ne doit plus y avoir d'accélération ou de freinage . Est ce utile ?
.. et j'ai ce code erreur aussi à cette ligne

Code : Tout sélectionner

Assets/SCRIPT/Route/TrajetVl.cs(181,49): error CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statement

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] récuperer vitesse du véhicuelde devant si velo OK sinon non !?

Message par boubouk50 » 10 Mars 2022 11:36

Code : Tout sélectionner

}else if (kmhActuel == kmh ){
	kmhActuel == kmh; 
}
tu as mis == au lieu de =
Cela est inutile, s'ils sont déjà égaux pas besoin de les rendre égaux...
Ce que tu veux c'est ne pas dépasser cette valeur.

Actuellement, ton véhicule va accélérer puis décélérer puis accélérer puis décélérer à l'infini.
Il faut donc voir s'il faut borner ta vitesse après chaque changement de vitesse.

Code : Tout sélectionner

// Mettre la condition forte en premier
if (kmh == 0)
{
	kmhActuel = 0;// on stoppe brutalement le VL
}
else if (kmhActuel < kmh) //
{
	// En utilisant un minimum tu bornes ta vitesse entre la vitesse en cours et la vitesse à prendre (kmh)
	kmhActuel = Mathf.Min (kmhActuel + 15f*Time.deltaTime, kmh);
	// acceleration de la vitesse de 15 km/h par seconde
} else if (kmhActuel > kmh)
{
	// En utilisant un maximum, tu bornes ta vitesse entre la vitesse en cours et la vitesse à prendre (kmh)
	kmhActuel = Mathf.Max (kmhActuel - 25f*Time.deltaTime, kmh);
	// decceleration de la vitesse de 25kmh par seconde
}
Ici, si kmh vaut 0 le véhicule s'arrête net.
Si tu es en dessous de kmh, tu vas accélérer jusqu'à l'atteindre, sinon tu vas décélérer jusqu'à l'atteindre.

Cette approche n'est pas très bonne puisqu'une fois la vitesse souhaitée obtenue, tu vas continuer de faire des calculs de vitesse inutiles.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Scripting »