Tuto-blender.com

GameBlender : Approche des Sensors

par jonaga


En vue du nombre grandissant d'utilisateurs désirant essayer GameBlender, j'ai décidé d'écrire un tuto présentant une grande partie des Sensors présent dans Blender.

1) Qu'est ce qu'un sensor?

Un sensor peut être comparé à un capteur, grâce à eux nous pourrons détecter plusieurs types de choses comme une collision ou un simple toucher, deux objets a proximité mais aussi des événement tel qu'un clic de souris ou bien une touche du clavier (certain ont déjà été abordé par Aerodark dans le tuto vidéo sur les briques logiques, ce tutoriel est essentiel pour mettre en pratique les sensors avec d'autres briques logiques).

Always :

Voilà le sensor par défaut dans blender, Always signifie « Toujours » en Anglais, ce sensor effectuera donc une action en continue. Ça fonction ne s'arrête pas là, plusieurs paramètre vont vous permettre d'étendre les possibilités de ce sensor.
Dans le cas où le sensor Always est relié a un actuator Motion (déplacement), l'action s'effectuera en boucle, sans arrêts. Dans le cas inverse, il y a quelque paramètre à connaître.
Tout d'abords, les points de suspensions, le premier nous indique en laissant la souris dessous « Activate TRUE level triggering (pulse mode) » ceci signifie que le sensor n'enverra pas l'ordre True en continue mais en interrompue, l'interval entre deux envois peut être réglé à l'aide du bouton d'à coté (f:0). L'unité de ce bouton est en Frames, en frames du jeu, par défaut réglé sur 60 frames/s pour une bonne fluidité (ne pas confondre avec les animations et les IPO qui sont réglé sur 25 frames/s), vous avez donc compris qu'en laissant ce bouton sur 0, il n'aura aucune utilité puisqu'il n'y aura pas d'intervalle, en mettant sur 60, il y aura un intervalle d'une seconde (si le jeu n'a pas de ralentissements), mais ce n'est pas la meilleur méthode pour un intervalle bien précis comme les secondes, il faudra préférer les Properties pour cela (que nous verrons plu tard).
L'autre bouton fait exactement l'inverse en envoyant l'information False.

Lien vers l'image

Info : True signifie « Vrai » donc l'ordre est effectué, False « faux » donc il n'est pas effectué.

Le bouton Inv inverse l'information de sortie, tout simplement.

Ces quatre boutons reviendront dans chaque sensor, il est donc important de les connaitre.

Lien vers l'image

Keyboard :

Le sensor keyboard correspond aux évènements liés au clavier. Nous retrouvons nos quatre paramètres vue un peu plus haut, dessous nous avons une case correspondant a key (touche du clavier en Anglais), il vous suffit de cliquer et d'enfoncer une touche du clavier pour que celle ci soit marqué dans le rectangle (cliquer à nouveau pour effacer le rectangle). Le bouton qui suit utilise toutes les touches du clavier a l'excption des touches « imprécr/syst, Maj lock, Escape ».
L'utilitée des boutons suivant Hold m'est inconnu, je complèterais ce manque plus tard.
Nous avons ensuite LogToggle qui accèpte en paramètre une propriété de type bool, ce paramètre sert à activer l'enregistrement des touches enfoncées, complétez la case Target avec le propriété qui contiendra les touches enfoncées. Vous pouvez utiliser ce sensor sans qu'il soit relié à un Controller/Actuator dans le cas où vous utilisez juste LogToggle et Target.
Lien vers l'image

Mouse :

Le sensor mouse est lié aux événements de la souris cette fois. Nous avons, Left/Middle/Right buttons qui correspondent aux boutons de la souris, Wheel up/down correspond au mouvement de la molette. Ensuite nous avons mouvement, il correspond à tous les événements de la souris (un peu comme la case All keys pour le clavier) l'action sera donc éffectué si la souris bouge comme si un clic est effectué. Ce sensor enregistre aussi les déplacements de la souris, il peut être combiné a un script pour obtenir un mouvement de caméra, un déplacement etc...
Nous avons ensuite Mouse over qui effectuera l'ordre si la souris survole l'objet (en mode Caméra), combiné avec un sensor clic, il peut permettre de faire un menu simplement, quand la souris survole un bouton et qu'un clic est effectué on pourra dire a Blender de chargé une scene bien précise (grâce aux actuators).Mouse over any est à peut près pareil à la différence que l'ordre est effectué si la souris survole n'importe quel objet.
Lien vers l'image (un exemple de menu réalisé avec le sensor Mouse over)


Touch :

Celui-ci est très simple mais aussi très puissant, il effectue l'ordre si l'objet sélectionné est en contact avec un material bien précis. Très utile pour permettre a un personnage de pouvoir effectuer un saut à la condition qu'il touche le sol. A savoir que si la case MA : est laissé vide, l'ordre s'effectuera en contact de n'importe quel materiau.
Lien vers l'image


Collision :

Collision marche sur le même principe de contact mais sur le premier, l'ordre ne sera effectué seulement lorsque le contact est établi, plus après. Il est utile pour générer un son suite a un choc. Par défaut il faut indiquer une Property, il suffira donc d'attribuer cette propriété à tous les objets qui devront être prient en compte. En cochant M/P vous pouvez changer le type d'objet à prendre en compte en mettant un materiau à la place d'une property.


Ici nous avons un objet qui joue un son de collision de bois quand il rentre en contact avec un objet possédant une propriété bois.
Lien vers l'image


Near :

Le sensor near gère la proximité entre deux objets, utile pour faire une porte automatique, un ascenseur. Le premier paramètre est une propriété, il permettra de restreindre les objets pris en compte, si vous le laissez vide, tout les objets seront pris en compte. Ensuite « Dist : », se paramètre correspond à la distance à partir de laquelle l'ordre est effectué (en unité Blender). Je ne connais pas encore l'utilité du paramètre Reset. Attention tout de même, seul les objets étant Actor sont pris en compte, bouton à cocher dans la partie de gauche, avec les paramètre physiques.
Un exemple avec une porte s'ouvrant à l'arrivée du personnage.


Radar :


Comme son nom l'indique, ce sensor agit comme un radar. Premier paramètre, une property, a remplir seulement si vous voulez réduire le nombres d'objet pris en compte par Blender.
Ensuite un angle, pour une meilleure visualisation des choses, je vous conseil d'utiliser ce sensor sur un empty (Espace->Add->Empty) pour mieux voir les axes. Donc Ang correspond à l'angle du cône du radar (le radar part du centre de l'empty et s'écarte vers l'extérieur pour à la fin former un cône). L'angle se repartira autour de l'axe que vous aurez sélectionné juste au dessus. Ensuite « Dist : » correspond à la longueur du cône. Le sensor Radar capte les objets à travers les murs.

Voilà en rouge la shématisation du sensor Radar accompagné de ses paramètres :
Lien vers l'image


Property :

Le sensor property est très utile, il permet de faire des choses complexes sans pour autant toucher à la programmation.
Tout d'abord, pour créer une property, cliquez sur le bouton Add property juste à gauche des briques logiques. Cliquez dessus pour ajouter une propriété.
Vous avez ensuite plusieurs options qui s'offrent à vous. Tout d'abords Del pour delete (supprimer en Anglais) qui sert donc à supprimer une propriété.
Ensuite nous pouvons choisir le type de propriété :


Timer : Ce type de propriété par de zéro au lancement du jeu et augmente de 1 par seconde.

String : String est une propriété de type texte, elle peut donc contenir du texte.

Float : Float est une propriété qui contient un chiffre décimal (a virgule donc) négatif comme positif.

Int : Int est identique à Float à la différence qu'il ne peut pas contenir de nombres décimaux mais des nombres entiers (-1, 0, 1, 2 etc...)

Bool : Bool est différent, nous pouvons juste cocher True ou False pour vrai ou faux.

Revenons maintenant au sensor Property, nous avons le choix entre equal, qui permet de vérifier si la propriété (prop :) est égal à la valeur (value :).
Not equal fait exactement l'inverse en vérifiant que la propriété ne soit pas égale.
Interval ressemble à equal à la différence que l'on entre cette fois un intervalle partant de Min : à Max :.
Changed vérifie simplement que la propriété change.


Voilà l'exemple d'un jeu de rapidité qui se termine au bout de 10 secondes.
Lien vers l'image



Random :

Le sensor random envoie l'information TRUE de façon aléatoire. Le paramètre seed permet de régler les chances d'avoir un True, sur 0 on obtient à chaque coups un TRUE.

Ray :

Ray fonctionne sur même principe que Radar, a part que le cône est remplacé par un rayon. On retrouve notre « M/P Property : » servant à préciser les objets à prendre en compte.
Ensuite Range corresponds à la longueur du rayon (en unité Blender). Ensuite Blender nous propose de choisir la direction dans laquelle partira le rayon. Le rayon ne peut pas détecter des objets à travers des murs/d'autres objets.
Lien vers l'image

Message :

Le sensor message permet d'effectuer une action lorsqu'un message est reçu. Remplir le champ subject pour n'effectuer l'ordre que lorsque qu'un message ayant le même subject est envoyé. Pour comprendre ce sensor, il faut connaître l'actuator Message qui lui permet d'envoyer un message. De ce fait, deux objets peuvent intéragir ensemble sans être reliés par des briques logiques, ceci facilite la tache dans certains cas.


Joystick :

Je pense qu'en ayant lu les informations précédentes, ce sensor ne devrait pas vous poser de problèmes, n'ayant pas de joystick je ne pourrais pas vous aider.


Voilà, vous connaissez maintenant la plupart des sensors présent dans Blender, il n'est pas évident de les manier mais ça reste un moyen très puissant de réaliser des jeux facilement, et sans programmation rappelons-le! Si vous avez des questions ou des remarques, n'hésitez pas à les poser sur le forum du site!

Tutoriel rédigé par Jonaga, Avril 2008