Родители и дети
Часть раздела Основы скриптинга в 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 совпадают.
Задание
СреднеРасположи флаг у основания мачты, отсчитывая положение относительно корабля.
- В
Start()числа (0.6, 1, 0) отсчитываются относительно объекта Ship — родительского объекта флага. - В этой строке замени
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
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель света3Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт6Трансформации и иерархия
Родители и детиПоднять флагМасштабСмотреть на объектыДвигаться к точкеПовторение: Луна на орбитеПотренируйтесь самостоятельно: Песочница Unity