Ajouter des fonctionnalités au jeu
Si chaque événement doit être décris avec autant de détails que précédemment cela risque d'être un très long tutoriel. Accordons nous pour rendre la description un peu plus brève pour les prochains événements. Souvenez-vous, les étapes pour ajouter une condition ou une action sont:
1. Double-cliquez pour insérer un nouvel événement, ou cliquez le lien Add action pour ajouter une action.
2. Double-cliquez l'objet des lequel la condition/action se trouve.
3. Double-cliquez la condition/action que vous voulez.
4. Entrez les paramètres au besoin.
A partir de maintenant les événements seront décrits comme l'objet, suivi de condition/action, suivi des paramètres. Par exemple, l’événement que nous venons d'insérer pourrait s'écrire:
Add condition System -> Every tick
Add action Player -> Set angle towards position -> X: Mouse.X, Y: Mouse.Y
Faire en sorte que le Player (joueur) tire
Quand le joueur clique l'objet Player devrait tirer une balle. Cela peut être fait à l'aide de l'action Spawn an object de l'objet Player (joueur), qui créé une nouvelle instance d'un objet à la même position et angle qu'un objet référent. Le behavior Bullet movement que nous avons ajouté plus tôt le fera ensuite voler/avancer vers l'avant. Faites l’événement suivant:
Condition: Mouse -> On click -> Left clicked (par défaut)
Action: Player -> Spawn another object -> Pour Object, choisissez l'objet Bullet (balle). Pour Layer, marquez 1 (le layer "Main" est le layer 1 - souvenez-vous Construct 2 compte depuis zéro). Laissez Image point à 0.
Votre événement devrait ressembler à ça :
Si vous exécutez le jeu vous remarquerez que les balles partent du milieu du corps du joueur plutôt que du bout de son arme. Corrigeons cela en ajoutant un image point au bout de l'arme. (Un "image point" est juste une position dans l'image depuis laquelle vous pouvez créer/placer des objets.)
Cliquez droit sur l'objet "Player" (joueur) dans la barre de projet ou d'objet et sélectionnez Edit animations (éditer les animations).
L'éditeur d'images pour le joueur apparaît de nouveau. Cliquez sur l'outil "origin and image points":
...et la fenêtre d'"image points" s'ouvre:
Notez que le point d'origine de l'objet apparaît en tant que point rouge. C'est le "hotspot" ou "point de pivot" de votre objet. Si vous tournez l'objet, il tourne autour de son point d'origine. Nous désirons ajouter un autre "image point" pour représenter l'arme donc cliquez sur le bouton vert add (ajouter). Un point bleu apparaît, c'est notre nouvel "image point". Cliquez gauche au bout de l'arme du joueur afin de placer l'"image point" à cet endroit:
Fermez l'éditeur d'image. Double-cliquez l'action Spawn an object que nous avons ajouter tout à l'heure et changez Image point à 1 (Le point d'origine sera toujours le premier point et rappelez-vous que Construct 2 compte depuis zéro). Cet événement devrait maintenant rassembler à ceci, et notez bien que cela dit Image point 1 maintenant :
Lancez le jeu. Les balles partent maintenant du bout de votre arme ! Les balles ne font encore rien cependant. Cependant, vous allez vous rendre compte qu'une fois que vous prenez le coup avec les système d’événements il est rapide d'ajouter des fonctionnalités.
Maintenant faisons en sorte que les balles (objet Bullet) tuent les monstres. Ajoutons l’événement suivant:
Condition: Bullet -> On collision with another object -> Sélectionne l'instance Monster (monstre).
Action: Monster -> Destroy
Action: Bullet -> Spawn another object -> Explosion, layer 1
Action: Bullet -> Destroy
L'effet d'explosion
Exécutez le jeu et essayez de tirer sur un monstre. Oups, l'explosion a une grosse bordure noire !
Vous aviez peut-être prédit que cela ressemblerait à ça en jeu et vous êtes demandé si notre jeu allait vraiment ressembler à cela! Ne vous inquiétez pas, cela ne sera pas le cas. Cliquez sur l'objet Explosion soit dans la barre d'objets en bas à droite ou dans la barre de projet (qui est en onglet avec la barre de layers). Les propriétés de l'objet apparaissent dans la barre des propriétés à gauche. En bas, sélectionnez la valeur Addidtive de la propriété Blend mode. Maintenant essayez de nouveau le jeu.
Pourquoi cela fonctionne-t-il ? Sans entrer dans les détails techniques les images ordinaires sont copiées par dessus l'écran. Avec l'effet "additive", chaque pixel est à la place ajouté (comme dans une addition) avec le pixel d'arrière-plan sous lui. Noir est un pixel de valeur 0 donc rien ne s'ajoute, vous ne voyez pas l'arrière-plan noir. Les couleurs plus claires ajoutent plus et donc apparaissent plus visiblement. Ceci est super pour les explosions et les effets de lumière.
Rendre les monstres un peu plus malins
Pour l'instant, les monstres se "promènent" vers l'extérieur du layout sur la droite. Rendons les un peu plus intéressants. Tout d'abord, donnons leur un angle aléatoire au départ.
Condition: System -> On start of Layout
Action: Monster -> Set angle -> random(360)
Ils erreront encore pour toujours lorsqu'ils quittent le layout. Gardons les à l'intérieur. Ce que nous allons faire est de les faire pointer en direction du joueur (objet Player) lorsqu'ils quittent l'espace du layout. Cela permet deux choses: ils restent toujours dans le layout et si le joueur ne se déplace pas les monstres iront directement sur lui !
Condition: Monster -> Is outside layout
Action: Monster -> Set angle toward position -> Pour X, Player.X - Pour Y, Player.Y.
Exécutez le jeu. Si vous attendez un peu vous allez remarquer que les monstres restent dans l'espace du layout et qu'ils vont dans toutes sortes de directions. C'est à peine une IA (intelligence artificielle) mais cela sera suffisant.
Maintenant, supposons que nous voulions tirer sur un monstre 5 fois avant qu'il meurt au lieu d'instantanément comme à l'heure actuelle. Comment réalisons-nous cela ? Si nous utilisons un seul compteur "Health" (santé) alors lorsque nous aurons touché un monstre cinq fois tous les monstres vont disparaître. A la place, nous avons besoin que chaque monstre se "souvienne" de sa propre santé. Nous pouvons y parvenir à l'aide des variables d'instance (instance variables).