Page 1 sur 1

Combinaison fonction Et / fonction OU

Publié : 21 Fév 2015 12:18
par freepl
Bonjour

Dans ma maquette, j'ai 4 variantes de trajet.
J'ai également 2 caméras trajet par variante.
Mais j'ai un bug. Si la variante affichée et les cameras ne sont pas coordonnées , par exemple variante V1 affichée et camera V2 , l'affichage est gelé.

J'ai fait un script qi en fonction de la variante active et de la caméra active, on affiche ( ou pas) une image

Donc je fais
if(
si variante V1 vraie et caméra avion V2b vraie
ou variante V1 vraie et caméra voiture V2b vraie
ou variante V1 vraie et caméra avion V4 vraie
ou variante V1 vraie et caméra voiture V4 vraie

ou variante V2b vraie et caméra avion V1 vraie
ou variante V2b vraie et caméra voiture V1 vraie
ou variante V2b vraie et caméra avion V4 vraie
ou variante V2b vraie et caméra voiture V4 vraie

ou variante V4 vraie et caméra avion V1 vraie
ou variante V4 vraie et caméra voiture V1 vraie
ou variante V4 vraie et caméra avion V2b vraie
ou variante V4 vraie et caméra voiture V2b vraie
)
alors j'affiche une image
{ image vraie ; }

sinon je masque l'image
else
{ image fausse; }

-----------------------------
J'ai ce msg d'erreur alors que je suis en codage js.
''(23,25): BCE0026: 'void' cannot be used in a boolean context.''
Il est répété à chaque fois entre tousles SetActive et les (true)

Code : Tout sélectionner

.SetActive(true)



J'ai 2 questions :
1 Je ne comprends pas l'erreur
2 comment simplifier mon code qui je pense peut-être bcp amélioré

Merci

voici mon code

Code : Tout sélectionner

#pragma strict

// affecter les différentes variantes
var varianteV0 : GameObject;
var varianteV1 : GameObject;
var varianteV2b : GameObject;
var varianteV4 : GameObject;

// affecter les différentes cameras
var camV0Avion : GameObject;
var camV1Avion : GameObject;
var camV1Voiture : GameObject;
var camV2bAvion : GameObject;
var camV2bVoiture : GameObject;
var camV4Avion : GameObject;
var camV4Voiture : GameObject;

// affecter l'image erreur compatibilité caméra et variante affichée
var ErreurAffichage : GameObject;

function UpDate () {

if (varianteV0.SetActive(true) && camV1Avion.SetActive(true) || varianteV0.SetActive(true) && camV1Voiture.SetActive(true) || varianteV0.SetActive(true) && camV2bAvion.SetActive(true) || varianteV0.SetActive(true) && camV2bVoiture.SetActive(true) || varianteV0.SetActive(true) && camV4Avion.SetActive(true) ||
varianteV0.SetActive(true) && camV4Voiture.SetActive(true) ||


varianteV1.SetActive(true) && camV0Avion.SetActive(true) ||  varianteV1.SetActive(true) && camV2bAvion.SetActive(true) || varianteV1.SetActive(true) && camV2bVoiture.SetActive(true) || varianteV1.SetActive(true) && camV4Avion.SetActive(true) ||
varianteV1.SetActive(true) && camV4Voiture.SetActive(true) ||


varianteV2b.SetActive(true) && camV0Avion.SetActive(true) || varianteV2b.SetActive(true) && camV1Avion.SetActive(true) ||varianteV2b.SetActive(true) && camV1Voiture.SetActive(true) ||  varianteV2b.SetActive(true) && camV4Avion.SetActive(true) ||
varianteV2b.SetActive(true) && camV4Voiture.SetActive(true) ||


varianteV4.SetActive(true) && camV0Avion.SetActive(true) || varianteV4.SetActive(true) && camV1Avion.SetActive(true) ||varianteV4.SetActive(true) && camV1Voiture.SetActive(true) ||  varianteV4.SetActive(true) && camV2bAvion.SetActive(true) ||
varianteV4.SetActive(true) && camV2bVoiture.SetActive(true)  )

{ ErreurAffichage.SetActive(true); } // j'affiche l'image d'erreur

else

{ ErreurAffichage.SetActive(false); } // sinon je n'affiche pas l'image d'erreur

}


Re: Combinaison fonction Et / fonction OU

Publié : 21 Fév 2015 13:09
par Matt45400

Re: Combinaison fonction Et / fonction OU

Publié : 21 Fév 2015 14:05
par freepl
salut

j'ajoute donc

Code : Tout sélectionner

public var ActiveSelf : bool; 
et je remplace tous les

Code : Tout sélectionner

varianteV0.SetActive(true) && camV1Avion.SetActive(true) ||......
par

Code : Tout sélectionner

varianteV0.activeSelf && camV1Avion.activeSelf || .....

Re: Combinaison fonction Et / fonction OU

Publié : 21 Fév 2015 14:30
par Matt45400
C'est ça sauf que tu n'as pas besoin de rajouter cette ligne

Code : Tout sélectionner

public var ActiveSelf : bool;

Re: Combinaison fonction Et / fonction OU

Publié : 21 Fév 2015 16:44
par freepl
Merci

Re: Combinaison fonction Et / fonction OU

Publié : 21 Fév 2015 18:43
par freepl
J'ai modifié le script pour le simplifier.

Si la variante affichée et ses caméras sont actives alors je n'affiche pas l'image, sinon je l'affiche.

Le script fonctionne mais l'image (var ErreurAffichage : GameObject; // guitexture ) s'affiche en permanence
quel est le pb ?
J'ai mis SetActive aux résultats du if car ce n'est plus une variable booleénne, ce n'estqu'un objet


Merci

Code : Tout sélectionner

#pragma strict

// affecter les différentes variantes
var varianteV0 : GameObject;
var varianteV1 : GameObject;
var varianteV2b : GameObject;
var varianteV4 : GameObject;

// affecter les différentes cameras
var camV0Avion : GameObject;
var camV1Avion : GameObject;
var camV1Voiture : GameObject;
var camV2bAvion : GameObject;
var camV2bVoiture : GameObject;
var camV4Avion : GameObject;
var camV4Voiture : GameObject;

// Camera  qui voit tout et le msg d'erreur, à la meme place que la cam principale sans script de mvt
var camErreur : GameObject;


// affecter l'image erreur compatibilité caméra et variante affichée
var ErreurAffichage : GameObject; // guitexture 

/*
Si les caméras sont en concordance avec les versions
on n'affiche pas la camera (camErreur) qui voit l'image d'erreur (ErreurAffichage)
sinon, on l'affiche
*/


function UpDate () {

if (varianteV0.activeSelf && camV0Avion.activeSelf ||

varianteV1.activeSelf && camV1Avion.activeSelf ||  varianteV1.activeSelf && camV1Voiture.activeSelf ||

varianteV2b.activeSelf && camV2bAvion.activeSelf || varianteV2b.activeSelf && camV2bVoiture.activeSelf ||

varianteV4.activeSelf && camV4Avion.activeSelf ||varianteV4.activeSelf && camV4Voiture.activeSelf  )

{ camErreur.SetActive(false) ;
ErreurAffichage.SetActive(true) ; } // je ne vois pas la caméra qui voit l'image ni l'image

else

{ camErreur.SetActive(true) ;       // sinon je vois  la caméra qui voit l'image  et je vois  l'image
ErreurAffichage.SetActive(true) ;} 
}


Re: Combinaison fonction Et / fonction OU

Publié : 21 Fév 2015 18:53
par Matt45400
Mettre false dans le else ?

Code : Tout sélectionner

ErreurAffichage.SetActive(false);

Re: Combinaison fonction Et / fonction OU

Publié : 21 Fév 2015 19:17
par freepl
j'ai testé aussi en inversant le résultat.

Code : Tout sélectionner

{ camErreur.SetActive(true) ;
ErreurAffichage.SetActive(true) ; } // je ne vois pas la caméra qui voit l'image ni l'image

else

{ camErreur.SetActive(false) ;       // sinon je vois  la caméra qui voit l'image l'image
ErreurAffichage.SetActive(false) ;} 
En clair, je voudrais que :
si la variante V1 est affichée avec la caméraV1 avion ou si la variante V1 est affichée avec la caméraV1 camion
alors
on masque la var camErreur (caméra) et la var ErreurAffichage (guitexture)

Sinon
on affiche la var camErreur (caméra) et la var ErreurAffichage (guitexture)

Il est vrai que je ne suis pas bon en script mais là je pense que mon raisonnement et mon script sont bon :?