Menu
CoddyTech

Родители и дети

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 31 из 85.

В Иерархии объект, перетащенный на другой объект, становится его дочерним объектом и отображается со смещением под своим родительским объектом. Дочерний объект перемещается, поворачивается и масштабируется вместе с родительским: переместите родительский объект, и все дочерние переместятся вместе с ним — для этого дочерним объектам не нужен код.

Unity хранит положение дочернего объекта относительно родительского. transform.localPosition — это смещение относительно родительского объекта; transform.position — положение в мире. Этот Всадник — дочерний объект Лошади, и его скрипт размещает его на 1 единицу выше центра лошади и на половину единицы позади неё, где бы ни находилась лошадь:

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

Когда лошадь находится в точке (4, 0.5, 2), свойство position всадника имеет значение (4, 1.5, 1.5), а его localPosition остаётся равным (0, 1, -0.5). Когда лошадь продолжает идти, position меняется, а localPosition — нет. Смещение измеряется вдоль собственных осей родительского объекта, поэтому при повороте или масштабировании родительского объекта смещение также поворачивается и масштабируется. У объекта без родительского объекта localPosition и position совпадают.

challenge icon

Задание

Средне

Расположи флаг у основания мачты, отсчитывая положение относительно корабля.

  1. В Start() числа (0.6, 1, 0) отсчитываются относительно объекта Ship — родительского объекта флага.
  2. В этой строке замени transform.position на transform.localPosition.

Нажми «Играть»: флаг окажется у основания мачты на корабле. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

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

    void Start()
    {
        // Основание мачты: 0.6 вправо и 1 вверх относительно Ship
        transform.position = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // Пока удерживается стрелка вверх, подниматься, пока высота относительно Ship не достигнет 4
    }
}

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity