Page 1 sur 1

Ti Traffic AI sur l'asset store : qui connait ?

Publié : 23 Déc 2014 13:37
par freepl
Bonjour

Pour mes maquettes routières j'ai vu sur l'asset store ceci
https://www.assetstore.unity3d.com/en/#!/content/21047

vidéo
https://www.youtube.com/watch?v=ahMqQC4iW18

Est-ce que quelqu'un l'a pris ?
Le pack est livré , me semble t'il avec une seule voiture (?) et sur la vidéo j'ai cru comprendre qu'il fallait la cloner .
Donc on a qu'un seul type de voiture.


Mon travail a acheté des packs de véhicules sur l'asset store.
Peut-on les utiliser avec ce programme ?


Merci de votre aide

Re: Ti Traffic AI sur l'asset store : qui connait ?

Publié : 23 Déc 2014 14:37
par F@B
de simple tween sur une spline c'est pas plus simple?

Re: Ti Traffic AI sur l'asset store : qui connait ?

Publié : 23 Déc 2014 15:54
par boubouk50
S'il faut gérer les feux, les stops, les piétons, etc. Mieux vaut ce genre de plug.

Je ne connais pas ce plug, mais c'est certain que tu puisses y mettre les véhicules que tu veux. Par contre pour la gestion des collisions et des distances, il faut faire gaffe à la longueur des véhicules (un camion et une twingo ne prennent pas la même place sur une route)

Re: Ti Traffic AI sur l'asset store : qui connait ?

Publié : 23 Déc 2014 19:31
par freepl
ok

Merci et passes de bonnes fêtes

Re: Ti Traffic AI sur l'asset store : qui connait ?

Publié : 23 Déc 2014 19:41
par freepl
F@B a écrit :de simple tween sur une spline c'est pas plus simple?
Je me sers de ITWEEN et de ce script

Code : Tout sélectionner

/* 


Script basé sur ITWEEEN.
Avance.Pause.Reprise. Stop  et Retour par étape

Renseigner dans l'INSPECTOR le nom du path 
                            le temps de parcours
                            la cible 



 utiliser plutôt iTween.PutOnPath () et/ou iTween.PointOnPath (). 
 Le dernier paramètre pour chacune de ces deux fonctions est la fraction sur la trajectoire. 
 Une valeur de 0,0 place l'objet au début de la trajectoire. 
 A 1,0 place l'objet à la fin de la trajectoire. 
 
 Pour votre retour rapide, vous auriez à calculer ou sauver la faction pour chaque position de rembobinage et 
 changer la fraction que vous passez à PutOnPath () ou PointOnPath ().
 
 
 Retour par étape fait reculer la caméra par petit saut, pas en continu
 Pour faire varier la "longueur" du retour, faire varier dans le GUI.Button "Reculer par étape", la valeur fraction -= 0.5 / time;
                 Plus la valeur est petite, plus le retour en arrière est petit

*/


#pragma strict 
public var target_Path1 : GameObject; // donner le path de MAYA
public var time = 10.0;               // donner le temps de parcours     35 egal 50 km/h  63 egal 90 km/h   77 egal 110 km/h   91 egal 130 km/h
//public var target : Transform ; // ligne a activer et a renseigner par l'objet que doit regarder la caméra




private var tabt : Transform[];
 private var running = false; 
 private var paused = false;
 private var fraction = 0.0; 
 
 function SetPath (pathObject : GameObject){
     var id : int = 0;
     tabt =null;
     tabt = new Transform[pathObject.transform.childCount];
     for(var child: Transform in pathObject.transform)     {
            tabt[id++] = child.transform;
                 }
  WalkThePath();
                                           }
  
 
 
 function WalkThePath() {    
 paused = false;
 running = true;
 fraction = 0.08;  // 1er départ de la vidéo debut du parcours si 0.8 alors à 80%  

  while (running) {
         transform.position = iTween.PointOnPath(tabt, fraction);
         
 if (!paused)
          fraction += Time.deltaTime / time;
 if (fraction > 1.0) fraction = 0.0; 
 /* 
 le trajet commence la première fois au début puis si on varie la valeur de "fraction" 
 cela permet de recommencer le trajet où l'on veut  :   
              0 Début du trajet  
              1 Fin du trajet 
              0.8 à 80% du parcours 
 
 DONC s'il on veut commencer et REcommencer le trajet à 80% du parcours il faut:
  _ function WalkthePath, mettre fraction = 0.8 (1 ° départ de la vidéo)
  _ if (fraction > 1.0) fraction = 0.8 
 
 
 */
        var futurePos = iTween.PointOnPath(tabt, fraction + 0.0001); 
        transform.LookAt(futurePos); //ligne à garder pour que la camera regarde devant et a desactiver pour que la caméra regarde une cible
		//transform.LookAt(target);  //ligne à activer pour que la caméra regarde une cible
               yield;
                   } 
                      }
                   

// pour la suite , soit on veux que l'animation parte directement alors activer function Start et neutralise function OnGui
//                 soit on veut des boutons, laisser tel que




/*function Start()
    {
           SetPath(target_Path1);    
    } 
    */
   
     
     // Les boutons de GUI--------------------------                   
function OnGUI(){
    if(GUI.Button(Rect(290,80,100,20), "commencer"))    
    {
           SetPath(target_Path1);    
    }    
   
   
     if(GUI.Button(Rect(390,80,100,20), "Pause"))    
     {  
           paused = true;    
     }     
     
     
     if(GUI.Button(Rect(490,80,100,20), "Reprise"))    
     {
            paused = false;    
     }     
     
     if(GUI.Button(Rect(390,100,120,20), "Reculer par étape")) 
     {       
           fraction -= 0.2 / time; //   Varier cette valeur permet de faire des retours en arrière par étape plus petite (peut être > à 1) 
           if (fraction < 0.0) fraction = 0.0;   
     }    
     
     
     
     if(GUI.Button(Rect(510,100,120,20), "Avancer par étape")) 
     {       
           fraction += 0.2 / time; //   Varier cette valeur permet d'avancer par étape 
           if (fraction < 0.0) fraction = 0.0;   
     }    
     
       if(GUI.Button(Rect(590,80,100,20), "Stop"))    
      {
          running = false;    
      }
          }
Mais je voudrais que mes véhicules accélèrent, freinent etc en fonction d'objets avec des collider ( zone de ralentissement, feux de stop..)
ce que j'ai avec ITWEEN ne me permet que de suivre une courbe avec une vitesse fixe.
Peux être avec des raycast qui modifient la vitesse des véhicules mais je ne sais pas le faire alors je regarde ce qui existe.
Bien que ce qui existe nécessite des wheelcolliders alors que je n'en ai pas besoin, juste un déplacement avec modification de la vitesse

Re: Ti Traffic AI sur l'asset store : qui connait ?

Publié : 28 Déc 2014 00:24
par Alesk
Hello,

Il va falloir préciser un peu plus ce que tu veux que ton script puisse faire ou non :

- La durée totale du parcours doit-elle être figée ?
- Doit-on pouvoir commencer à une durée déterminée de parcours ou bien seulement une distance parcourue ? par exemple 80% du temps qu'il faut mettre pour arriver à la destination ou bien 80% de la distance totale ?

Car si tu comptes intégrer des accélérations, freinages, etc... la vitesse sera variable, et ça sera donc beaucoup plus difficile de se fixer sur ce genre de cas.

Actuellement, tu n'as a disposition que la fonction PointOnPath() qui te permet de trouver la position correspondant à tel pourcentage de progression sur la courbe définie pour le chemin.
Ce dont tu as besoin c'est d'une méthode te donnant la position à partir de la distance parcourue sur cette courbe.
Il faut donc pour cela connaitre le longueur totale de la courbe, qui peut être connue en faisant simplement la somme des distances séparant tous les points de cette courbe.
Une fois que tu as cette distance totale, tu fais évoluer une variable "distance_parcourue" qui va s'incrémenter en fonction de la vitesse de ton véhicule (donc avec un calcul bien plus cohérent en km/h ou m/s) et qui sera parfaitement compatible avec des freinages et accélérations.

De là, tu fais "distance_parcourue / distance_totale" pour retrouver le pourcentage à utiliser dans PointOnPath () pour chopper la position où afficher ton véhicule.

Voilou ^^

Re: Ti Traffic AI sur l'asset store : qui connait ?

Publié : 28 Déc 2014 10:14
par freepl
Merci