Créer un jeu avec Unity 3D

Solution exercice 2

Auteur

ToutApprendre

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

- Auteur : ToutApprendre

- Parution : 8 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

- I. Navigation

- II. Vidéo

- III. Exercice

- IV. Solution

- IV-A. Orientation de la tourelle

- IV-B. Tir de la tourelle

- V. Commenter

- VI. Remerciements

- VII. Navigation

I - Navigation

Sommaire

Énoncé exercice 2

II - Vidéo

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

III - Exercice

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

IV - Solution

La solution utilise plusieurs éléments vus dans les cours précédents :

- les quaternions ;

- la souris ;

- le lancer de rayon ;

- jouer un son.

IV-A - Orientation de la tourelle

La première partie de la fonction Update() permet de gérer l'orientation de la tourelle.

rayMouse = GameObject.Find("Main Camera").camera.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(rayMouse,hit))[
if(hit.transform/name == "Place"){
positionToLook = hit.point;
}
}

directionToLook = positionToLook - transform.position;

transform.rotation = Quaternion.LookRotation(-directionToLook);

On crée un rayon, provenant de la caméra et allant en direction de la souris, avec la fonction ScreenPointToRay(). Ensuite, il suffit de savoir si le rayon touche un objet, dans notre cas le sol appelé « Place », et à quel endroit. Ce point de collision entre le rayon et le sol est ensuite utilisé pour déterminer la direction de la tourelle.

IV-B - Tir de la tourelle

La seconde partie de la fonction Update() permet de gérer le tir de la tourelle.

if(Input.GetMouseButtonDown(0)){
var ball:GameObject = Instantiate(bullet,positionBullet.position,positionBullet.rotation);
var particle:GameObject = Instantiate(explodeParticle,positionBullet.position,positionBullet.rotation);

ball.renderer.material.color = Color(Random.value,Random.value,Random.value);
ball.rigidbody.AddForce(positionBullet.forward * shotSpeed * Time.deltaTime);
audio.Play();
Destroy(particle, 1);
Destroy(ball, 3)
}

Le test vérifie si le bouton de la souris est appuyé. Ensuite, deux objets sont créés, le premier : la balle propulsée, le second : les particules. La couleur de la balle est modifiée aléatoirement. Une force lui est ajoutée pour la propulser dans la direction du canon de la tourelle. Finalement, un son est joué. Les deux dernières lignes permettent la destruction après une et trois secondes pour les particules et la balle, respectivement.

La destruction permet de ne pas surcharger la machine avec des objets inutiles.

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.

VII - Navigation

Sommaire

Énoncé exercice 2