Menu
CoddyTech

Rodzice i dzieci

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

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 podąży za nim — bez kodu w obiektach potomnych.

Unity zapisuje położenie dziecka względem rodzica. transform.localPosition to to przesunięcie, mierzone 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 znajduje się koń:

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

Gdy koń znajduje się w punkcie (4, 0.5, 2), 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. Przesunięcie jest mierzone wzdłuż własnych osi rodzica, więc gdy rodzic się obraca lub jest skalowany, przesunięcie również się obraca i skaluje. W przypadku obiektu bez rodzica localPosition i position są takie same.

challenge icon

Wyzwanie

Średni

Flaga jest obiektem podrzędnym Statku, a statek nie znajduje się w środku świata. Wartość Start() flagi oznacza ustawienie jej u stóp masztu, 0.6 w prawo i 1 w górę względem statku, ale te liczby są przypisywane do position, więc flaga trafia z dala od statku.

  • Popraw Start(), aby flaga zaczynała u stóp masztu.
  • Gdy strzałka w górę jest wciśnięta, wciągaj flagę na maszt: wspina się z prędkością climb jednostek na sekundę, aż jej wysokość względem statku osiągnie 4, czyli szczyt masztu, i zatrzymuje się tam.

Naciśnij Play, przytrzymaj strzałkę w górę, a następnie Check.

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 przytrzymana, wspinaj się, aż wysokość względem Ship wyniesie 4
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy skryptów w Unity