Créer un système de munitions

Document sans nom


Créer un système de munitions



Introduction


Nous allons dans ce tutoriel créer la base d’un FPS. Nous en profiterons pour aborder les notions de Property, de Logic Brick et vaguement de Python.

Les étapes de ce tutoriel iront en difficulté croissante.

Etape 1 : La scène


La scène va être simple : un personnage, une caméra, un sol et un système de tir.

On représentera le personnage par un simple cube. Un cube étant déjà présent dans la scène par défaut on ne touche à rien. On passe en vue de face (NumPad 1) et en mode Edit (Tab). On sélectionne les 4 vertices du haut avec B et on les déplace selon l’axe des Z (G, Z) pour former un pavé. Puis on repasse en mode Object avec Tab, on va dans le panneau Edit (F9) et on clique sur « Center new », qui aura pour effet de replacer le centre du perso.

La caméra maintenant. Toujours en mode Edit on passe en vue de dessus (NumPad 7) et, nos 4 vertices toujours sélectionnés, on désélectionne les deux du bas avec B en utilisant le clic droit cette fois. Nous avons donc deux vertices sélectionnés, qui seront en haut en vue de dessus. Nous allons maintenant placer le curseur dessus. Donc Shift S > Cursor - > Selection. On repasse maintenant en mode Object (Tab) et on se place en vue de face (NumPad 1). Et on fait Barre Espace > Add > Camera. La caméra créée doit être orientée vers l’avant. On constate que si on passe en vue de caméra (NumPad 0) on voit le perso du dessus. Il faut donc supprimer l’ancienne caméra, qui est en hauteur. On la sélectionne avec Clic droit et on appuie sur X (ou Suppr). En appuyant sur NumPad 0 on voit maintenant ce que verrait le perso.

Il faut aussi parenter la caméra au perso pour qu’elle suive ses mouvements. Donc on sélectionne la caméra avec Clic droit si ce n’est pas déjà fait PUIS le cube toujours avec Clic droit (l’ordre est très important sinon ça ne marchera pas). On fait ensuite Ctrl+P et « Make parent ».

On va maintenant faire le sol. On se met en vue de dessus (NumPad 7) en mode Object et on fait Barre Espace > Add > Mesh > Plane. Blender passe automatiquement en mode Edit. On va scaler le Plane. On fait S et on tape la valeur 10 avec le pavé numérique. On repasse en mode Object et on passe en vue de face. Là on constate que notre sol est en hauteur !!! Pas de panique. On appuie sur G et on déplace le Plane vers le bas, juste en dessous de notre perso.

NB : Pour les besoins du jeu, il faut placer le sol en peu en dessous du perso, on verra pourquoi après.

On passe maintenant en vue de côté (NumPad 3) et on clique gauche sur l’avant de la caméra. On passe ensuite en vue caméra (NumPad 0) : le curseur est au milieu de la vue (si ce n’est pas le cas faites-le). Puis on fait Barre Espace > Add > Mesh > Plane. On sélectionne d’abord ce Plane puis la caméra et on fait Ctrl+P et « Make Parent ».

Pour les balles on passe dans le calque 2 : sur la barre en bas du menu de la vue 3D il y a 20 carrés qui représentent les calques, on clique sur le deuxième pour passer dans le calque 2. Et là on crée en vue de face un cube : Barre Espace > Add > Mesh > Cube. Puis on clique sur S et on réduit le cube pour qu’il soit très petit (un petit carreau par exemple).



Si vous avez suivi correctement les explications, vous devriez en être là (avec le Plane sur la caméra en plus, sur l’image il est caché):


Ca y est notre scène est prête. Passons maintenant au jeu…

Etape 2 : Les physics


On va s’occuper des physics, c’est à dire les lois de la gravité, des forces, etc…qui existent sur Terre.

On sélectionne le perso avec Clic droit et allez dans le panneau Logic (F4). Tout à gauche de ce panneau il y a un petit bouton « Actor », on clique dessus. Deux autres boutons apparaissent, on clique sur « Dynamic ». Et là…au secours des boutons partout !!! Bonne nouvelle, on n’y touche pas. Vous remarquerez le bouton « Bounds » en dessous, on clique dessus et voilà c’est fini…pour le perso.

On sélectionne ensuite le sol (toujours avec Clic droit) et dans le panneau Logic on clique cette fois aussi sur Actor et Bounds. Ne cliquez surtout pas sur Dynamic ou Ghost, sinon vous allez avoir de drôles de surprises en lançant le jeu !!!

Si on lance le jeu (P), notre personnage sera sur le sol. Mais il ne bouge pas !!! On va arranger ça.

Etape 3 : Les mouvements


Nous allons ici créer et paramétrer les mouvements de notre perso. Cela va entre autres demander l’aide d’un script Python, que je ne vais expliquer parce que ça serait trop long, mais je vais vous donner la marche à suivre pour l’utiliser.

On sélectionne le perso et on va dans le panneau Logic (F4) et là on clique sur les boutons « Add » (pas « Add property »). Les paramètres suivants apparaissent.


Petite explication : la première colonne représente les sensors, qui sont les détecteurs de l’objet (ils correspondent à la fonction « if » de la programmation). La deuxième colonne représente les controllers, qui sont le « cerveau » car ils décident comment passer l’information des sensors, etc…Nous allons surtout parler du controller « Python ». La dernière colonne représente les actuators, qui sont les actions de l’objet.

On clique sur « Always » dans les sensors, et dans la liste déroulante qui s’affiche on clique sur « Keyboard ». On clique sur le rectangle à côté de « Key » et on appuie sur la touche fléchée haut du clavier. « Up arrow » apparaît là où on a cliqué.

Dans l’actuator (« Motion ») on clique sur la deuxième case de la ligne dLoc, qui représente l’axe des Y, et on rentre la valeur 0.10.

Puis on clique sur la petite bille à droite du sensor et en laissant appuyé le clic on trace un trait jusqu’à l’anneau à gauche du controller, puis on recommence avec la bille à droite du controller jusqu’à l’anneau de l’actuator.

Je vais maintenant expliquer ce que l’on a fait. On vient de dire : si on appuie sur « touche fléchée du haut » alors déplacer l’objet le long de l’axe des Y, c’est-à-dire l’avant. Lancez le jeu avec P ; si on appuie sur la flèche du haut, notre perso avance !!!

On va maintenant régler ses autres mouvements. On clique 3 fois sur chaque Add. On met les trois nouveaux sensors en Keyboard. Pour le premier on rentre « flèche du bas », le deuxième « flèche gauche » et le troisième « flèche droite ». On les relie chacun à un controller, et chaque nouveau controller à un actuator. Pour les actuators, on règle le premier (nouveau) sur -0.10 dans la deuxième colonne, le deuxième sur 0.05 dans la troisième colonne, et le dernier sur -0.05 dans la troisième colonne. Vous devez arriver à ça :


Tout d’abord vous devez télecharger le script MouseLook.py. Puis on va dans le « Text Editor » et on clique sur le bouton à gauche de « Screen 12 » et on choisit « OPEN NEW ». On va chercher notre fichier dans l’explorateur qui s’ouvre puis on clique sur « Open Text file ». Ce texte apparaît :


On retourne ensuite dans la vue 3d et on sélectionne la caméra et le cube. On clique sur les 3 boutons Add de la caméra et on ajoute un actuator au perso. On met le sensor en mode « Mouse », puis on clique sur « Left button » et on choisit « Movement ». On met cette fois-ci le controller en mode Python, et dans « Script : » on met le nom de notre script (pour moi MouseLook.py). On relie le controller au deux nouveaux actuators qu’on a créé.

Très important : On renomme l’actuator de la caméra « LookUpDown » et celui du perso « LookLeftRight », et le sensor de la caméra « Mouse » (en respectant les majuscules) sinon le script ne marchera pas.

Voilà où vous devriez en être :


Dans la vue 3D on se place en vue caméra (NumPad 0) et on lance le jeu (P). Et là miracle ! Si on bouge la souris, la caméra (et donc la vue) suit !!!

Etape 4 : Le système de tir


C’est ici que les affaires se compliquent. Nous allons créer le système de tir.

On sélectionne le Plane de la caméra et on va dans le panneau Logic (F4) si ce n’est pas fait. On lui ajoute 2 sensors, 2 controllers et 2 actuators. On laisse le premier sensor en Always. On le relie au premier controller qu’on relie au premier actuator. On met celui-ci en « Visibility ». Là on remplace le paramètre « Visibility » par « Invisibility ». On met maintenant le deuxième sensor en Mouse et on laisse « Left Button ». On le relie au deuxième controller, qu’on relie au deuxième actuator. On met celui-ci en « Edit Object » et on laisse le paramètre « Add Object ». Dans le champ « OB: » on rentre le nom du cube qui sert de balle (pour moi « Cube.001 »).

On lance le jeu et si on clique-gauche le cube apparaît, mais il ne bouge pas. On va y remédier.

On passe dans le calque 2 et on sélectionne la balle (le cube en fait). On lui met 1 sensor, 1 controller et 1 actuator qu’on relie entre eux. On les laisse comme ils sont. Dans l’actuator (« Motion ») on met la troisième colonne de dLoc sur -0.30.

Vous devriez en être là :



Maintenant si on repasse dans le calque 1 et en vue caméra, qu’on lance le jeu et qu’on clic-gauche, les balles partent !!!

Mais il reste encore un problème. Si on clic-gauche plein de fois d’affilée, ça fait beaucoup de balles !!! A moins d’avoir une mitraillette, c’est pas possible de faire ça !!! Il va donc falloir faire un système de munitions.

Etape 5 : Le système de munitions


Cette dernière étape est très compliquée. Si vous la comprenez, vous serez en mesure de créer des jeux très perfectionnés.

On sélectionne le Plane qui tire les balles et on clique deux fois sur « Add Property ». Deux nouvelles lignes apparaissent. On clique sur Float et on sélectionne pour la première Timer et pour la deuxième Int. On renomme la première Property « Recharge » (dans « Name: ») et la deuxième « Munitions ».

On lui ajoute maintenant un sensor Property en mode Interval et un actuator Property en mode Add. On les relie au même controller que le clic gauche. Pour le sensor : dans « Prop: » on met Recharge, dans « Min: » on met 2 et dans « Max: » on met un 1 avec des dizaines de 0. Faites-vous plaisir, il faut que ce nombre soit très grand. Pour l’actuator : dans « Prop: » on met Munitions et dans « Value: » on met 1.

Bon si on lance le jeu maintenant ça fait pas grand-chose, c’est juste qu’on peut tirer qu’au bout de 2 secondes. A quoi ça sert ? Vous allez voir.

On crée un nouveau sensor Property, en mode Equal, un nouveau controller, et deux nouveaux actuators Property, en mode Assign cette fois. On relie le sensor au controller qu’on relie aux deux actuators. Pour le sensor : dans « Prop: » on met Munitions et dans « Value: » on met 5. Pour le premier actuator : dans « Prop: » on met Recharge et dans « Value: » on met 0. Pour le deuxième actuator on fait pareil sauf qu’on remplace Recharge par Munitions.

Après toutes ces étapes, le panneau Logic du Plane de tir ressemble à ça :


Si on lance le jeu on peut maintenant : se déplacer, viser avec la souris, on ne peut tirer que 5 balles d’affilée.

Conclusion


Ca y est, le tutoriel est terminé...
Maintenant, vous avez les connaissances pour créer d’autres jeux, qui pourront être plus perfectionnés.

Vous pouvez aussi améliorer votre FPS, en créant des ennemis, des décors (donc des textures), des sons, une croix de visée, on peut rendre le perso plus réaliste, ajouter une arme, ou d’autres que l’on peut ramasser, etc…

Je laisse le blend au passage : Tuto_FPS

tutoriel rédigé pour le Blender Clan par granarc, janvier 2008

    


Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.

Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Le coin des geeks win10 - avoir visuel d'un fichier blend ? 0 7 Aujourd'hui 14:58:53
sapajou 
Questions & Réponses Placer un objet par rapport à un autre objet 7 129 Aujourd'hui 14:29:56
BlendProblem 
The Blender Clan 'tchat Blender 2.8x : Actus, tests, feedback..    [1][2][3]...[10] 97 53724 Aujourd'hui 09:47:10
Bibi09 
The Blender Clan 'tchat le topic de l'impression 3D    [1][2][3]...[125] 1248 394182 Aujourd'hui 09:01:12
Redstar 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal    [1][2][3] 23 2459 Hier 17:18:28
Redstar 
Questions & Réponses [non résolu] Addon Mb-Lab 3 102 Hier 14:05:26
Guiu 
Questions & Réponses Raccourcis clavier qui ne marchent plus v 2.93.4 2 187 Hier 12:11:05
GFC 
Questions & Réponses Récupérer la couleur en sortie de shader    [1][2] 12 370 Hier 10:51:49
Horemheb 
Questions & Réponses Sapling tree gen, comment le récupérer 0 51 02/12 20:30:18
Lylo 
Questions & Réponses [résolu] X-Ray uniquement en mode Solid 3 169 02/12 20:05:12
Horemheb 
The Blender Clan 'tchat Folle souris 3 116 02/12 12:43:22
Rimpotche 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[25] 241 25550 01/12 21:56:30
moonboots 
Questions & Réponses [résolu] Ngons 6 173 01/12 19:00:13
Rimpotche 
Questions & Réponses [WIP] animatique vers projet réél : comment concilier les fichiers ? 4 145718 30/11 21:38:43
doudoulolita 
Questions & Réponses debutant- engrenage en pointe    [1][2] 10 427 30/11 19:19:47
CBY 
Questions & Réponses [résolu] Fusion 360 - recherche d'un connaisseur 1 218 30/11 16:31:30
Redstar 
Questions & Réponses Solution rendu saccade    [1][2] 17 501 30/11 08:08:02
CBY 
The Blender Clan 'tchat ANNONCE IMPORTANTE : LE BLENDER CLAN REOUVRE !! Etat des lieux sur le présent et le futur :)    [1][2][3] 22 93050 30/11 07:53:41
smogBlender 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 125 11903 29/11 16:33:17
blend74 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS Unity - Version alpha disponible + discord    [1][2][3]...[68] 673 152629 29/11 00:26:07
Hook 

Qui est en ligne
128 utilisateur(s) en ligne (dont 1 sur Tutoriels)

Membre(s): 7
Invité(s): 121


JenniSumpt, ClaribelTy, MartaAllum, MariettaCr, ColeHuffma, StaciaCrea, NumbersJan, plus...
Nouveaux membres
CharissaEc 4/12/2021
MagaretOdo 4/12/2021
NumbersJan 4/12/2021
HortenseMa 4/12/2021
KiaHuckste 4/12/2021
FidelDonah 4/12/2021
ConcettaN6 4/12/2021
RedaOlivas 4/12/2021
ValerieWei 4/12/2021
JenniSumpt 4/12/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 246 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445