Vector3.~
Vector3.Lerp()를 사용하며 이런 식으로 Vector3 (혹은 Vector2)와 함께 사용할 수 있는 함수가 더 있을 것 같아 찾아보았다. 사실 Vector3가 너무 기본적인 자료형이기 때문에 연산에 필요한 다양한 함수를 함께 사용할 수 있지만 기본적인 것들을 정리해보면 좋을 것 같았다!
역할 사용 기능 벡터 생성 new Vector3(x, y, z) 위치, 방향 등을 설정해 새로운 벡터 생성 방향 유지 .normalized 방향 유지, 벡터 유닛화(길이 1) 거리 측정 Vector3.Distance(a, b) 두 점 사이의 거리 구함 보간 이동 Vector3.Lerp(a, b, t) a → b 사이를 부드럽게 이동 길이 계산 .magnitude 벡터의 길이(거리) 회전 계산 Vector3.Angle(a, b) 두 벡터 사이 각도 구함 스케일 곱하기 Vector3.Scale(a, b) 각 축별로 곱함(x축 끼리, y축 끼리)
.normalized
Vector3와 함께 사용되는 함수들을 공부하며 가장 이해가 안 갔던 것,, 대체 왜?? 라는 생각에 한 번 더 정리해봤다.
.normalized는 방향은 유지한 채 길이(거리)를 1로 맞춰 길이가 1이 되는 벡터(Unit Vetor)를 만들어주는 기능이다.
이렇게 x축으로 3, y축으로 4인 벡터가 있을 때 normalized를 하면 벡터의 길이가 1이 될 수 있도록 값을 자동으로 조정해준다. 유니티에서 x, y축으로 이동하는 것보다 대각선으로의 이동이 속도가 더 빠르다고 한다. 이 속도를 맞춰주기 위해 길이를 1로 고정시켜 방향만 바꿔주기 위해 사용해준다.Vector2 original = new Vector2(3, 4); Vector2 unit = original.normalized; // 결과: (0.6, 0.8)
피타고라스의 정리를 원리로 사용해 √(x² + y² + z²) == 1 이 될 수 있도록 수치를 조정해주는 것이다!!
Color.Lerp(a, b, t)
Vector.Lerp를 먼저 공부했기에 수학적으로만 적용되는 거라고 생각했는데 색상에도 적용이 되는 것을 보고 신기했다.,!
ㅋㅋ 당연히 부드럽게 이어주는 기능이니까 적용이 가능한 게 맞는데 수학 응용문제 못 푸는 사람 다운 생각을 해부렸다.
Color applyColor = Color.Lerp(prevColor, nextColor, (stackCount % 11) / 10f);
prevColor: 현재 블록의 색 (분홍)
nextColor: 다음에 적용할 랜덤 색 (초록)
이렇게 만약 분홍색에서 초록색으로 넘어간다고 하면 (stackCount % 11) / 10f를 통해 0~1까지 천천히 증가하며 색이 점점 nextColor에 가까워지도록 하는 것이다.
Color GetRandomColor() { float r = Random.Range(100f, 250f) / 255f; float g = Random.Range(100f, 250f) / 255f; float b = Random.Range(100f, 250f) / 255f; return new Color(r, g, b); }
그리고 또 하나 꿀팁!
RGB 값의 영역을 100~250으로 한 후 255로 나눠주니 상대적으로 밝고 부드러운 파스텔 톤만 나오도록 할 수 있었다!!
255로 나눠주는 이유는 Unity의 색 처리 기준을 따라 0~1 사이의 값으로 출력해주기 위해서다.
파스텔톤의 여리한 색만 출력해야 할 때 유용하게 쓸 수 있을 것 같다.
'게임 기획 > 내일배움캠프(개발)' 카테고리의 다른 글
[TIL] Unity 입문 Team Project 2 (0) | 2025.05.12 |
---|---|
[TIL] Unity 입문 Team Project 1 (1) | 2025.05.08 |
[TIL] Unity 입문 1 (2) | 2025.04.29 |
[TIL] Text RPG (Team Project) 4 (1) | 2025.04.25 |
[TIL] C# 개념정리 (2) | 2025.04.23 |