Menu
CoddyTech

스케일

Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 33번째.

transform.localScale은 객체의 각 축을 따라 크기를 곱합니다. 기본 큐브는 모든 변의 길이가 1단위이므로, localScale이 (4, 1, 0.5)인 큐브는 너비가 4단위, 높이가 1단위, 깊이가 0.5단위입니다. 모든 축에서 같은 크기로 키우려면 (1, 1, 1)인 Vector3.one에 곱하면 됩니다. 이 비눗방울은 초당 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입니다.

자식 객체의 크기는 부모 객체의 크기와 곱해집니다. 스케일이 2인 부모 아래에서 localScale이 (1, 1, 1)인 자식은 두 배 크게 그려집니다. transform.lossyScale은 월드 공간에서 최종 크기를 읽으며 읽기 전용입니다. 직접 설정하는 값은 localScale입니다.

challenge icon

챌린지

중급

얼음 큐브를 0.4까지 녹이면서 바닥에 닿은 상태로 유지하세요.

  1. float size = 1f; 필드를 추가하세요. Update()에서 size = Mathf.Max(size - melt * Time.deltaTime, 0.4f);를 설정하세요.
  2. transform.localScale = Vector3.one * size;를 설정하세요.
  3. 아래쪽이 y = 0에 있도록 하세요. x와 z는 유지하면서 위치의 y를 size / 2로 설정하세요.

‘플레이’를 누르세요. 큐브가 작아지면서 바닥에 계속 닿아 있습니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class Melt : MonoBehaviour
{
    public float melt = 0.2f;

    void Update()
    {
        // 바닥면이 땅에 닿은 상태를 유지하면서 초당 melt만큼 줄여 0.4까지 축소
    }
}

Unity 스크립팅 기초의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드