Menu
CoddyTech

Padres e hijos

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 31 de 85.

En la Jerarquía, un objeto que se arrastra sobre otro se convierte en su hijo y aparece con sangría bajo su padre. Un hijo se mueve, gira y cambia de escala junto con su padre: mueve al padre y todos los hijos lo acompañan, sin necesidad de código en ellos.

Unity almacena la posición de un hijo con respecto a su padre. transform.localPosition es ese desplazamiento, medido desde el padre; transform.position es la posición en el mundo. Este jinete es hijo de un caballo, y su script lo coloca 1 unidad por encima del centro del caballo y media unidad hacia atrás, dondequiera que esté el caballo:

void Start()
{
    transform.localPosition = new Vector3(0, 1, -0.5f);
}

Con el caballo en (4, 0.5, 2), la position del jinete indica (4, 1.5, 1.5), mientras que su localPosition sigue siendo (0, 1, -0.5). Cuando el caballo sigue avanzando, position cambia y localPosition no. El desplazamiento se mide a lo largo de los ejes propios del padre, así que cuando el padre gira o cambia de escala, el desplazamiento gira y cambia de escala con él. Para un objeto sin padre, localPosition y position son iguales.

challenge icon

Desafío

Intermedio

Coloca la bandera al pie del mástil, medida desde el barco.

  1. En Start(), las coordenadas (0.6, 1, 0) se miden desde el barco, el objeto padre de la bandera.
  2. En esa línea, cambia transform.position por transform.localPosition.

Pulsa «Jugar»: la bandera queda al pie del mástil, en el barco. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

public class Hoist : MonoBehaviour
{
    public float climb = 1f;

    void Start()
    {
        // La base del mástil: 0.6 a la derecha y 1 hacia arriba, medidos desde Ship
        transform.position = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // Mientras se mantenga pulsada la flecha hacia arriba, asciende hasta que la altura respecto a Ship sea 4
    }
}

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity