Menu
CoddyTech

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.

challenge icon

Défi

Moyen

Le 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 climb unité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
    }
}
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