[MY_AL] Réactiver le clignotement de feux

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

[MY_AL] Réactiver le clignotement de feux

Message par freepl » 23 Jan 2020 14:54

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);
   
	}

   

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

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

Message par boubouk50 » 23 Jan 2020 15:11

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.
"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éactiver le clignotement de feux

Message par freepl » 23 Jan 2020 15:39

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);
    }
}

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

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

Message par boubouk50 » 23 Jan 2020 18:27

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é.
"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

Verrouillé

Revenir vers « (Js) Javascript »