Ce projet intitulé : "Bataille Navale(jeux vidéos)" a été réalisé sur Unity dans le cadre de ma formation de développement d’applications et de jeux vidéos. Ce mini projet de jeux vidéo à donc était programmé en C# et avec les composants intégrés à Unity.
Le projet était donc de créer un jeux de bataille navale entre deux bateaux pirates pouvant : tirer des boulets de canon, déployer et rétracter les voiles, couler, avancer, tourner, et flotter sur le plan d’eau.
Mes objectifs à travers ce projet étaient de :
Pour les assets, j’en ai tout simplement pris des existants sur l’Assets Store de Unity et les ai importés. J’en ai également créé certains directement dans Unity : boulet de canons, particules d’explosions, etc. Les effets sonores, plan d’eau, ciel ont également étaient repris de l’Assets Store.
Tout d’abord, j’ai créé un script “BoatControl.cs” qui rassemblera toutes les fonctions citées dans le sous-titre.
Une première fonction handleSails() vas permettre de déplier les voiles et de faire avancer le bateau, celle-ci utilise le Plugin de ITween afin d’agir sur le scaling des voiles et donc de faire l’animation de déploiement. Elle vas également changer le vecteur de force qui affecte le bateau afin de le faire avancer. Tout cela est déclenché par un input sur la barre espace.
Une deuxième fonction handleSteering() vas permettre de gérer le gouvernail du bateau et donc de changer sa direction (ici une rotation d’axe Y). Pour ajouter du réalisme cette fonction se déclenchera uniquement si le bateau a les voiles dépliées, car, un bateau immobile ne peut pas tourner uniquement avec son gouvernail. Le mieux aurait été d’ajouter la possibilité de tourner proportionnellement à la vitesse. Nous allons donc créer un vecteur Dir égal à la valeur du vecteur unitaire de l’input d’Axe horizontal( gérer dans le gestionnaire d’input de Unity) multiplié par une variable de vitesse. Puis on vas l’appliquer à la vitesse angulaire du bateau.
Dans ce même script “BoatControl.cs”, je gère la fonction ShotBullet() permettant de tirer un boulet de canon, par simple instanciation d’un préfab et application d’une force physique. Les fonctions reload() et rechargement() permettent de gérer le rechargement du tirs (et donc éviter le spam), générer un son, et détruire le boulet de canon tombé dans l’eau pour l’optimisation.
Enfin, au contact de l’île on vas déclencher une scène qui se déroule sur celle-ci. Le but, ici, était de simuler le passage à une phase de jeux en première personne sur terre (inspiration : Assassin’s Creed Black Flag).
Dans un autre script “BoatHealth.cs”, je vais gérer le fais de prendre des dégâts et de couler. Une première fonction takeDamages() vas tout simplement décrémenter la variable de vie du bateau et lorsque celle-ci atteindra zéro, on déclenchera la fonction flow() qui vas appliquer la gravité au bateau et donc le faire couler.
Une fonction setHealthUI() vas se charger d’actualiser l’affichage de cette variable dans l’interface utilisateur.
Enfin un script “FollowBoat.cs” vas gérer l’ennemie, sa poursuite du joueur et ses attaques. Ici, le bateau ennemie vas reprendre la plupart des fonctions du bateau joueur. Dans un LateUpdate() nous allons configurer le bateau ennemie pour qu’il suivent un objet vide parenté au joueur sur la gauche du bateau, et, faire en sorte que cela se fasse de manière fluide(Lerp). Une autre fonction ShootPlayer() vas reprendre la fonction ShotBullet() du joueur et vas se déclencher de manière répétée.