Масштаб
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 25 из 67.
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.
Задание
СреднеКубик льда тает. С начала игры он каждую секунду уменьшается по каждой оси на melt (0.2): от размера 1 до 0.4, а затем остаётся такого размера.
Если уменьшать его относительно центра, он будет парить, поэтому всё время держи его нижнюю грань на земле (при y = 0). Его x и z не меняются.
Нажми Play, чтобы посмотреть, как он тает, затем нажми Check.
Попробуйте сами
using UnityEngine;
public class Melt : MonoBehaviour
{
public float melt = 0.2f;
void Update()
{
// Уменьшай размер на melt в секунду до 0.4, оставляя нижнюю часть на земле
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света