Масштаб
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 33 из 85.
transform.localScale умножает размер объекта вдоль каждой из его осей. Размер стандартного куба составляет 1 единицу по каждой стороне, поэтому куб с localScale (4, 1, 0.5) имеет ширину 4 единицы, высоту 1 единицу и глубину в половину единицы. Для равномерного масштабирования умножь на Vector3.one, то есть на (1, 1, 1). Этот мыльный пузырь увеличивается на 0.3 единицы в секунду, пока не достигнет 3 единиц в ширину:
public float size = 1f;
void Update()
{
size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
transform.localScale = Vector3.one * size;
}Mathf.Min(a, b) возвращает меньшее из двух чисел, поэтому size увеличивается, пока не достигнет 3, а затем остаётся равным 3.
Масштабирование выполняется относительно точки опоры объекта, которая у встроенных фигур Unity находится в центре. Центр куба размером 1 единица, стоящего на земле, находится на y = 0.5. Увеличь его высоту до 3 единиц — и он будет простираться на 1.5 вверх и на 1.5 вниз от центра, поэтому его половина уйдёт под землю. Чтобы куб стоял на земле, его центр должен находиться на половине его высоты: y = 1.5.
Размер дочернего объекта умножается на размер родительского: дочерний объект с localScale (1, 1, 1), находящийся внутри родительского объекта, масштабированного в 2 раза, будет отображаться вдвое больше. transform.lossyScale считывает итоговый размер в мировом пространстве; это свойство доступно только для чтения. Задавать нужно localScale.
Задание
СреднеРастопи кубик льда до размера 0.4, оставив его на земле.
- Добавь поле
float size = 1f;. ВUpdate()установиsize = Mathf.Max(size - melt * Time.deltaTime, 0.4f);. - Установи
transform.localScale = Vector3.one * size;. - Оставь нижнюю часть куба на уровне y = 0: установи для y позиции значение
size / 2, сохранив x и z.
Нажми «Играть»: куб уменьшится и останется на земле. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class Melt : MonoBehaviour
{
public float melt = 0.2f;
void Update()
{
// Уменьшать размер на melt в секунду до 0.4, сохраняя нижнюю часть на земле
}
}
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity