Ressources Magic Makers

 

Site en maintenance

 
Nous sommes actuellement entrain de mettre à jour les ressources de ce site.
Pendant la mise à jour vous pouvez retrouver tous les nouveaux contenus sur le site
 

https://lp-magicmakers.fr/

 
 

Space Invaders - Avancé

Tu as déjà une Base Solide pour ton Space Invaders ! Avec des déplacements pour le Joueur et les Obstacles qui tombent du ciel  ! Bravo ! On va maintenant ajouter des éléments supplémentaires 🙂  

Faire des ennemis !

Maintenant que tu sais comment faire des obstacles, tu peux ajouter des ennemis! 

Les ennemis fonctionnent exactement comme des obstacles: Ils vont tout droit et détruisent le joueur quand ils le touchent.

Les seules différences sont que:

  • L’ennemi a un sprite différent
  • L’ennemi sera destructible par le joueur

Reproduis ce que tu as appris en faisant les obstacles! Fais-donc un prefab Ennemi et assigne-lui les scripts qu’il faut (avancer tout droit + détruire le joueur) avec bien sûr les composants nécessaires à la collision (rigidbody + colliders). Tu n’as pas besoin de réécrire du code vu que tu as déjà fait tout ce qu’il faut en créant les obstacles!

Une fois que ton prefab est prêt duplique le générateur d’obstacles et remplace le prefab par celui de l’ennemi. Tu devrais maintenant avoir deux types de dangers à éviter!

Tirer sur les ennemis !

C’est bien beau d’éviter les obstacles ET les ennemis mais cela serait plutôt sympathique de pouvoir riposter! N’aie crainte, petit maker intrépide. Ce guide est là pour t’armer… du savoir! 

 

Tu vas apprendre comment faire un canon qui tire sur les ennemis! Laissons les obstacles indestructibles pour le moment!

 

Le projectile

Avant de pouvoir tirer, il faudra déjà des munitions! Alors créons un projectile en utilisant les éléments qu’on a déjà vu ensemble!

 

  • Explore tes assets et choisis le sprite de ton projectile! Glisse le dans ta scène
  • Fais-le avancer tout droit en lui attachant le même script que tes obstacles!
  • Pour qu’il puisse toucher l’ennemi, donne-lui un box collider 2D (avec IsTrigger activé) et un Rigidbody2D (sans gravité)
  • Assigne-lui le script qui permet de détruire un objet qui le touche et précise bien le tag de l’ennemi dans l’inspecteur
  • Ouvre le prefab de l’ennemi et assigne-lui ce fameux tag! Assure-toi que l’ennemi a bien un collider aussi!
  • Maintenant tu devrais laisser le projectile toucher l’ennemi pour voir si il le détruit!

Si tu es satisfait de ton projectile, fais-en un prefab! 

Le canon

Maintenant que tu as un projectile tu devrais pouvoir pouvoir construire le canon! 

  • Explore tes assets et cherche un sprite pour le canon! Ce n’est pas obligatoire d’en avoir un mais c’est plutôt stylé
  • Glisse le sprite du canon sur la scène!

Ajoute à ce sprite un nouveau script, qui servira à instancier un objet à chaque fois qu’on clique. Appelons ce script GenerateurAuClic ou quelque chose dans ce genre!

public class GenerateurAuClic : MonoBehaviour
{
    public GameObject prefab;

    private void Update()
    {
        if (Input.GetButtonDown(« Fire1 »))
        {
            Instantiate(prefab, transform.position, transform.rotation);
        }
    }
}

Il te suffit ensuite de glisser le prefab du projectile dans l’inspecteur:

Le canon devrait pouvoir tirer un projectile à chaque fois que tu cliques sur la souris! Tu peux même faire de ce canon un prefab et en faire un enfant de ton joueur!

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Redémarrer la Scène après la Mort

Lors de la mort du Héros cela serait bien de redémarrer la scène !

On va créer un nouveau Script nommé “ChangerSceneQuandCibleDetruite” par exemple.

En premier lieu il va falloir dire à Unity via le Script qu’on va manipuler les scènes (c’est la 4ème ligne) :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; // <- à implémenter pour changer de scène!

Puis on va déclarer deux public, l’un qui ciblera le joueur et l’autre la scène en cours :

    public GameObject cible; // objet qui va déclencher le changement de scène une fois détruit
    public string prochaineScene; // nom de la prochaine scène

Puis dans l’Update on va faire l’action de redémarrer la scène si la cible est détruite :

void Update()
    {
        if (cible == null) // vérifie si l’objet n’existe plus sur la scène
        {
            SceneManager.LoadScene(prochaineScene); // passe à la scène qui porte le nom définie dans prochaineScene.
                                                    // Doit être inclut dans la liste du build settings!
        }
    }

On peut sauvegarder tout de suite le Script, le donner à un objet de la scène comme un Empty Object créé pour l’occasion. Et renseigner les informations dans l’inspector. A savoir glisser le Héros et écrire le nom de la scène actuelle.

Et avant de tester l’action on doit réaliser une dernière action :

Dans File > Build settings on va glisser la scène dans la fenêtre