[Résolu] [DB-AL] Connaître l'état d'une variable d'un objet touché.

Pour les scripts écrits en C#
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
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

[Résolu] [DB-AL] Connaître l'état d'une variable d'un objet touché.

Message par TheParadox » 18 Juil 2017 15:58

Bonjour.

J'ai une plaque de pression qui possède un script "PlaqueScript". Dans ce script, on teste si un objet avec le tag "Simple" touche la plaque de pression. Si c'est le cas, on teste si dans le script "ObjectScript" de cetobjet, la variable "Var" est true.

J'ai réussi à tester si un objet touche la palque, avec la fonction "OnTriggerEnter".
J'ai réussi à tester le tag, avec

Code : Tout sélectionner

if (collider.GetComponent<Collider>().tag == tag)
.
Mais je n'arrive pas à tester l'état de la variable...
J'ai tenté

Code : Tout sélectionner

collider.GetComponent<ObjetScript>().Var == true
.
Unity ne detecte pas d'erreur, mais le système n'est pas fonctionnel : la plaque s'allume même si l'objet à sa variable en false.

Comment faire ?
Merci d'avance.
Dernière édition par TheParadox le 18 Juil 2017 19:18, édité 3 fois.
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Aiyor
Messages : 24
Inscription : 14 Juin 2017 12:08

Re: [DB-AL] Connaître l'état d'une variable d'un objet touché.

Message par Aiyor » 18 Juil 2017 16:28

Code : Tout sélectionner

collider.GetComponent<PlaqueScript>().Var == true
.

D'après ce que je comprend de cette partie du code, il faut absolument que l'objet qui touche ta plaque (le collider qui entre dans le trigger donc) ait AUSSI le script PlaqueScript (le même que celui sur lequel on est déjà), et tu vas tester Var que tu as bien déclaré en Public ? C'est ce que tu veux faire?
J'imagine que tu as simplifié le code, mais que tu as bien écris

Code : Tout sélectionner

 if  (collider.GetComponent<PlaqueScript>().Var == true)
 {
 Actions à effectuer;
 }
 

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

Re: [DB-AL] Connaître l'état d'une variable d'un objet touché.

Message par boubouk50 » 18 Juil 2017 17:30

Quelques règles de programmation:
- les noms de variable commencent par une minuscule. Elles sont explicites dans leur nom pour pouvoir les identifier rapidement. Chaque mot de la variable est ensuite identifié par une majuscule. Aussi tu peux ajouter un préfixe pour identifier le scope, c'est à dire la portée de la variable.
Ainsi, pour une variable booléenne local qui doit tester si des variations peuvent être appliquées pourrait se nommer l_isVariable.
Pourquoi cela? Pour la lisibilité et éviter de nommer une variable comme une classe qui eux commencent par une majuscule. Tu peux donc appeler un GameObject gameObject mais pas GameObject, sinon il y a conflit.

Cette convention de nommage a un nom, mais je l'ai oublié.
https://docs.microsoft.com/fr-fr/dotnet ... onventions

Par exemple ici, tu es très chanceux, Var n'est pas utilisé par contre var l'est, et donc tu ne peux pas l'utiliser en tant que nom de variable... Voilà pourquoi un bon nommage des variables est important.
"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
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Connaître l'état d'une variable d'un objet touché.

Message par Max » 18 Juil 2017 17:37

boubouk50 a écrit :
18 Juil 2017 17:30
Cette convention de nommage a un nom, mais je l'ai oublié.
j'imagine que tu penses au principe de la notation hongroise.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: [DB-AL] Connaître l'état d'une variable d'un objet touché.

Message par TheParadox » 18 Juil 2017 19:09

J'ai fais une erreur dans mon premier post (je l'ai corrigée):
La variable "Var" appartient au script "ObjetScript" qui appartient à l'objet.
Et non pas à "PlaqueScript".

Donc j'avais écris :

Code : Tout sélectionner

if (collider.GetComponent<ObjetScript>().Var == true)
Mais ça ne fonctionne pas...
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: [DB-AL] Connaître l'état d'une variable d'un objet touché.

Message par TheParadox » 18 Juil 2017 19:17

C'est bon , ça fonctionne.
Le problème venait de la fonction OnTriggerEnter, que j'ai remplacé par OnTriggerStay.
OnTriggerEnter ne se met à jour que lorsque l'objet entre en contact, alors que la 2èm se met au jours en continu tant que l'objet la touche.
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Répondre

Revenir vers « (C#) CSharp »