Virtual : Resonance – Dev Diary 3

Day 4-5-6

  • Création d’un obstacle inesquivable
  • Le GlassWall : mur de verre

devllog3-45.png

Okay le mur de verre est rouge … mais c’est un prototype, il n’a pas besoin d’être beau. Le mur détruit est à coté : c’est juste une division en cubes plus petit. Pas besoin de plus tant que le code marche …

  • Changement de texture à chaque Hit : Création du code « BreakingGlass »
  • 3 Hits et il est détruit
  • Mouvement inexorable vers le joueur : la vitre fonce vers vous
  • Bagarre sur comment changer de texture à chaque hit :
    • Définir un tableau qui contient les textures
    • 1er texture = texture à afficher
    • changer de texture à chaque hit
    • faire un décompte : 1 tir = prochaine texture du tableau
    • quand il n’y a plus de texture dans le tableau : l’objet est détruit
      • materialNumber += increase;
        if (materialNumber != materials.Length)
        {
        actualTexture.sharedMaterial = materials[materialNumber]; // éviter les Out of Array
        }
  • Instancier une animation de destruction : quand le mur est détruit il tombe en morceaux
  • Création d’un nouvel objet : les shrapnels de verre. Création de cubes plus petit
  • Ça marche mais les cubes tombent raide, sans prendre en compte la vitesse de la vitre …
  • Se battre avec la commande Instantiate …
    • La solution fut la suivante : l’objet instancié est mis en mémoire dans une variable
    • capturer le RigidBody (contient les infos de masse et de vitesse) de chaque enfant de l’objet (le mur détruit est le « parent », les débris sont les « enfants« . Quand le mur est détruit, il est remplacé par les débris)
    • créer un tableau qui contient tous les RigidBody des enfant
    • leurs dire : votre vitesse est celle de la vitre détruite
      • En code ça donne :
      • //Instancier l’objet
        GameObject glass;
        glass = Instantiate(glassExplosion, gameObject.transform.position, gameObject.transform.rotation);
        //lui faire hériter la vélocité du parent pour le mouvement des shrapnel
        Rigidbody[] rbclone; //créer un tableau pour inclure les rigidbody des enfants
        rbclone = glass.GetComponentsInChildren<Rigidbody>(); //prendre les RigidBody des enfants de glass
        foreach (Rigidbody rbchildren in rbclone)
        {
        rbchildren.velocity = this.gameObject.GetComponent<Rigidbody>().velocity; //pour chacun, leur atribuer la vélocité
        }
        //Destroy The Glass
        Destroy(this.gameObject);
  • On a un mur qui avance vers le joueur et qui est destructible. Quand il est détruit les débris tombent en conservant la vitesse de la vitre détruite !
  • Faire joujou avec les Renderer (les rendus) et les trainées pour obtenir un effet « Tron » aux tirs

 

 

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s