Jeu de plates-formes

Ce tutoriel va vous permettre de créer un mini jeu de plates-formes avec des décors en 3D.
Le personnage va se déplacer en 2D dans ces décors .
Le personnage peut collecter des pièces mais il peut aussi se faire toucher par des ennemis ...
Heureusement que des ccoeurs sont dissimulés dans le niveau pour l'aider à reprendre des points de santé !

Le décor

Réinitialisez Blender (ctrl+x).
Effacez le plan crée par défaut (x).
Laissez le curseur-cible au point d'origine.

Création du sol

Placez vous en vue de face (NUM1).
Ajoutez un plan (espace->add->Mesh->Plane).
Ce plan constitue le profil du sol à extruder.
Désélectionnez tout les points (a)
Sélectionnez les 2 points du haut avec l'outil rectangle de sélection (b), puis déplacez-les d'une unité vers le bas (g puis ctrl).
Désélectionnez tout les points (a)
Sélectionnez les 2 points de droite, puis déplacez-les d'une unité vers la droite.
Désélectionnez tout les points (a)
Sélectionnez les 2 points de gauche, puis déplacez-les de 5 unités vers la gauche.
Le profil devrait maintenant être comme ceci :

Placez-vous en vue de coté (NUM3).
Nous allons maintenant extruder ce profil vers la droite par intervalle de 5 unités.
Sélectionnez tout les points (a).
Extrudez les points vers la droite de 5 unités (e puis ctrl).
Répétez l'opération une fois (sans tout sélectionner !).
Maintenant, extrudez de 5 unités vers la droite et d'une vers le haut.
Continuez jusqu'à obtenir ceci :

Normalement, les 4 points situés au bout à droite sont sélectionnés (sinon, faites-le).
Dupliquez ces points en les déplaçant de 10 unités vers la droite (shift+d puis ctrl).
Extrudez les points sélectionnés vers la droite de 5 unités .
Maintenant, extrudez de 5 unités vers la droite et d'une vers le haut.
Continuez les opérations d'extrusion jusqu'à obtenir ceci :

Allez dans la fenêtre d'édition (F9).
Désactivez l'option Double Sided.
Certaines faces deviennent peut-être noires car les normales de ces faces sont dirigées vers l'intérieur .
Sélectionnez tout les points (a).
Faites 'Recalc Normals Outside' (ctrl+n).
Les faces noires deviennent grises .
Sortez de l'Edit Mode (TAB).
Pour être sûr d'avoir un objet avec une taille à 1 et sans rotation, il faut faire 'Apply Size/Rot' (ctrl+a).

Déplacez le sol de 2 unités vers le bas (g puis ctrl).

Le sol est maintenant terminé.
Vous pouvez remarquer qu'il y a un trou au milieu du sol.
Ceci nous permettra d'insérer des pièges ...

Il faut renommer (F9) l'objet et le mesh pour pouvoir les utiliser sans difficulté dans le jeu.
Nous allons les appeler sol.

Maintenant, nous allons éditez le matériau du sol (F5).
Ajoutez un matériau et renommez le sol .
J'ai choisi une couleur marron ( R:0.4 , G:0.2 , B:0.2 ).
Il faut également changez les paramètres dynamiques du sol.
Pour cela, cliquez sur le bouton DYN (situé sous RGB et HSV).
Mettez le paramètre Fh Dist à 0.5 (pour que notre personnage puisse prendre appui sur le sol quand il saute).

 

Faire un piège

Pour faire un piège, nous allons simplement utiliser un plan déformé.

En vue de dessus (NUM7), ajoutez un plan .
Mulitipliez sa taille par 2 (s puis ctrl).
Mulitipliez sa taille en longueur (size y) par 5 (s puis clic du milieu puis ctrl).
En vue de coté (NUM3), extrudez tous les points d'une unité vers le bas (e puis ctrl).

Allez dans la fenêtre d'édition (F9).
Désactivez l'option Double Sided.
Sélectionnez tout les points (a).
Faites 'Recalc Normals Outside' (ctrl+n).
Sortez de l'Edit Mode (TAB).
Pour être sûr d'avoir un objet avec une taille à 1 et sans rotation, il faut faire 'Apply Size/Rot' (ctrl+a).

Nous allons déplacer cet objet pour qu'il se situe sous le trou au milieu du sol .
Il s'agit de le déplacer de 40 unités vers la droite et de 3 vers le bas (g puis ctrl).

Il faut de nouveau renommer l'objet et le mesh.
Nous allons les appeler piege.

Maintenant, nous allons éditez le matériau du piege (F5).
Ajoutez un matériau et renommez le eau, par exemple.
J'ai choisi une couleur bleue claire ( R:0.6 , G:0.7 , B:0.8 ).

Pour pouvoir détecter que cet objet est un piège dans le jeu, il faut ajouter une propriété au piège.
Dans la fenêtre 'Realtime Buttons' (F8), cliquez sur Add Property.
Renommez-la piege et changez le type en bool et cliquez sur True.

 

Création des plates-formes

1ère plate-forme

Pour faire les plates-formes, nous allons utiliser des plans extrudés.

En vue de dessus (NUM7), ajoutez un plan .
Mulitipliez sa taille par 2 (s puis ctrl).
Mulitipliez sa taille en longueur (size y) par 2 (s puis clic du milieu puis ctrl).
En vue de coté (NUM3), extrudez tous les points d'une unité vers le bas (e puis ctrl).

Allez dans la fenêtre d'édition (F9).
Désactivez l'option Double Sided.
Sélectionnez tout les points (a).
Faites 'Recalc Normals Outside' (ctrl+n).
Sortez de l'Edit Mode (TAB).
Pour être sûr d'avoir un objet avec une taille à 1 et sans rotation, il faut faire 'Apply Size/Rot' (ctrl+a).

Il faut déplacer cet objet pour qu'il soit au-dessus du sol .
Il s'agit de le déplacer de 5 unités vers la droite et de 9 vers le haut (g puis ctrl).

Il faut de nouveau renommer l'objet et le mesh.
Nous allons les appeler pf.

Maintenant, nous allons éditez le matériau du piege (F5).
Ajoutez un matériau et renommez le herbe, par exemple.
J'ai choisi une couleur bleue claire ( R:0 , G:0.8 , B:0 ).
Il faut également changez les paramètres dynamiques du sol.
Pour cela, cliquez sur le bouton DYN (situé sous RGB et HSV).
Mettez le paramètre Fh Dist à 0.5 (pour que notre personnage puisse prendre appui sur le sol quand il saute).

Les 3 autres petites plate-formes

Dupliqez la 1ère plate forme (avec shift+d et pas alt+d !).
Déplacez la nouvelle plate-forme de 19 unités vers la droite et de 4 vers le bas (g puis ctrl).
Nous allons appeler l'objet et le mesh pf2 (renommez-les dans la fenêtre d'édition).

Dupliqez la 2ème plate forme.
Déplacez la nouvelle plate-forme de 32 unités vers la droite.
Nous allons appeler l'objet et le mesh pf3 (renommez-les dans la fenêtre d'édition).

Dupliqez la 3ème plate forme.
Déplacez la nouvelle plate-forme de 26 unités vers la droite et de12 vers le haut.
Nous allons appeler l'objet et le mesh pf4 (renommez-les dans la fenêtre d'édition).

La plate-forme en hauteur

Dupliqez la 4ème plate forme.
Déplacez la nouvelle plate-forme de 18 unités vers la gauche et de4 vers le haut.

Entrez en EditMode (TAB).
Placez-vous en vue de coté (NUM3).
Sélectionnez les points à gauche de la plate-forme (b)
Extrudez ces points de 5 unités vers le bas et de 5 vers la gauche (e puis ctrl).
Continuez jusqu'à obtenir ceci :

Nous allons appeler l'objet et le mesh pf5 (renommez-les dans la fenêtre d'édition).

 

Les limites du niveau ( le secteur )

Pour délimiter les déplacements du personnage, il faut créer un secteur.
Nous allons créer un pavé adapté aux dimensions du décor.

En vue de coté (NUM3), ajoutez un cube.
Mulitipliez sa taille par 15 (s puis ctrl).
Déplacez tous les points de 15 unités vers la droite et de 5 vers le haut (g puis ctrl).
Déselectionnez tout (a).
Sélectionnez les 4 points situés sur la droite du cube.
Déplacez ces points de 70 unités vers la droite (g puis ctrl).
Déselectionnez tout.
Sélectionnez les 4 points situés en haut du cube.
Déplacez ces points de 20 unités vers le haut.

 

Les palmiers

tronc -> cylindre
feuilles -> curve extrudées -> conversion en mesh -> Proportionnal Editing

 

Les items

Les pièces

cylindre, always rot, collision avec Empty, propriété piece

Les coeurs

curve -> Mesh, always rot, collision avec Empty, propriété coeur

 

Le personnage principal

Tout d'abord, sélectionnez la caméra (clic droit) et déplacez-la dans le calque n°2 (m) .

Pour construire notre personnage, nous allons travailler dans le calque n°2 .

Assurez-vous que le curseur-cible est bien au point d'origine.

 

Un empty pour contrôler le personnage

Nous allons maintenant créer un empty qui sera le parent du personnage .

Ajoutez un empty (espace->Empty).
Il doit avoir des valeurs de rotations nulles (alt+r) .

Allez dans le panneau 'Realtime Buttons' (F8).

Mettez cet objet en Actor puis Dynamic et Main Actor avec une taille (Size) de 2 (rayon de collision).

Notre personnage doit se déplacer en 2d .
Ajoutez un sensor Always, un controller And et un Actuator Constraint avec les paramètres suivants :
Loc X, Min:0, Max:0, Damp:0 .
Reliez les entre eux .

Nous allons utilisez les touches fléchées du clavier pour que le personnage se déplace .
Ajoutez un sensor Keyboard puis cliquez sur la case Key et appuyez sur la touche flèchée droite du clavier .
Ajoutez un controller And et un Actuator Object avec une valeur de 3 en force y .
Reliez les entre eux .
Lorsque l'on appuiera sur la touche flèchée droite, une force sera appliquée au personnage vers la droite car la valeur de la force sur l'axe y, 3, est positive .

Ajoutez un sensor Keyboard puis cliquez sur la case Key et appuyez sur la touche flèchée gauche du clavier .
Ajoutez un controller And et un Actuator Object avec une valeur de -3 en force y .
Reliez les entre eux .

Nous allons ajouter une courbe ipo pour que notre personnage saute .
Allez dans le panneau d'édition ipo (shift+f6) .
Cliquez sur dLocZ .
Ajoutez des points (clic gauche) à ces coordonnées :(1;0) puis (3;-0.5) et (5;0.8) .

Cette courbe sera utilisée pour faire sauter le personnage lorsqu'on appuye sur la flèche haut .
Ajoutez un sensor Keyboard puis cliquez sur la case Key et appuyez sur la touche flèchée haut du clavier .
Ajoutez un controller And et un Actuator Ipo en mode Play avec 1 pour Sta et 5 pour End et Force activé.
Reliez les entre eux .
Si nous n'ajoutons pas d'autre condition que Keyboard, le personnage va sauter quand on appuye sur la touche haut, même s'il ne touche pas le sol .
Pour y remédier, ajoutez un sensor Touch et reliez le au controller And précédent .

Lorsque l'Empty se déplace, la caméra doit le suivre .
Pour cela, sélectionner la caméra (clic droit) puis l'Empty (shift + clic droit) .
Maintenant il faut parenter la caméra à l'Empty (ctrl+p) .

Placez-vous en vue de face (1) .
Sélectionnez la caméra (clic droit) .
Effacez ses coordonnées de position (alt+o) .
Déplacez-la (g puis ctrl) de 5 unités vers le haut 20 vers la droite pour avoir le personnage dans le champ de vision de la caméra .

 

Modélisation du corps

Pour faire le corps du personnage, nous allons ajouter une icosphere (espace->add->Mesh->Icosphere).
Sortez de l'Edit Mode (TAB).
La sphère doit avoir des valeurs de rotations nulles (alt+r) .
Retournez dans l'Edit Mode (TAB).
Placez-vous en vue de coté (NUM3).

Sélectionnez le point le plus à droite de la sphère (clic droit) .
[image]
Déplacez le d'une unité vers la doite (g puis ctrl) .

Allez dans la fenêtre d'édition (F9).
Désactivez l'option Double Sided.
Sortez de l'Edit Mode (TAB).

Il faut renommer (F9) l'objet et le mesh pour pouvoir les utiliser sans difficulté dans le jeu.
Nous allons les appeler perso .

Maintenant, nous allons éditez le matériau (F5).
Ajoutez un matériau et renommez le perso .
Choisissez une couleur rouge ( R:0.8 , G:0.0 , B:0.0 ).

Le corps doit suivre l'Empty .
Pour cela, sélectionner le perso (clic droit) puis l'Empty (shift + clic droit) .
Maintenant il faut parenter le perso à l'Empty (ctrl+p) .

 

Les pieds

curve -> mesh
Ipo

Les interactions

Nous allons maintenat ajouter des propriétés à notre objet principal .
Sélectionnez l'Empty (clic droit).

Ajoutons une propriété qui stocke le nombre de vies ( 3 au début ) .
Dans la fenêtre 'Realtime Buttons' (F8), cliquez sur Add Property.
Renommez-la life et changez le type en int et cliquez sur 3 .
Ajoutons maintenant une propriété qui enregistre la santé du perso ( 5 au début, valeur maximale ) .
Cliquez sur Add Property.
Renommez-la health et changez le type en int et cliquez sur 5 .
Enfin, ajoutons une propriété qui stocke le nombre de pièces ramassées ( 0 au début ) .
Cliquez sur Add Property.
Renommez-la bonus et changez le type en int et cliquez sur 0 .
Cliquez sur les petits D (Display ou Debug ?) à droite des propriétés pour pouvoir les observer en temps réel pendant le jeu .

Nous allons gérer ces propriétés.
Enlevons une unité de santé quand l'empty se fait toucher par un méchant !
Ajoutez un sensor Collision puis cliquez sur la case Property et entrez mechant, mettez 5 dans Damp .
(les méchants auront une propriété mechant ...)
Ajoutez un controller And et un Actuator Property Add pour la Prop health avec une valeur de -1 .
Reliez les entre eux .

Ajoutons une unité de bonus quand l'empty touche une pièce .
Ajoutez un sensor Collision puis cliquez sur la case Property et entrez piece .
Ajoutez un controller And et un Actuator Property Add pour la Prop bonus avec une valeur de +1 .
Reliez les entre eux .

Il faut ajouter une unité de vie quand l'empty touche un coeur.
Ajoutez un sensor Collision puis cliquez sur la case Property et entrez coeur .
Il faut que health soit inférieur à 5 .
Ajoutez un sensor Propety Interval puis cliquez sur la case Property et entrez health, entrez 1 dans Min et 4 dans Max .
Ajoutez un controller And et un Actuator Property Add pour la Prop health avec une valeur de +1 .
Reliez les entre eux .

En cas de collision avec un piège mortel ou si la santé est égale à 0, il faut revenir au début du niveau et enlever une vie .
Ajoutez un sensor Propety Egal puis cliquez sur la case Property et entrez health, entrez 0 dans Value .
Ajoutez un sensor Collision puis cliquez sur la case Property et entrez piege .
Ajoutez un controller And .
Ajoutez un Actuator Constraint Loc Y avec des valeurs Min de 4 et Max de 4 .
Ajoutez un Actuator Constraint Loc Z avec des valeurs Min de 2 et Max de 2 .
Ajoutez un Actuator Property Assign pour la Prop health avec une valeur de 5 .
Ajoutez un Actuator Property Add pour la Prop life avec une valeur de -1 .
Reliez les entre eux .

 

Lancer des boules + Rotation du perso

Notre personnage va tirer des boules qui tueront les méchants !!!
Nous allons tout d'abord faire ces boules puis nous allons nous occuper de la rotation du perso .

Ajoutez une IcoSphere (espace->Mesh->IcoSphere).
Diminuez sa taille (s puis ctrl) par 2 (Size à 0.5) .
Sortez de l'Edit Mode (TAB).
Allez dans le panneau 'Realtime Buttons' (F8).
Mettez cet objet en Actor puis Dynamic avec une taille (Size) de 0.750(rayon de collision).
Allez dans la fenêtre d'édition (F9).
Désactivez l'option Double Sided.
Il faut renommer (F9) l'objet et le mesh pour pouvoir les utiliser sans difficulté dans le jeu.
Nous allons les appeler boule .
Maintenant, nous allons éditez le matériau (F5).
Ajoutez un matériau et renommez le boule .
Mettez une couleur bleu ciel ( R:0.6 , G:0.7 , B:1.0 ).

Vous avez maintenant une arme très efficace contre les méchants bonhommes gris ...

Le personnage ira vers la gauche ou vers la droite pendant le jeu, mais il ne peut pas encore se tourner dans la bonne direction .
Nous allons donc faire tourner le Mesh perso ( et pas l'Empty, sinon, il y aura des problèmes avec la caméra ... ) .

Ajoutez un sensor Keyboard puis cliquez sur la case Key et appuyez sur la touche flèchée gauche du clavier .
Ajoutez un controller And et un Actuator Constraint Rot Z avec des valeurs de 0 en Min et 0 en Max.
Reliez les entre eux .
Ajoutez un sensor Keyboard puis cliquez sur la case Key et appuyez sur la touche flèchée droite du clavier .
Ajoutez un controller And et un Actuator Constraint Rot Z avec des valeurs de 180 en Min et 180 en Max.
Reliez les entre eux .

Ajoutez un sensor Keyboard puis cliquez sur la case Key et appuyez sur la touche ctrl .
Ajoutez un controller And et un Actuator Add Object, entrez boule dans OB et 15 dans Time (durée de vie) .
Reliez les entre eux .

Notre personnage est prêt pour être intégré dans le jeu !

 

Retour dans le calque 1

Nous allons déplacer tous les objets nécessaires pour le jeu dans le calque n°1 .
Assurez-vous que vous n'êtes pas en EditMode .
Sélectionnez tous les objets (a) et déplacez-les dans le calque n°1 (m) .
Retournez dans le calque n°1 .
La boule bleue n'a besoin d'être dans ce calque donc déplacez-la dans le calque n°2 (m) .

Il faut déplacer notre personnage pour qu'il se trouve au-dessus du sol .
Placez-vous en vue de coté (NUM3).
Sélectionnez l'Empty (clic droit) .
Il s'agit de le déplacer de 4 unités vers la droite et d'une vers le haut (g puis ctrl).

Vous pouvez maintenant appuyez sur p pour jouer avec notre personnage .

 

Les ennemis

Modélisation

icosphere

Mouvement

gauche, droite, timer

Collision

boule -> end object