Test de conditions (JS)

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Symb
Messages : 3
Inscription : 13 Jan 2011 00:35

Test de conditions (JS)

Message par Symb » 13 Jan 2011 00:41

Salut'

J'ai un petit problème de javascript sur mon projet Unity 3D. Je n'arrive pas à tester des conditions (par exemple, tester la position d'un objet ou bien s'il est visible ou non).

J'étais partis sur du :

Code : Tout sélectionner

if (cube_index.position.y == "3" )
ou

Code : Tout sélectionner

if (fumee.renderer.enabled == false )
mais aucun des deux ne fonctionne. Je suppose bien qu'il s'agit d'un bête problème de syntaxe mais je n'arrive pas à trouver la solution...

Une âme charitable pourrait elle m'aider ?

Merci d'avance !

Avatar de l’utilisateur
tekkpaf
Messages : 205
Inscription : 31 Mars 2010 10:59
Localisation : Besançon
Contact :

Re: Test de conditions (JS)

Message par tekkpaf » 13 Jan 2011 00:48

Salut,
tu peux en mettre un peu plus sur ton code ?
Quand tu dis qu'aucun ne fonctionne, tu veux dire quoi ? Que retournent tes tests et que devraient-ils retourner ?
Il 10 types de personnes, ceux qui comprennent le binaire, et ceux qui ne le comprennent pas.

Symb
Messages : 3
Inscription : 13 Jan 2011 00:35

Re: Test de conditions (JS)

Message par Symb » 13 Jan 2011 00:55

Code : Tout sélectionner

var fumee : GameObject;
var cube_index : GameObject;
var colli = false;
var bool_ok = false; 

function OnTriggerEnter(other:Collider)
{
	colli = true;
}

function OnTriggerExit(other:Collider)
{
	colli = false;
}

function Update () {

if (Input.GetKey("e") && (colli) && bool_ok == false ) {
	if( fumee.renderer.enabled == false ){
	fumee.renderer.enabled = true;
	cube_index.transform.position.y += 1;
	bool_ok = true;
	   }
	}
	
	if (cube_index.position.y == "3" ){
	/* faire qqchose */	
	}
	
}
Le problème c'est que j'obtiens un message d'erreur :
"Assers/active_fumee_1.js(26,24): BCE0019: 'position' is not a member of 'UnityEngine.GameObject'".

En gros je recherche la condition permettant de tester, par exemple, la valeur "y" d'un objet.

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: Test de conditions (JS)

Message par ZJP » 13 Jan 2011 00:58

De un :

Tester la position d'un GameObjet avec un valeur aussi "pointue" risque de poser problème.
Ce que je veux dire, c'est que la position peut osciller entre deux valeurs plus ou moins proche de 3.00 et donc ton test d'égalité ne sera pas facile a valider.
Donc :

Code : Tout sélectionner

	if ((cube_index.position.y > 2.9) && (cube_index.position.y < 3.1)) // par exemple
	{
                     // traitement ici
	}

Dernière édition par ZJP le 13 Jan 2011 05:41, édité 1 fois.

Avatar de l’utilisateur
tekkpaf
Messages : 205
Inscription : 31 Mars 2010 10:59
Localisation : Besançon
Contact :

Re: Test de conditions (JS)

Message par tekkpaf » 13 Jan 2011 00:59

Il te manque juste un mot, transform :

Code : Tout sélectionner

if (cube_index.transform.position.y == "3" ){
Il 10 types de personnes, ceux qui comprennent le binaire, et ceux qui ne le comprennent pas.

Symb
Messages : 3
Inscription : 13 Jan 2011 00:35

Re: Test de conditions (JS)

Message par Symb » 13 Jan 2011 01:10

tekkpaf a écrit :Il te manque juste un mot, transform :

Code : Tout sélectionner

if (cube_index.transform.position.y == "3" ){
Effectivement c'était bien ça. En plus, petite auto-correction, j'avais mis des " autour d'une valeur numérique donc ce n'était pas reconnu.

Code : Tout sélectionner

if (cube_index.transform.position.y == 3 )
Merci à vous deux pour ces réponses rapides !

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Test de conditions (JS)

Message par giyomuSan » 13 Jan 2011 01:11

Comme le dit ZJP , position.y va renvoyer une valeur float , ta condition a une chance sur 10 000 d'etre pil poil a 3.0.

Ne jamais utiliser de == pour comparer des valeur float, donc ouais utilise un ecart tu t'evitera des arrachages de cheuveux :mrgreen:

Répondre

Revenir vers « Scripting »