Menu
CoddyTech

Đối tượng cha và con

Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 31 trên 85.

Trong Hierarchy, khi bạn kéo một đối tượng lên một đối tượng khác, nó trở thành đối tượng con và hiển thị thụt vào bên dưới đối tượng cha. Đối tượng con di chuyển, xoay và thay đổi tỷ lệ cùng với đối tượng cha: di chuyển đối tượng cha thì mọi đối tượng con đều di chuyển theo, không cần viết code cho các đối tượng con.

Unity lưu vị trí của đối tượng con tương đối với đối tượng cha. transform.localPosition là độ lệch đó, được đo từ đối tượng cha; transform.position là vị trí trong thế giới. Rider là đối tượng con của Horse, và script của nó đặt Rider ở vị trí cao hơn tâm của Horse 1 đơn vị và lùi về sau nửa đơn vị, bất kể Horse đứng ở đâu:

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

Khi Horse ở vị trí (4, 0.5, 2), position của Rider có giá trị (4, 1.5, 1.5), còn localPosition vẫn là (0, 1, -0.5). Khi Horse tiếp tục di chuyển, position thay đổi còn localPosition thì không. Độ lệch được đo theo các trục riêng của đối tượng cha, vì vậy khi đối tượng cha xoay hoặc thay đổi tỷ lệ, độ lệch cũng xoay và thay đổi tỷ lệ theo. Với đối tượng không có đối tượng cha, localPosition và position giống nhau.

challenge icon

Thử thách

Trung bình

Đặt lá cờ ở chân cột buồm, tính từ con tàu.

  1. Trong Start(), các số (0.6, 1, 0) được tính từ Ship, đối tượng cha của lá cờ.
  2. Trên dòng đó, đổi transform.position thành transform.localPosition.

Nhấn Chơi: lá cờ nằm ở chân cột buồm trên tàu. Sau đó nhấn Kiểm tra.

Tự làm thử

using UnityEngine;

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

    void Start()
    {
        // Chân cột buồm: cách Ship 0.6 về bên phải và 1 lên trên
        transform.position = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // Trong khi giữ phím mũi tên lên, leo cho đến khi độ cao so với Ship là 4
    }
}

Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity

Tự luyện tập: Playground Unity