É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.
Défi
MoyenLe 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
}
}
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
1Votre premier script
Bonjour, UnityPlacez le cubeBouger à chaque imageTourner chaque secondeDirigez avec les touchesRécapitulatif : conduisez le cube4Vecteurs
Addition de vecteursDirectionsEspaces local et mondeVitesse diagonaleDistance entre les objetsVector3 est une structRécapitulatif : pilote de drone7Projet : Attrape l’étoile
L’attrapeurUne étoile qui tombe2L’inspecteur
Champs de l’inspecteurSerializeFieldNombres flottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur5Transformations et hiérarchie
Parents et enfantsÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : Lune en orbite8Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que FindLe null de UnityRécapitulatif : la pièce la plus proche11Projet : Esquivez les blocs
Le coureurBlocs qui tombent6GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur