Parents et enfants
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 24 sur 67.
Dans la Hierarchy, un objet glissé sur un autre devient son enfant et apparaît en retrait sous son parent. Un enfant se déplace, tourne et change d’échelle avec son parent : déplacez le parent et tous ses enfants le suivent, sans aucun code sur les enfants.
Unity stocke la position d’un enfant par rapport à son parent. transform.localPosition correspond à ce décalage, mesuré depuis le parent ; transform.position correspond à la position dans le monde. Ce Cavalier est un enfant d’un Cheval, et son script le place à 1 unité au-dessus du centre du cheval et à une demi-unité en arrière, où que se trouve le cheval :
void Start()
{
transform.localPosition = new Vector3(0, 1, -0.5f);
}Avec le cheval en (4, 0.5, 2), la position du cavalier indique (4, 1.5, 1.5), tandis que sa localPosition reste (0, 1, -0.5). Lorsque le cheval avance, la position change, mais pas la localPosition. Le décalage est mesuré le long des axes propres au parent ; lorsque le parent tourne ou change d’échelle, le décalage tourne et change d’échelle avec lui. Pour un objet sans parent, localPosition et position sont identiques.
Défi
MoyenLe drapeau est un enfant du navire, et le navire n’est pas au centre du monde. La méthode Start() du drapeau consiste à le placer au pied du mât, à 0.6 vers la droite et à 1 vers le haut par rapport au navire, mais elle écrit ces nombres dans position, donc le drapeau atterrit loin du navire.
- Corrige
Start()pour que le drapeau démarre au pied du mât. - Tant que la flèche vers le haut est maintenue, hisse le drapeau : il monte à une vitesse de
climbunités par seconde jusqu’à ce que sa hauteur par rapport au navire atteigne 4, le haut du mât, puis il s’arrête là.
Appuie sur Play, maintiens la flèche vers le haut, puis clique sur Check.
Essayez vous-même
using UnityEngine;
public class Hoist : MonoBehaviour
{
public float climb = 1f;
void Start()
{
// Le pied du mât : 0.6 vers la droite et 1 vers le haut par rapport au Ship
transform.position = new Vector3(0.6f, 1, 0);
}
void Update()
{
// Tant que la flèche vers le haut est maintenue enfoncée, grimper jusqu’à atteindre une hauteur de 4 par rapport au Ship
}
}
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