Télécharger les ressources

Exercice 2.1

  1. Créez un script PyramidGeneratorComponent qui génère une pyramide à base carrée. La longueur de chaque arête du carrée doit être une valeur modifiable à partir de l’inspecteur. L’hauteur de la pyramide doit aussi être un attribut modifiable. Commencez avec les sommets et les triangles. Pour un défi ajouté, essayer de produire ces données de façon procédurale (au lieu de placer chaque sommets « manuellement », par exemple).

  2. Utiliser l’image TheyKnow.png pour texturer la pyramide exactement comme dans la vidéo. Il s’agit d’un travail sur les UVs du maillage.

  3. Créez un GameObject pour tester.

Exercice 2.2

  1. Créez une composante TileSelectorComponent.

  2. Changer le code de la composante pour le suivant :

    using UnityEngine;
    
    [RequireComponent(typeof(MeshFilter))]
    public class TileSelectorComponent : MonoBehaviour
    {
        public int nTiles = 1;
        public int selectedTile = 0;
        private bool started;
        private Mesh meshToUpdate;
    
        private void Start()
        {
            meshToUpdate = GetComponent<MeshFilter>().mesh;
            UpdateUVs();
            started = true;
        }
    
        private void OnValidate()
        {
            if (!started)
                return;
            UpdateUVs();
        }
    
        public void UpdateUVs()
        {
            //VOTRE CODE DRETTE ICITTE
        }
    }
  3. Implémentez la fonction UpdateUVs(). Cette fonction doit changer les UVs du maillage meshToUpdate afin de sélectionner qu’une section de la texture à utiliser. Chaque section est nommée une « tuile » (tile, en anglais). Si la texture donnée contient 5 tuiles, par exemple, vous devez affecter nTiles à 5 dans l’inspecteur. selectedTile représente l’indice de la tuile sélectionnée.

    Tenez pour acquis que les dimensions de chaque tuiles doivent être pareils et que toute l’image doit être utilisée. Bref, divisez la texture en nTiles tuiles de dimensions égales !

  4. Créez un GameObject pour tester.

Exercice 2.3

  1. Créez une composante TileAnimatorComponent;
  2. Cette composante doit communiquer avec un TileSelectorComponent;
  3. Cette composante doit créer une animation en utilisant des attributs et méthodes du TileSelectorComponent;
  4. C’est à vous de trouver comment ! Un indice : utiliser un interval de temps sera pertinent. Souvenez-vous de ce chapitre de KJ1