Créer un jeu avec Unity 3D

Solution exercice 1

Auteur

ToutApprendre

- Titre : Créer un jeu avec Unity 3D

- Auteur : ToutApprendre

- Parution : 1 décembre 2014

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2014 Équipe rubrique 2D/3D/Jeux. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Navigation

- I. Vidéo

- II. Exercice

- III. Solution

- III-A. La classe « Personnage »

- III-B. La classe « Heros »

- III-C. La classe « Ennemi »

- III-D. La fonction Start()

- IV. Améliorations des classes

- V. Commenter

- VI. Remerciements

- Navigation

Navigation

Sommaire

Énoncé exercice 1

I - Vidéo

Animation en format "youtube" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/watch?v=QE04bd-2Ez4

II - Exercice

Vous pouvez lire l'énoncé de l'exercice ici.

III - Solution

La solution utilise l'héritage, donc n'hésitez pas à revoir la vidéo dédiée à ce sujet.

III-A - La classe « Personnage »

La classe « Personnage » constitue la classe de base de tous nos personnages, que ce soit Link (un Heros) ou Armos (un Ennemi). Pour cela, elle contient deux variables membres :

- le nom du personnage ;

- la vie du personnage (définie par défaut à 100).

Son constructeur est simple et ne fait que copier le nom passé en paramètre à celui-ci.

class Personnage
{
var nomPersonnage:String;
var viePersonnage:int = 100;

function Personnage(nom:String){
nomPersonnage = nom;
}
}

III-B - La classe « Heros »

class Heros
{
var chance:int;

function Heros(nom:String){
super(nom);
Debug.Log("Je suis un héros : " + nomPersonnage);
}

function Attaquer(){
Debug.Log(nomPersonnage + " attaque !");

chance = Random.Range(1,6);
if (chance == 1){
return true;
}else{
return false;
}
}
}

III-C - La classe « Ennemi »

class Ennemi
{
var chance:int;

function Ennemi(nom:String){
super(nom);
Debug.Log("Je suis un méchant : " + nomPersonnage);
}

function Attaquer(){
Debug.Log(nomPersonnage + " attaque !");

chance = Random.Range(1,6);
if (chance == 1){
return true;
}else{
return false;
}
}
}

III-D - La fonction Start()

La fonction Start() est l'endroit où le combat se déroule.

function Start(){
var heros:Heros = new Heros("LINK");
var ennemi:Ennemi = new Ennemi("ARMOS");

while(heros.viePersonnage > 0 && ennemi.viePersonnage > 0){

Debug.Log("État des vies : " + heros.nomPersonnage + " : " + heros.viePersonnage +
" ------- " + ennemi.nomPersonnage + " : " + ennemi.viePersonnage);

var attaqueLink = heros.Attaquer();

if (attaqueLink)
{
ennemi.viePersonnage -= 10;
Debug.Log(heros.nomPersonnage + " fait perdre -10 à " + ennemi.nomPersonnage);
}else{
Debug.Log(heros.nomPersonnage + " échoue");
}

var attaqueArmos = ennemi.Attaquer();

if(attaqueArmos)
{
heros.viePersonnage -= 10;
Debug.Log(ennemi.nomPersonnage + " fait perdre -10 à " + heros.nomPersonnage);
}else{
Debug.Log(ennemi.nomPersonnage + " échoue");
}
}

Debug.Log("Fin de partie ! ");

if(heros.viePersonnage > ennemi.viePersonnage){
Debug.Log(heros.nomPersonnage + " gagne!");
}else{
Debug.Log(ennemi.nomPersonnage + " gagne!");
}
}

IV - Améliorations des classes

Ici, les deux classes sont très semblables, voire trop. En effet, le code des deux fonctions « Attaquer », que ce soit dans Heros ou dans Ennemi est identique. Le code aurait pu être implémenté une unique fois, dans la classe Personnage.

L'avantage des classes est de permettre de créer de nouvelles aptitudes qui ne seraient disponibles, soit que pour les Heros, soit que pour les Ennemis. N'hésitez pas à expérimenter avec le code et à rajouter des améliorations dans ce combat.

V - Commenter

Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum, ou encore, poser vos questions dans le forum Unity.

VI - Remerciements

Nous remercions « ToutApprendre » pour l'élaboration et la réalisation de ces vidéos. Vous pouvez retrouver sa chaîne YouTube en suivant ce lien.

Navigation

Sommaire

Énoncé exercice 1