Menu
CoddyTech

Rodzice i dzieci

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 31 z 85.

W Hierarchy obiekt przeciągnięty na inny staje się jego dzieckiem i jest wyświetlany z wcięciem pod swoim rodzicem. Dziecko porusza się, obraca i skaluje razem z rodzicem: przesuń rodzica, a każde dziecko pójdzie za nim — bez żadnego kodu przypisanego do dzieci.

Unity zapisuje położenie dziecka względem jego rodzica. transform.localPosition to ten offset, mierzony od rodzica; transform.position to położenie w świecie. Ten Jeździec jest dzieckiem Konia, a jego skrypt umieszcza go 1 jednostkę nad środkiem konia i pół jednostki z tyłu, niezależnie od tego, gdzie stoi koń:

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

Gdy koń znajduje się w punkcie (4, 0.5, 2), wartość position jeźdźca wynosi (4, 1.5, 1.5), a jego localPosition pozostaje równe (0, 1, -0.5). Gdy koń idzie dalej, position się zmienia, a localPosition nie. Offset jest mierzony wzdłuż własnych osi rodzica, więc gdy rodzic się obraca lub skaluje, offset również się obraca i skaluje. Dla obiektu bez rodzica localPosition i position są takie same.

challenge icon

Wyzwanie

Średni

Umieść flagę u podnóża masztu, mierząc położenie względem statku.

  1. W Start() liczby (0.6, 1, 0) są mierzone względem Ship, obiektu nadrzędnego flagi.
  2. W tym wierszu zmień transform.position na transform.localPosition.

Naciśnij „Graj”: flaga znajduje się u podnóża masztu, na statku. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

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

    void Start()
    {
        // Podstawa masztu: 0.6 w prawo i 1 w górę względem Ship
        transform.position = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // Gdy strzałka w górę jest wciśnięta, wspinaj się, aż wysokość względem Ship wyniesie 4
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity