Introduction
Dans mon dernier blog, on a regarder comment créer une arme, le rammaser, l'équiper et finalement le tirer. Mais il manque un point crucial à notre mini jeu FPS. Des trucs qu'on peux tirer dessus! Donc dans ce blogue, on va voir comment notre arme et ses projectiles peux intéragir avec l'environement autour de lui.
Créer notre cible
J'ai donc ce mesh comme cible qu'on va utiliser pour notre jeu. Cet asset est pris de ce site ici : https://www.unrealsensei.com/asset/ue5firstgame

Maintenant on doit appliquer notre cible dans notre blueprint, le mettre comme mesh statique et faire la logique! Le résultat des deux premières étapes sont montrées en haut alors on passe à la logique!
La logique
La logique en arrière de cette cible devrait être que chaque fois elle rentre en collision, elle regarde si cela est le projectile de notre arme et finalement elle se détruit. Comme vue dans le blogue précendant, cela est très facile avec les évènements de Unreal Engine qui a exactement ce qu'on a besoin. L'évènement qu'on va utiliser est le "On Component Hit (Static Mesh)".

et boom! Très facile. Ce que ce code fait est exactement ce qu'on a dit. À chauqe collision avec notre mesh de cible, il regarde si la collision est faite par notre projectile d'arme puis, il print à l'écran que cette cible a été frappé et finalement il détruit la cible pour faire une visualisation que cette cible a vraiment été frappé.
Faire un compteur pour garder notre score!
Oui c'est bien que le joueur puisse tirer des cibles mais notre jeux aura besoin d'une sorte d'objectif que le joueur devra accomplir. Dans ce cas, on va ajouter un simple système de score que à chaque fois que notre joueur tire sur un cible, son score va incrémenter de 1. Pour cela, nous devons toucher notre interface utilisateur pour que notre joueur puisse suivre son score. Nous pouvons simplement mettre un champ de texte qui affichera son score.
Pour ce faire, nous devons ouvrir notre widget blueprint que nous avons créé sur le dernier blog pour créer notre réticule et simplement ajouter un champ de texte en haut à droite de l'écran. Nous pouvons également utiliser une fonctionnalité d'Unreal Engine appelée "anchors" qui permet de fixer le champ de texte en haut à droite de l'écran, quelle que soit la résolution.


(La fleur est notre anchor qui est positioné en haut à droite)
Nous avons notre texte, il ne reste plus qu'à incrémenter notre compteur de score pour qu'il s'affiche sur notre interface utilisateur. Tout d'abord, nous allons encapsuler notre champ de texte dans une variable et créer une fonction qui sera appelée chaque fois que nous voudrons donner une nouvelle valeur au texte.



Nous allons ensuite créer une fonction pour incrémenter le compteur de points. Nous devrons créer 2 variables, l'une pour garder une trace du compteur de score total et de ce qui sera utilisé pour être incrémenté et enfin une autre variable pour créer une instance de notre interface utilisateur puisque notre fonction créée ci-dessus aura besoin d'une valeur de type widget blueprint pour fonctionner.

Finalement, nous devons appeler la fonction d'incrémentation à chaque fois que notre cible est sur le point d'être détruite, nous allons donc créer une instance du fichier lorsque notre fonction est et l'appeler.

et c'est tout! On a une interface graphique fonctionelle et un jeu FPS de base!


References
Unreal Sensei, How to Create a Game in Unreal Engine 5 - UE5 Beginner Tutorial, https://www.youtube.com/watch?v=1XjgLKrb4_M (Consulté le 20 mars et utilisé majoritairement pour prendre les assets de cible)
Moi aussi comme référence. Surtout moi :D
Commentaires1
Bon jeu FPS et article sur Unreal Engine!
Si vous avez plus de temps pour ajouter une fonctionnalité dans votre jeu qu'est-ce que ce serait?