Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
logiciels:blender:bge-python:accueil [2016/04/01 10:26] resonance [script02.py] |
logiciels:blender:bge-python:accueil [2018/04/06 16:27] (Version actuelle) resonance [Game Object] |
||
|---|---|---|---|
| Ligne 358: | Ligne 358: | ||
| my_object = my_scene.objects[' | my_object = my_scene.objects[' | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ===== Ouïe ! ===== | ||
| + | * Fichier Blender : {{: | ||
| + | {{: | ||
| + | |||
| + | |||
| + | Manipulation des collisions, des messages et des fréquences des boîtes capteurs. Les collisions font parti du groupe [[https:// | ||
| + | |||
| + | ===== Objets ===== | ||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
| + | ==== Contrôler la fréquence des pulses ==== | ||
| + | Avec **sensor.skippedTicks**. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ==== script03.py ==== | ||
| + | |||
| + | ++++ Voir le script | | ||
| + | <code python> | ||
| + | """ | ||
| + | Manipulation des collisions, des messages et des fréquences des boîtes capteurs | ||
| + | """ | ||
| + | |||
| + | import bge | ||
| + | import random | ||
| + | |||
| + | |||
| + | # Manipuler la fréquence de la boîte capteur | ||
| + | def randFreqColors(cont): | ||
| + | obj = cont.owner | ||
| + | sensor = obj.sensors[" | ||
| + | if sensor.positive : | ||
| + | | ||
| + | # Activation du mode pulse | ||
| + | if sensor.usePosPulseMode == False: | ||
| + | sensor.usePosPulseMode = True | ||
| + | | ||
| + | # Fréquence du prochain déclenchement au hasard | ||
| + | sensor.skippedTicks = random.randrange (1,30) | ||
| + | obj.color = (random.random(), | ||
| + | | ||
| + | |||
| + | # Tests de collisions avec envois de messages | ||
| + | def sendBoom(cont): | ||
| + | obj = cont.owner | ||
| + | sensor = obj.sensors[" | ||
| + | if sensor.positive : | ||
| + | msg = "From " + obj.name | ||
| + | obj.sendMessage(" | ||
| + | | ||
| + | |||
| + | # Réception d'un message et ajout d'un objet texte | ||
| + | def receiveBoom(cont): | ||
| + | obj = cont.owner | ||
| + | sensor = obj.sensors[" | ||
| + | if sensor.positive : | ||
| + | print(" | ||
| + | | ||
| + | # Récupération du contenu du message et séparation des mots dans un tableau | ||
| + | # message[0] est le premier élément, ici " | ||
| + | # message[1] est le deuxième élément, ici le nom de la sphère | ||
| + | message = sensor.bodies[0].split(" | ||
| + | | ||
| + | # Construction du nom de l' | ||
| + | textName = obj.name + " | ||
| + | | ||
| + | # Ajout de cet objet dans la scène | ||
| + | # Arguments : nom de l' | ||
| + | obj.scene.addObject(textName, | ||
| + | | ||
| + | # On modifie ensuite le texte et la position de l' | ||
| + | objText = obj.scene.objects[textName] | ||
| + | objText.text = "Ouïe ! " + message[1] + " !" | ||
| + | objText.worldPosition.z = obj.worldPosition.z + 1 | ||
| + | | ||
| + | # On change aussi la couleur | ||
| + | obj.color = (random.randrange(10)/ | ||
| + | </ | ||
| + | ++++ | ||
| + | |||
| + | ===== Autres exemples ===== | ||
| + | * Fichier Blender et les textures : {{: | ||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | Jouer une animation et changer d' | ||
| + | ==== Objets ==== | ||
| + | {{: | ||
| + | |||
| + | |||
| + | ==== script04.py ==== | ||
| + | |||
| + | ++++ Voir le script | | ||
| + | <code python> | ||
| + | """ | ||
| + | Jouer une animation et changer d' | ||
| + | """ | ||
| + | |||
| + | import bge | ||
| + | from bge import texture | ||
| + | from bge import logic | ||
| + | import random | ||
| + | |||
| + | # Jouer une animation | ||
| + | def runAnim(cont): | ||
| + | obj = cont.owner | ||
| + | sens = cont.sensors[' | ||
| + | if sens.positive: | ||
| + | # Déclenchement de l' | ||
| + | obj.playAction(" | ||
| + | |||
| + | |||
| + | # Changer d' | ||
| + | # Un dossier " | ||
| + | # dont le nom des fichiers suit la logique " | ||
| + | def randTexture(cont): | ||
| + | # Nombre d' | ||
| + | max=6 | ||
| + | obj = cont.owner | ||
| + | # Un capteur quelconque | ||
| + | sens = cont.sensors[' | ||
| + | if sens.positive: | ||
| + | # Image orginale de la texture | ||
| + | ID = texture.materialID(obj, | ||
| + | object_texture = texture.Texture(obj, | ||
| + | obj.attrDict[" | ||
| + | # Tirage d'un nombre au hasard et conversion en String pour former le nom de l' | ||
| + | n = str(random.randrange(max)) | ||
| + | # Chemin de l' | ||
| + | url = logic.expandPath("// | ||
| + | new_source = texture.ImageFFmpeg(url) | ||
| + | object_texture.source = new_source | ||
| + | object_texture.refresh(False) | ||
| + | </ | ||
| + | ++++ | ||
| + | ==== Voir aussi === | ||
| + | Des variables peuvent être accessibles depuis toutes les scènes avec [[https:// | ||
| + | |||
| + | Manipuler un actionneur " | ||
| + | |||
| + | Pour les notions de distances entre objet et d' | ||
| + | |||
| + | Pour communiquer avec d' | ||
| + | |||