Salut,
tu peux gérer cela par un script indépendant de tes objets (un empty par exemple).
1. Récupérer tes objets
import GameLogic as g
cont = g.getCurrentController()
scene = g.getCurrentScene()
objList = scene.objects
# Interrupteurs
int_1 = objList.get("OBinterrupteur_1")
int_2 = objList.get("OBinterrupteur_2")
int_3 = objList.get("OBinterrupteur_3")
int_4 = objList.get("OBinterrupteur_4")
list_int[int_1, int_2, int_3, int_4]
# Objets à afficher/cacher
obj_1 = objList.get("OBobj_1")
obj_2 = objList.get("OBobj_2")
obj_3 = objList.get("OBobj_3")
obj_4 = objList.get("OBobj_4")
list_obj[obj_1, obj_2, obj_3, obj_4]
2. Initialiser l'état des interrupteurs
for interrupteur in list_int:
# Désactiver les interrupteurs, par défaut
interrupteur["actif"]=0
# Seul l'interrupteur 1 est actif par défaut
int_1["actif"] = 1
3. Initialiser la visibilité des objets (invisibles par défaut, par ex) :
for obj in list_obj:
obj.visible=False
4. Lors d'un événement (clic, dans ton cas), un script différent (ou une brique logique) modifiera la valeur d'un des interrupteurs.
Ex :
int_1["actif"]=0
int_2["actif"]=1
own.sendMessage("change_visibilite")
5. Dans un autre script relié à un sensor "message" :
# Identifier le sensor
msg_sen = cont.sensors["message"]
# Récupérer la liste des messages reçus
list_msg = msg_sen.subjects
# Si le message qui nous concerne a été envoyé/reçu
if "change_visibilite" in list_msg :
# Rendre invisibles tous les objets
for obj in list_obj:
if obj.visible == True :
obj.visible = False
# Rendre visibles uniquement ceux que l'on souhaite
if int_1["actif"]==1:
obj_1.visible = True
elif int_2["actif"]==1:
obj_2.visible = True
elif int_3["actif"]==1:
obj_3.visible = True
elif int_4["actif"]==1:
obj_4.visible = True
Voilà, en gros.
Je n'ai pas testé mais ça devrait marcher.
On peut encore bien simplifier le script, mais je ne connais pas ton niveau en programmation et cette version sera plus facilement compréhensible.
Tu peux tout faire fonctionner dans le même script, ou avec plusieurs scripts différents, plusieurs modules, etc...
Si tu travailles avec des scripts différents, il te faudra utiliser des variables globales pour
g.list_int et
g.list_obj.
En cherchant un peu, tu pourras adapter comme tu le sens.
J'espère que ça t'aidera.