Sélectionnez votre langue

"La nature a doté l'homme d'une langue et de deux oreilles pour qu'il écoute deux fois plus qu'il ne parle."
Épictète

L'objectif de ce tutoriel est de découvrir le détecteur d'évènement Collision.
Nous allons l'utiliser pour détecter le contact avec le sol et ainsi empêcher le saut quand le personnage est déjà en l'air.

***

Version utilisée pour la rédaction de ce tuto (cf barre d'état) :

"UPBGE v0.3 Alpha (based on Blender v2.90)"


Conventions :
Les touches du clavier et les boutons de la souris sont indiqués entre '[' et ']'.
Les parcours à suivre dans l'interface utilisent '>' comme séparateur.
Quelques exemples :

[A] : touche 'A'.
[Num .] : '.' sur le pavé numérique.
[BGS] : Bouton Gauche de la Souris.
[BMS] : Bouton du Milieu de la Souris (il est possible de cliquer avec la molette !).
[BDS] : Bouton Droit de la Souris.
[Maj]+[BDS] : maintenir la touche Majuscule enfoncée et cliquer avec le Bouton Droit de la Souris.
File > Save : menu "File", puis item de menu "Save".


Notre point de départ sera le fichier obtenu à la fin du Tuto 1.
Si vous n'avez pas suivi le Tuto 1, téléchargez le fichier :

clavier.blend (748 Kio)

Ouvrez le fichier :
File > Open...

***

Pour enregistrer le fichier, faites dans le menu principal :
File > Save As...,
choisissez le dossier où vous souhaitez enregistrer, puis cliquez dans la ligne de saisie contenant "clavier.blend", tapez le nom sous lequel vous souhaitez enregistrer le fichier ("collision", par exemple) et validez la saisie avec [Entrée] (l'extension ".blend" est ajoutée automatiquement).
Enfin validez l'enregistrement avec [Entrée].
Par la suite, pensez à enregistrer de temps en temps, il suffira de faire :
File > Save
En fait, la version de UPBGE utilisée ici étant marquée "Alpha", elle est potentiellement instable, il est donc fortement recommandé d'enregistrer souvent (raccourci clavier : [Ctrl]+[S]) !

***

Vous pouvez lancer le jeu pour tester le comportement actuel :
Dans la vue caméra, pressez [P].

Notez que Suzanne, après avoir sauté, alors qu'elle n'est pas encore retombée sur le sol, est capable d'enchainer sur un autre saut... C'est rigolo mais pas très réaliste ! Nous allons voir comment régler ce problème.

Suzanne doit être sélectionnée (contour orange), si ce n'est pas le cas, faites [BGS].

Dans le "Logic Editor" (zone du bas), ajoutez un détecteur d'évènement de type Collision :
Add Sensor > Collision

Capture d'écran : Add Sensor - Collision

Ce détecteur se déclenche en cas de collision ou de contact.
Reliez ce détecteur au contrôleur de type "And" qui est déjà relié au détecteur "Espace" :

Capture d'écran : Sensors - Collision

Suzanne sautera si on presse [Espace] et qu'elle est en contact avec un autre objet.
Lancez à nouveau le jeu pour tester le comportement modifié.
Le problème est réglé !

En fait nous allons voir qu'il ne l'est pas totalement...

Pour ajouter un cube, faites dans le menu de la Vue 3D :
Add > Mesh > Cube

Pour changer sa hauteur :
[S],
puis [Z] pour ne modifier l'échelle que selon l'axe Z,
tapez la valeur 3,
et validez avec [Entrée].

Pour le déplacer :
[G],
tapez la valeur -5 pour l'axe X,
[Tab] pour passer à l'axe Y, tapez la valeur -5,
[Tab] pour passer à l'axe Z, tapez la valeur 1,
et validez avec [Entrée].

Lancez à nouveau le jeu et amenez Suzanne au contact du poteau. Vous pouvez constater que Suzanne, après avoir sauté, alors qu'elle n'est pas encore retombée sur le sol, est capable d'enchainer sur un autre saut (et de grimper un mur lisse à mains nues, alors qu'elle n'a pas de mains) !

Pour régler ce problème, nous allons préciser que le saut n'est possible qu'en cas de contact avec le sol.
Sélectionnez Suzanne.
Dans le détecteur "Collision", cliquez dans le champ "Property" (en bas à droite) et tapez "sol" :

Capture d'écran : Collision - Property

Il ne nous reste plus qu'à ajouter une propriété "sol" à l'objet "Sol".
Sélectionnez l'objet "Sol".
Dans le "Logic Editor", dans le panneau "Properties" (Propriétés) sur le côté droit, cliquez sur :
Add Game Property
Une propriété est ajoutée.
Renommez-la "sol".
Dans la liste déroulante "Type", choisissez le type "Boolean" (Booléen).
Enfin cochez la case "Value" pour attribuer la valeur Vrai :

Capture d'écran : Propriété

En réalité le détecteur "Collision" ne vérifie que l'existence d'une propriété nommée "sol", le type et la valeur sont sans importance, mais il semble plus satisfaisant d'utiliser un Booléen avec la valeur Vrai.

Lancez à nouveau le jeu et amenez Suzanne au contact du poteau. Vous pouvez constater que cette fois le problème est vraiment réglé (adieu les super-pouvoirs) !

Voici le fichier final :

collision.blend (754 Kio)