크기 조절
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 25번째.
transform.localScale은 오브젝트의 각 축을 따라 크기를 배율로 조정합니다. 기본 큐브는 모든 면의 길이가 1단위이므로, localScale이 (4, 1, 0.5)인 큐브는 너비가 4단위, 높이가 1단위, 깊이가 0.5단위입니다. 모든 축의 크기를 동일하게 하려면 (1, 1, 1)인 Vector3.one을 곱합니다. 이 비눗방울은 가로 길이가 3단위가 될 때까지 초당 0.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단위 뻗으므로, 큐브의 절반이 지면에 파묻힙니다. 지면 위에 세우려면 중심의 높이가 높이의 절반이어야 합니다. 즉, y = 1.5입니다.
자식의 크기에는 부모의 크기 배율이 곱해집니다. localScale이 (1, 1, 1)인 자식은 크기를 2배로 조정한 부모 아래에 있으면 두 배 크게 그려집니다. transform.lossyScale은 월드에서 최종 크기를 읽으며 읽기 전용입니다. 설정하는 값은 localScale입니다.
챌린지
중급얼음 조각이 녹고 있습니다. 게임이 시작되면 크기가 1에서 0.4가 될 때까지 매초 모든 축에서 melt(0.2)만큼 줄어들고, 그 크기로 유지됩니다.
중심을 기준으로 줄어들면 공중에 떠 있게 되므로, 내내 바닥(y = 0)에 밑면이 닿아 있도록 하세요. x와 z는 변하지 않습니다.
Play를 눌러 녹는 모습을 확인한 다음 Check를 누르세요.
직접 해보기
using UnityEngine;
public class Melt : MonoBehaviour
{
public float melt = 0.2f;
void Update()
{
// 바닥면이 땅에 닿은 상태를 유지하면서 초당 melt만큼 줄여 0.4까지 축소
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.