Menu
CoddyTech

Pais e Filhos

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 24 de 67.

Na Hierarchy, um objeto arrastado para outro se torna seu filho e aparece recuado abaixo de seu pai. Um filho se move, gira e muda de escala junto com seu pai: mova o pai e todos os filhos vêm junto, sem nenhum código nos filhos.

O Unity armazena a posição de um filho em relação ao pai. transform.localPosition é esse deslocamento, medido a partir do pai; transform.position é a posição no mundo. Este Rider é filho de um Horse, e seu script o posiciona 1 unidade acima do centro do cavalo e meia unidade para trás, onde quer que o cavalo esteja:

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

Com o cavalo em (4, 0.5, 2), a position do cavaleiro é (4, 1.5, 1.5), enquanto sua localPosition permanece (0, 1, -0.5). Quando o cavalo segue andando, a position muda e a localPosition não. O deslocamento é medido ao longo dos próprios eixos do pai, então, quando o pai gira ou tem a escala alterada, o deslocamento gira e muda de escala junto com ele. Para um objeto sem pai, localPosition e position são iguais.

challenge icon

Desafio

Médio

A Bandeira é filha do Navio, e o navio não está no centro do mundo. O Start() da bandeira deveria colocá-la no pé do mastro, 0.6 à direita e 1 acima, medidos a partir do navio, mas grava esses números em position, então a bandeira acaba longe do navio.

  • Corrija Start() para que a bandeira comece no pé do mastro.
  • Enquanto a seta para cima estiver pressionada, ice a bandeira: ela sobe a climb unidades por segundo até que sua altura medida a partir do navio seja 4, o topo do mastro, e pare ali.

Pressione Play, segure a seta para cima e então Check.

Experimente você mesmo

using UnityEngine;

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

    void Start()
    {
        // A base do mastro: 0.6 à direita e 1 para cima, medidos a partir do Ship
        transform.position = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // Enquanto a seta para cima estiver pressionada, suba até que a altura em relação ao Ship seja 4
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Noções básicas de scripting no Unity