오늘도 코드카타 제출과 1-6강+1-7강 복습 및 과제 진행을 하였다.
서울에서 김서방 찾기
for 반복문과 size를 이용하여 김서방을 찾았다.
#include <string>
#include <vector>
using namespace std;
string solution(vector<string> seoul)
{
int x = -1;
for (int i = 0; i < seoul.size(); i++)
{
if (seoul[i] == "Kim")
{
x = i;
break;
}
}
string answer = "김서방은 " + to_string(x) + "에 있다";
return answer;
}
나누어 떨어지는 숫자 배열
for반복문을 돌린 후 push.back으로 answer에 i를 밀어넣어줬다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr, int divisor) {
vector<int> answer;
for (int i = 0; i < arr.size(); i++) {
if (arr[i] % divisor == 0) {
answer.push_back(arr[i]);
}
}
if (answer.size() == 0) {
answer.push_back(-1);
return answer;
}
sort(answer.begin(), answer.end());
return answer;
}
1-6~1-7강 핵심 내용
더보기
Actor와 Transform
- **Actor (액터)**는 언리얼 엔진에서 게임 세계(월드)에 존재하는 모든 오브젝트를 의미합니다. 건물, 캐릭터, 아이템 등 눈에 보이는 모든 것들이 액터로 표현됩니다.
- 액터에는 세 가지 중요한 속성이 있습니다.
- 위치(Location)
- 회전(Rotation)
- 크기(Scale)
- 이 세 가지 속성을 Transform이라고 부르며, 뷰포트 상에서 보통 x축 (빨간색), y축 (초록색), z축 (파란색)으로 표시됩니다.
- 위치 (Location)
- 액터가 월드에서 어느 지점에 있는지를 나타냅니다.
- 예) FVector(100.0f, 200.0f, 300.0f)라면 월드의 x축으로 100, y축으로 200, z축으로 300만큼 떨어진 위치를 의미합니다.
- 회전 (Rotation)
- 액터가 어느 방향을 바라보는지, 어떤 각도로 기울어져 있는지를 나타냅니다.
- 언리얼 C++에서는 주로 FRotator(Pitch, Yaw, Roll) 형태로 표현합니다.
- Roll: 좌우로 기울어지는 회전 (x축을 축으로 하는 회전)
- Pitch: 앞뒤 방향의 기울어짐 (y축을 축으로 하는 회전)
- Yaw: 좌우 방향 회전 (z축을 축으로 하는 회전)
- 스케일 (Scale)
- 액터의 크기 비율입니다. FVector(X, Y, Z) 형태로 표현되며, 예) FVector(2.0f, 2.0f, 2.0f)는 기본 크기의 2배를 의미합니다.
FTransform 자료형
- 언리얼 엔진에는 위치, 회전, 스케일을 하나로 묶어 효율적으로 관리하기 위한 구조체인 FTransform이 있습니다.
- FTransform은 내부적으로 다음 세 요소를 보관합니다.
- Translation: 위치를 표현하는 FVector
- Rotation: 회전을 표현하는 FRotator
- Scale3D: 스케일을 표현하는 FVector
- FTransform을 활용하면 위치·회전·스케일을 한 번에 다룰 수 있어, Transform 관련 연산을 보다 편리하게 처리할 수 있습니다.
좌표계의 개념
- 월드 좌표계 (World Space)
- 게임 전체 세계를 기준으로 한 절대적인 좌표계입니다.
- SetActorLocation(), GetActorLocation()처럼 액터 자체를 이동·회전·스케일할 때 대부분 월드 좌표계를 기준으로 합니다.
- 로컬 좌표계 (Local Space)
- 액터 자신이나 부모 액터 (또는 부모 컴포넌트)의 Transform을 기준으로 한 상대적인 좌표계입니다.
- 계층 구조 (부모-자식 관계)가 있는 경우, 자식은 부모의 Transform에 종속되어 움직입니다.
부모-자식 컴포넌트 관계
- 액터에는 여러 컴포넌트가 붙을 수 있으며, 최상위에 있는 **루트 컴포넌트 (Root Component)**를 기준으로 다른 컴포넌트들이 Attach (부착) 관계를 맺을 수 있습니다.
- 부모 액터 (또는 부모 컴포넌트)가 이동·회전·스케일되면 자식들은 상대 좌표값에 따라 함께 이동합니다.
- 부모-자식 관계가 맺어져 있다면,
- GetRelativeTransform(): 부모 기준의 상대 위치·회전·스케일을 가져옴
- SetRelativeLocation(), SetRelativeRotation(): 부모 기준으로 자식의 위치·회전을 조정
- 이처럼 로컬 좌표계를 적절히 활용하면, 여러 컴포넌트를 한꺼번에 움직이거나, 특정 컴포넌트만 부모 기준으로 움직이게 만들 수 있습니다.
리플렉션 (Reflection)이란?
- 언리얼 엔진의 리플렉션 시스템은 C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장하고, 이를 에디터나 블루프린트에서 활용할 수 있게 만들어주는 기술입니다.
- C++ 클래스에 있는 여러 멤버(변수, 함수 등)를 **“Reflectoin (반사)”**해, 에디터와 블루프린트에서 직접 설정, 호출이 가능하도록 합니다.
- 이 덕분에 프로그래머가 만든 C++ 로직의 뼈대를 디자이너나 다른 팀원들이 에디터에서 직관적으로 조정할 수 있습니다.
- 매개변수를 코드에서만 변경하는 것이 아니라, 에디터에서 바로 조정 (슬라이더나 숫자 입력)하여 반복 테스트를 빠르게 진행할 수 있습니다.
- 리플렉션 시스템을 제대로 이해하고 활용하면, 큰 프로젝트에서도 개발 효율과 협업 효과를 극대화할 수 있습니다.
'TIL' 카테고리의 다른 글
| 1/19일자 TIL (0) | 2026.01.19 |
|---|---|
| 1/16일자 TIL (0) | 2026.01.16 |
| 1/14일자 TIL (0) | 2026.01.14 |
| 1/13일자 TIL (0) | 2026.01.13 |
| 1/12일자 TIL (0) | 2026.01.12 |