From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

Traduction effectuée d’après cette révision de la version anglaise.

Contrôleurs

Les contrôleurs sont les briques qui collectent les données envoyées par les capteurs. Il y a huit façons de travailler sur les entrées :

Quand un capteur est activé, il envoie une impulsion positive, et quand il est désactivé, il envoie une impulsion négative. Le boulot des contrôleurs est de contrôler et combiner ces impulsions, afin d’émettre la réponse appropriée.

Tableau de comparaison des contrôleurs

Ce tableau tente de vous donner une vue générale des types de contrôleur. La première colonne, l’entrée, représente le nombre d’impulsions positives envoyées par les sensors connectés. Les colonnes suivantes représentent la réponse de chaque contrôleur à ces impulsions. “Vrai” signifie que les conditions du contrôleurs sont remplies et que les actuateurs liés seront activés, “faux” signifie que les conditions du contrôleur ne sont pas réunies, et que rien ne se passera. Penchez-vous sur les sections suivantes pour une description plus détaillée de chaque contrôleur.

Note
Ce tableau présuppose que plus d’un capteur est connecté au contrôleur. Dans le cas d’un seul sensor connecté, référez-vous à la ligne “Tous”.


Capteurs positifs Contrôleurs
ANDORXORNANDNORXNOR
Aucun Faux Faux Faux VraiVraiVrai
Un Faux VraiVraiVrai Faux Faux
Plusieurs, pas tous Faux Vrai Faux Vrai Faux Vrai
Tous VraiVrai Faux Faux Faux Vrai


Contrôleur “AND”

Le contrôleur AND (“ET”) est le type par défaut quand vous créez un nouveau contrôleur, parce qu’il est le contrôleur le plus commun, et qu’il fonctionne bien pour simplement passer directement un capteur à un actuateur (ce qui ne peut se faire sans contrôleur).

Un contrôleur AND active les actuateurs auxquels il est relié seulement si tous ses capteurs sont positifs. Si un seul sensor est connecté, les actuateurs seront activés dès que le capteur est déclenché. Si plus d’un sensor est connecté, ils doivent tous être actifs en même temps. C’est de là que vient le nom “ET”. S’il y a deux capteurs, “sensor1” et “sensor2”, connectés au contrôleur, les deux sensor1 ET sensor2 doivent être actifs en même temps.

Exemple

Vous voulez créer un bouton de menu. Quand le joueur clique sur le bouton, il passe à la scène suivante.

Sur l’objet bouton du menu, vous ajoutez deux capteurs Mouse, l’un en mode Mouse over et l’autre en mode Left button. Tous deux sont connectés au même contrôleur AND, lui-même relié à un actuateur Set Scene. Cela signifie que le joueur doit à la fois survoler le bouton avec la souris, et cliquer gauche, pour passer à la scène suivante.

Contrôleur “OR”

Un contrôleur OR (“OU”) active ses actuateurs si au moins l’un de ses capteurs est activé. Si un seul sensor est connecté au contrôleur, celui-ci enverra une impulsion positive dès l’activation du capteur, si plus d’un sensor est connecté, l’activation d’un seul est suffisante. OR n’est pas exclusif, ce qui signifie qu’il fonctionne aussi comme un contrôleur AND : si tous les capteurs sont activés, le contrôleur OR émettra quand même l’impulsion. Le contrôleur XOR est une version exclusive du contrôleur OR.

Exemple

Vous voulez que les deux touches Esc et Q terminent votre jeu. Vous mettez en place deux capteurs Keyboard, l’un avec la touche Esc et l’autre avec la touche Q. Tous deux sont connectés à un contrôleur OR lui-même relié à un actuateur Quit this game. Si l’un des deux sensors est activé, le jeu se terminera.

Contrôleur XOR

Le contrôleur XOR est un contrôleur “OU exclusif”. Exclusif signifie qu’un, et un seul, des capteurs doit être positif. S’il n’y a qu’un sensor connecté au contrôleur, il activera ses actuateurs dès que le capteur envoie une impulsion positive. Si plus d’un sensor est connecté, le contrôleur n’activera ses actuateurs que si un seul des capteurs, peut importe lequel, est positif.

Exemple

---EN CONSTRUCTION---

Contrôleur “NAND”

NAND est une contraction de “Not AND” (“Non ET”). En logique (booléenne), non inverse la sortie, “Non ET” est donc l’inverse d’un contrôleur AND. Un contrôleur AND active ses actuateurs seulement si tous ses capteurs sont actifs, un contrôleur NAND fait le contraire. Tant que tous les sensors ne sont pas “Vrai”, les actuateurs sont activés. Si un seul capteur est connecté au contrôleur, les actuateurs sont activés quand le capteur n’est pas déclenché (comportement d’une simple porte logique “NON”).

Exemple

---EN CONSTRUCTION---

Contrôleur “NOR”

NOR est un contrôleur “Not OR” (“Non OU”), l’opposé d’un contrôleur OR. Un contrôleur NOR n’activera ses actuateurs que si aucun capteur n’est actif.

Exemple

---EN CONSTRUCTION---

Contrôleur “XNOR”

XNOR est un contrôleur “Exclusive Not OR” (“Non OU Exclusif”). Cela peut sembler un peu compliqué, mais il s’agit juste de l’opposé d’un contrôleur XOR. XNOR active ses actuateurs quand moins ou plus d’un sensor est déclenché.

Exemple

---EN CONSTRUCTION---

Contrôleur “Expression”

Un contrôleur qui peut laisser perplexe, mais qui est très pratique dans certains cas particuliers.

Dans ce cas, le contrôleur Expression vérifie si le signal du capteur, appelé “sensor”, vaut 1, et la valeur d’une propriété appelée “prop”.

---EN CONSTRUCTION---

Contrôleur “Python”

Le contrôleur Python est un contrôleur qui gère les entrées avec un script programmé par l’utilisateur, c-à-d un script Python ou n’importe quel autre fichier contenant du code Python. Les contrôleurs Python ont deux modes : Script ou Module. Tous deux peuvent utiliser un tampon provenant de l’éditeur de texte interne et stocké au sein du fichier .blend, ou des fichiers de script externes.

Vous trouverez plus d’informations sur Python au sein du BGE ici.

Vous trouverez la référence de l’API Python du BGE ici.

Mode “Script”

En mode Script, le contrôleur est lié à un script – tout le script sera exécuté avant que la logique ne poursuive. Tout ce que contient le script surviendra à la même image, c’est pourquoi si une valeur ou un attribut est modifié plusieurs fois, seule la dernière modification sera visible depuis le jeu. Si par exemple la position d’un objet est d’abord modifiée en (100.0,100.0,100.0), puis est ensuite mise par le même script à (0.0,0.0,0.0), alors seule la position (0.0,0.0,0.0) sera visible pour le joueur, car le déplacement en (100.0,100.0,100.0) est survenu dans la même image.

Mode “Module”

Depuis Blender v2.49, le contrôleur Python s’est vu ajouté un mode Module – choisissez simplement Module au lieu de Script, dans le menu déroulant de votre contrôleur Python. Puis vous définissez une fonction dans le module, et l’appelez depuis le contrôleur. Au lieu d’écrire “monScript.py” dans le champ de script, vous écrirez “monModule.maFonction” dans le champ de module. Cette fonction sera exécutée à chaque fois que le contrôleur est invoqué. Mais les autres fonctions et variables hors du domaine de maFonction ne seront exécutées qu’une fois (au chargement du module). Cela vous permet d’optimiser votre code, quand vous voulez initialiser des variables une seule fois, avant de les utiliser.

Le contrôleur Python en mode Module supporte n’importe quel nombre d’attributs, ce qui signifie que les packages sont supportés automatiquement. Vous pouvez aussi bien écrire “monModule.maFonction” que “monPackage.monModule.maFonctionw/code>”, et utiliser des packages imbriqués ou les appels de méthode sur des instances de classe, comme :“<code>myPackage.myModule.myInstance.myMethod”… Le contrôleur Python est passé en argument à la fonction Python, si elle en accepte un.

Cela permet l’édition “sur le vif” des scripts, vous en apprendrez plus sur les contrôleurs Python en mode Module ici :

*Fil de discussion http://blenderartists.org/forum/showthread.php?t=156672 (en)
*Vidéo http://download.blender.org/apricot/live_bge_edit.ogv (en)