Menu
CoddyTech

Échelle

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 25 sur 67.

transform.localScale multiplie la taille d’un objet le long de chacun de ses axes. Un cube par défaut mesure 1 unité de chaque côté ; un cube dont le localScale vaut (4, 1, 0.5) mesure donc 4 unités de large, 1 unité de haut et une demi-unité de profondeur. Pour obtenir une taille uniforme, multiplie Vector3.one, qui vaut (1, 1, 1). Cette bulle de savon grossit de 0.3 par seconde jusqu’à atteindre 3 unités de diamètre :

public float size = 1f;

void Update()
{
    size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
    transform.localScale = Vector3.one * size;
}

Mathf.Min(a, b) renvoie le plus petit de ses deux nombres ; size augmente donc jusqu’à atteindre 3, puis reste à 3.

La mise à l’échelle s’effectue autour du pivot de l’objet, qui se trouve au centre pour les formes intégrées de Unity. Un cube de 1 unité posé au sol a son centre à y = 0.5. Si tu le redimensionnes pour qu’il mesure 3 unités de haut, il s’étend de 1.5 vers le haut et de 1.5 vers le bas à partir de ce point : sa moitié s’enfonce donc dans le sol. Pour qu’il repose sur le sol, son centre doit se trouver à la moitié de sa hauteur : y = 1.5.

La taille d’un enfant est multipliée par celle de son parent : un enfant dont le localScale vaut (1, 1, 1), placé sous un parent redimensionné par 2, est affiché deux fois plus grand. transform.lossyScale indique cette taille finale dans le monde et est en lecture seule ; c’est localScale que tu définis.

challenge icon

Défi

Moyen

Le glaçon fond. Dès le début du jeu, il rétrécit sur chaque axe de melt (0.2) par seconde, de sa taille de 1 jusqu’à 0.4, puis conserve cette taille.

En rétrécissant autour de son centre, il flotterait. Garde donc sa base au sol (à y = 0) pendant tout ce temps. Ses x et z ne changent pas.

Appuie sur Play pour le regarder fondre, puis sur Check.

Essayez vous-même

using UnityEngine;

public class Melt : MonoBehaviour
{
    public float melt = 0.2f;

    void Update()
    {
        // Rétrécir de melt par seconde, jusqu'à 0.4, en gardant la base au sol
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les bases du scripting dans Unity