TIL

1/15일자 TIL

오딘.L.스트레인지 2026. 1. 15. 20:29

오늘도 코드카타 제출과 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 (액터)**는 언리얼 엔진에서 게임 세계(월드)에 존재하는 모든 오브젝트를 의미합니다. 건물, 캐릭터, 아이템 등 눈에 보이는 모든 것들이 액터로 표현됩니다.
  • 액터에는 세 가지 중요한 속성이 있습니다.
    1. 위치(Location)
    2. 회전(Rotation)
    3. 크기(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