MyGame.blend: Présentation

par Jean-Baptiste PERIN




Cette page présente la réalisation d'une scène de présentation du jeu MyGame.blend

Ce genre de scène doit préférablement être la dernière réalisée dans un jeu car c'est à ce moment là que vous connaissez tous les intervenants de votre projet de jeu. De plus, pour être représentative de votre jeu, le contenu graphique de cette scène  doit être imprégnée de la griffe du jeu. Et pour celà vous devez déjà avoir du contenu 2D et 3D de votre jeu.

Dans la scène de présentation qui est décrite ici, le joueur voit défiler les contributeurs au projet. Pour faire avancer la liste, il doit appuyer sur la touche Espace et peut, à tout moment, appuyer sur Echap pour quitter le jeu. En image de fond à la liste qui défile, on place une image d'un paysage du jeu.
Lorsque tous les contributeurs ont été affiché, l'utilisateur débouche sur le menu du jeu.

Connaissances requises

- Créer un texte en 3D: lien1 lien2 
- UV-texturer une mesh: lien1, lien2
- Animer le déplacement d'un objet par IPO: lien1, lien2, lien3, lien4, lien5
- Redaction de script Python

Réalisation de la scène 

Lorsque le joueur appuiera sur la touche Espace, le texte défilera en jouant 10 frames de son Ipo. pour qu'à chaque appuie sur la touche Espace, le texte affiché soit la suite de ce qu'on vient de lire .. on enregistre le numéro de paragraphe dans une propriété frame.
La propriété frame prendra succéssivement les valeurs 0,1,2,3,...
Lorsque frame vaudra 0 et que l'utilisateur appuiera sur la touche Espace, l'objet jouera les frames 1 à 11 de son IPO
Lorsque frame vaudra 1, les frames 11 à 21
Lorsque frame vaudra 2, les frames 21 à 31
etc...
Lorsque la valeur de frame arrivera à 5, on quittera la scène courante en chargant la scène MenuJeu.

Créez une scène Presentation vide.
Créez une scène MenuJeu vide vers laquelle aller lorsque la présentation des contributeurs sera terminée puis revenez  à la scène Presentation.

Le placement des objets de la scène de présentation Créez une caméra orientée horizontalement et visant dans l'axe des Y positifs.

Créez un plan et uvmapper l'image de fond (représentant un décor) sur ce plan. Positionner le plan de manière à ce qu'il occupe tout le champ de visée de la caméra.

Créez un text 3D présentant vos contributeurs et transformer le en Mesh nommé Credits. Placez l'objet Credits entre le plan et la caméra.

Enregistrez lui une IPO qui fait défiler le texte devant la caméra sur un nombre d'images égal à 10 fois le nombre de contributeurs à affichés

L'ipo du texte de présentation


Sélectionnez l'objet Credits .
Ajoutez lui une propriété frame de type Int (entier) initialisée à 0.
Ajoutez un sensor Space (de type Keyboard) réceptionnant les appuis sur la touche Espace et un sensor frame==5 de type Property qui détecte l'égalité frame=5.
Créez 2 controller de type AND et un de type Python, réglé pour utiliser le script pres_scroll.py.
Créez un actuator play de type Ipo qui animera l'objet Credits. Et un actuator =MenuJeu de type Scene qui remplacera la scene courante par la Scene MenuJeu
logic_presentation


Description de la logique de la scène

Pour implémenter la dynamique de notre sècne nous utiliserons la logique suivante:

logic_presentation


Un Sensor de type Keyboard reçoit les appuis utilisateur sur la touche Espace. A chaque appui, cela déclenche :
Noter que pour éviter les rebonds clavier nous utilisons une fréquence différente de 0 (100 dans l'exemple) dans le sensor Keyboard Space.
Notez également que dans l'image ci-dessus,  les champs Sta et End de l'Actuator play ont été renseignée inutilement. Cette initialisation n'est en effet pas nécessaire car c'est le script Python qui affecte l'intervale de frame effectivement joué pour l'animation du texte pendant le jeu.

Le sensor frame==5 de type Property sert à détecter l'arrivée à la valeur 5 de la propriété frame et déclenche le changement de scène vers MenuJeu effectué pas l'Actuator =MenuJeu.

Les scripts utilisés dans cette scène


télécharger le script pres_scroll.py


# Ce script affecte les images de début et de fin d'animation
# d'un actuator Ipo en fonction de la propriété 'frame' de l'objet
# L'objet doit avoir :
# - une propriété 'frame'
# - un sensor
# - un actuator de type ipo

# On recupere le controlleur courant et l'objet concerne cont = GameLogic.getCurrentController()
own = cont.getOwner()

# Si le sensor qui nous a declenche est actif if cont.getSensors()[0].isPositive():

# On affecte les valeurs de debut et de fin en fct de la propriété frame cont.getActuators()[0].setStart(own.frame*10+1)
cont.getActuators()[0].setEnd(own.frame*10+11)

# On incrémente la propriété frame own.frame=own.frame+1




(C) 2006 Jean-Baptiste PERIN - released under Blender Artistic License - www.blender.org