Page 1 sur 1

[MY_AL] Réactiver le clignotement de feux

Publié : 23 Jan 2020 14:54
par freepl
Bonjour et bonne année.

J'ai un script de clignotement de feux placé sur un objet.

Code : Tout sélectionner

#pragma strict

public var temps = 1.0;


function Start () {

while (true) {
			yield WaitForSeconds(temps);
			light.enabled = !light.enabled;
		}

}


J'ai un autre objet .
trigger enter : il doit désactiver le clignotement ( ça s'est bon)
En trigger exit, le clignotement doit être actif de nouveau.

Mais avec mon script, en trigger exit, je n'ai plus de clignotement , juste des feux fixes , de-là vient mon pb.
Comment réactiver la fonction de clignotement svp ?
Merci

Code : Tout sélectionner

#pragma strict

 //déclenche l'arret des 3 feux clignotants orange
// mise au vert pour voie du bus
// mise au rouge pour les 2 voies de coté pour voie du bus


var feuOrangeDeclencheur : GameObject;
var feuOrangeDroit : GameObject;
var feuOrangeGauche : GameObject;
var petitfeuOrangeDeclencheur : GameObject;
var petitfeuOrangeDroit : GameObject;
var petitfeuOrangeGauche : GameObject;

var feuVertDeclencheur : GameObject;
var petitfeuVertDeclencheur : GameObject;


var feuRougeDroit : GameObject;
var feuRougeGauche : GameObject;
var petitfeuRougeDroit : GameObject;
var petitfeuRougeGauche : GameObject;


var cube0kmDroit : GameObject;
var cube50kmDroit : GameObject;
var cube0kmGauche : GameObject;
var cube50kmGauche : GameObject;

var poteaupietonVertDeclencheur : GameObject;
var poteaupietonVertDroit : GameObject;
var poteaupietonVertGauche : GameObject;
var poteaupietonRougeDeclencheur : GameObject;
var poteaupietonRougeDroit : GameObject;
var poteaupietonRougeGauche : GameObject;

var grandpietonVertDeclencheur : GameObject;
var grandpietonVertDroit : GameObject;
var grandpietonVertGauche : GameObject;
var grandpietonRougeDeclencheur : GameObject;
var grandpietonRougeDroit : GameObject;
var grandpietonRougeGauche : GameObject;




function Start () {

	
feuOrangeDeclencheur.SetActive(true);	
feuOrangeDroit.SetActive(true);	
feuOrangeGauche.SetActive(true);	
petitfeuOrangeDeclencheur.SetActive(true);	
petitfeuOrangeDroit.SetActive(true);	
petitfeuOrangeGauche.SetActive(true);	


cube0kmDroit.SetActive(false);
cube50kmDroit.SetActive(true);	
cube0kmGauche.SetActive(false);
cube50kmGauche.SetActive(true);	
	
}


function Update() {
		}
		
		
function OnTriggerEnter (other : Collider)
   {
	
// Tous les feux orange sont éteints OK ***********************   
feuOrangeDeclencheur.SetActive(false);
feuOrangeDroit.SetActive(false);
feuOrangeGauche.SetActive(false);	
petitfeuOrangeDeclencheur.SetActive(false);
petitfeuOrangeDroit.SetActive(false);
petitfeuOrangeGauche.SetActive(false);


// Modif des vitesses OK ***********************
cube0kmDroit.SetActive(true);
cube50kmDroit.SetActive(false);	
cube0kmGauche.SetActive(true);
cube50kmGauche.SetActive(false);


   
   
	}
function OnTriggerExit (other : Collider)
   {
   
   // Pas bon Feux fixes
feuOrangeDeclencheur.SetActive(true);
feuOrangeDroit.SetActive(true);
feuOrangeGauche.SetActive(true);
petitfeuOrangeDeclencheur.SetActive(true);
petitfeuOrangeDroit.SetActive(true);
petitfeuOrangeGauche.SetActive(true);
   
	}

   

Re: [MY_AL] Réactiver le clignotement de feux

Publié : 23 Jan 2020 15:11
par boubouk50
Désactiver un gameObject revient aussi à stopper ses components, donc ses scripts.
Ta boucle est donc arrêtée, il faut la relancer. A noter que le Start() ne se fait qu'une seule fois.
Tu as OnEnable () pour cela.

Re: [MY_AL] Réactiver le clignotement de feux

Publié : 23 Jan 2020 15:39
par freepl
Salut

J'ai une question avec les fonctions.
J'ai la fonction Ontrigger et les fonctions OnDisable et OnEnable ( activation désactivation des scripts).
Comment les "ranger dans le script ?

Je ne peux mettre les fonctions OnDisable et OnEnable dans la fonction ontrigger ?

Code : Tout sélectionner

function OnTriggerEnter (other : Collider)
   {
	void OnDisable()
    {
        // arret feux orange  ***********************   
	feuOrangeDeclencheur.SetActive(false);
	feuOrangeDroit.SetActive(false);
	feuOrangeGauche.SetActive(false);	
	petitfeuOrangeDeclencheur.SetActive(false);
	petitfeuOrangeDroit.SetActive(false);
	petitfeuOrangeGauche.SetActive(false);
    }

    void OnEnable()
    {
        // reprise feux orange  ***********************   
	feuOrangeDeclencheur.SetActive(true);
	feuOrangeDroit.SetActive(true);
	feuOrangeGauche.SetActive(true);	
	petitfeuOrangeDeclencheur.SetActive(true);
	petitfeuOrangeDroit.SetActive(true);
	petitfeuOrangeGauche.SetActive(true);
    }
}

Re: [MY_AL] Réactiver le clignotement de feux

Publié : 23 Jan 2020 18:27
par boubouk50
Quelle idée !?!?
Pourquoi????
Lis la documentation, regarde des exemples et surtout APPRENDS les bases de la programmation. Après toutes ces années à programmer ton bidule, ne pas savoir ce qu'est une fonction et comment ça s'utilise, est aberrant.
Ce n'est plus une impression depuis longtemps, nous ne cessons de te le répéter: prend le temps d'apprendre les bases! Si tu l'avais fait il y a plusieurs années, aujourd'hui tu ne perdrais pas ton temps pour ce genre de "problème" et tu aurais un programme efficace et plus poussé.