Menu
CoddyTech

Масштаб

Часть раздела Основы скриптинга в 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.

challenge icon

Задание

Средне

Кубик льда тает. С начала игры он каждую секунду уменьшается по каждой оси на 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, оставляя нижнюю часть на земле
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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