Last Battle
Move : Z Q S D
Attack or use : Left click
Change held item : 1, 2, 3, 4, 5 (Top keys)
Description du projet :
Projet personnel de fin de formation à l'école 3WA réalisé en deux semaines.
Utilisation du logiciel Aseprite pour la création de l'ensemble des sprites.
Déplacement des ennemies :
Création d'un système de pathfinding avec l'algorithme A*. Le monde est découpé en case (Node) placé dans une grille d'une certaine taille.
Visualisation de la grille avec des gizmos :
Chaque case au moment de la recherche de chemin à 3 données particulières : La distance la séparant de la case de départ (Gcost), la distance la séparant de la case d'arrivée (Hcost) et si la case est 'walkable' ou non. L'addition du Gcost et du Hcost va nous donner le Fcost qui représente la 'valeur' de la case. Avec ces données nous pouvons alors parcourir les cases à la recherche du chemin le plus rapide jusqu'à la cible. Le chemin le plus rapide est celui dont le Fcost totaux de chaque case est le plus bas.
Barre d'action :
J'ai créé des Scriptable Objects en partant d'une classe item :
Item > Weapon > Sword || Item > Consumable > HealthPotion & StaminaPotion
Chaque item contient un prefab du gameObject à instancier et des paramètres qui lui sont propre. Les mains du personnage sont des gameObjects distincts du corps ce qui me permet de tout simplement placer en enfant de la main gauche l'objet couramment sélectionné dans la barre d'action. En fonction du type d'objet dans la main gauche le comportement du joueur va s'adapter.
Au lancement du jeu ou à chaque nouvel objet dans la barre d'action on instancie les gameObject qui ne le sont pas déjà et on les stocke en dehors de la map à une certaine position. En changeant l'item sélectionner on vient tout simplement changer le parent au transform de notre 'inventaire' et le déplacer dans notre 'zone d'inventaire'. On récupère alors l'objet sélectionner, on le met en enfant de la main gauche puis on adapte sa position et sa rotation également à celle de la main gauche.
Système de vague :
Création d'un script WaveManager qui aura en paramètre un tableau de Wave qui est une classe privée créée également dans la classe WaveManager. Chaque élément 'Wave' a pour paramètre les prefabs des monstres à faire apparaître, les positions sur lesquels les monstres vont apparaître, le nombre d'ennemie et le délai d'apparition entre chacun d'entre eux . Quand une vague est fini elle passe la WaveState de WaveManager à l'état LOADING pour qu'il charge la vague suivante.
Barre de vie et d'endurance :
Création de deux classes HealthBar et StaminaBar qui vont tous deux hériter de la classe ConsumableBar qui s'occupera de définir à quel sprite afficher en fonction des points maximum et des points courant de la barre.
Toute classe héritant de ConsumableBar aura juste à redéfinir la propriété MaxBarPoint et CurrentBarPoint pour être opérationnel.
Ce script est à placer directement sur le gameObject contentant directement l'image de la barre.
Il suffira ensuite d'ajouter les sprites de la barre, allant de la barre pleine à la barre vide.
Leave a comment
Log in with itch.io to leave a comment.